Форум
Написать нам
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: as-master  
Игра Project Revival
Wiz2VIPДата: Четверг, 19 Февраля 2009, 01:37 | Сообщение # 1
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Помогайте кто могет!!!

Добавлено (19 Февраль 2009, 01:37)
---------------------------------------------
Вообщем после 2х часов раздумия смог написать скриптец который создает область для выделения, генератор клеток выдрал из хэлпа happy
Теперь появился вопрос.
Допустим у меня будт создаваться Здания,Юниты,итд переменные я к ним присвою
Как можно узнать все переменные которые создавались вовремя процесса и сохранить
Допустим я купил много юнитов unit1 ... unit???
Каким образом узнать скоко у меня юнитов всего атоесть число последнего
И второй вопрос как найти все переменные(созданные во время запущенного процесса) и сохранить их в файл

 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 01:52 | Сообщение # 2
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Вот кусок скрипта создающий область для выделения(Обьекты еще не выделяются)
Варианты оптимизации приветствуются
Прикрепления: 9834046.jpg (225.7 Kb)
 
DEMBELДата: Четверг, 19 Февраля 2009, 02:03 | Сообщение # 3
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Wiz2VIP)
Допустим я купил много юнитов unit1 ... unit???

Попробуй использовать массивы переменных unit$[x], где х - порядковый номер в массиве 1,2,3... При присвоении переменной увеличивай порядковый номер x=x+1, потом вернешь итоговое значение х и все. Это и будет количеством переменных в массиве.
При использовании массивов также возможно сохранить все переменные из массива в файл в одном цикле:
For i=1 to x
file$='c:\save.txt'
Ret=StrToFile(file$,unit$[i],1,1)
Next i

Хотя возможно я не понял до конца что тебе надо, и это тебе не подойдет. В след. раз выкладывай хоть какой нибудь демо проект.

---------------------------------------------
Нафиг картинки, пример проекта давай. Надо же проверить.
---------------------------------------------
ты че, SimCity хочешь написать?




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62


Сообщение отредактировал DEMBEL - Четверг, 19 Февраля 2009, 02:04
 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 02:19 | Сообщение # 4
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Вот...
Правда сырой до ужоса))
Прикрепления: Rev.mbd (9.7 Kb)
 
DEMBELДата: Четверг, 19 Февраля 2009, 02:35 | Сообщение # 5
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
кнопка Сгенерировать не нажимается, т.к. на кнопки мыши понавешаны скрипты рисования выделения.
И вообще чето странно генерируется у меня - медленнее, медленнее и вконец заступоривается на половине экрана. Ну ладно, и так разберемся... Но сперва пойду посплю, а ты чего среди ночи голову ломаешь?




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 02:37 | Сообщение # 6
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Да... там кнопочку надо на верхний уровень поставить
Эт я на скорую сделал и отправил.
А неспитцо мне иза моей идеи,(бредовой может быть)
 
DEMBELДата: Четверг, 19 Февраля 2009, 03:04 | Сообщение # 7
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
так генерация и тормозит у меня на половине...
я так понял речь идет об обьектах object[i]$, а они картинки, а не переменные, это будет просто массив из имен обьектов. Думаю ты не это хотел сделать. StrToFile можешь убрать. Хотя мож я просто не догоняю что ты хочешь сделать... Ты используешь еще какие нибудь картинки?

Добавлено (19 Февраль 2009, 03:04)
---------------------------------------------
Я так понял, тебе нужно сохранить тип и местоположение сгенерированных обьектов?




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62


Сообщение отредактировал DEMBEL - Четверг, 19 Февраля 2009, 03:02
 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 03:04 | Сообщение # 8
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Да да да, используются хотспоты под именем point а object[i]$ это временная переменная для генерации,
А мне нужно вычеслить скока у меня хотспотов[x] и cохранить это все в файл
А картинки просто присваиваются к хотспотам
Может можно както к хотспотам присвоить свою переменную
 
Alex3AДата: Четверг, 19 Февраля 2009, 03:11 | Сообщение # 9
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (Wiz2VIP)
Каким образом узнать скоко у меня юнитов всего атоесть число последнего

Вообще то странный вопрос, DEMBEL правильно советует, длина массива - количество твоих юнитов
и соответственно номер последнего.
Quote (DEMBEL)
кнопка Сгенерировать не нажимается.....

Тут уж надо позаботится об оптимизации работы скриптов и не забывать рефреш.
Да, ScriptTimer("TimerA=SelectSpace","10"), ты это ну слишком погорячился,
даже в сях и делфях 10 милисекунд проблематичны, забудь, менее чем на 100 не расчитывай.
 
DEMBELДата: Четверг, 19 Февраля 2009, 03:22 | Сообщение # 10
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Мне кажется тут нужно подробнее продумать этот механизм...
Попробуй для теста в цикл вставить счетчик с=с+1 а потом проверить значение переменной с через message и посмотри что там будет. Я изменил разрешение проекта до 320х200, тогда он заработал и насчитал мне 66 хотспотов. Тебе это было надо?

Добавлено (19 Февраль 2009, 03:17)
---------------------------------------------
мож это из-за scripttimer у меня проект глючит?

Добавлено (19 Февраль 2009, 03:22)
---------------------------------------------

Quote (Alex3A)
длина массива - количество твоих юнитов и соответственно номер последнего.

у него там в другом загвоздка, он считает кол-во обьектов, а там в цикле смотри - по горизонтали и вертикали обьекты, переменная i вернет кол-во обьектов только по горизонтали. Если вместо с поставить i то i=11 а c=66




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Alex3AДата: Четверг, 19 Февраля 2009, 03:23 | Сообщение # 11
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
ДА, и хотспот у тебя находится поверх бутона, вот он и не нажимается.
 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 03:23 | Сообщение # 12
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Хорошо поставим вопрос по другом
Допустим
Хотспоты мы уже сгенерировали
Переменная object[i]$ обнулена
Теперь нужно подсчитать скоко хотспотов и под каким он номером а потом сохранить
Я никак немогу догнать как это просчитывается
;
Как правильно написать этот Скрипт

If (HotSpot[i] Существует) then
Сохранить HotSpot[i] итд
else

end

 
DEMBELДата: Четверг, 19 Февраля 2009, 03:27 | Сообщение # 13
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Так ты определись ЧТО именно ты хочешь сохранить? Имя хотспот обьекта? Или что в хотспоте лежит грубо говоря?



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Alex3AДата: Четверг, 19 Февраля 2009, 03:27 | Сообщение # 14
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
И че делает не понятно - рисует какую то зеленую хрень.
Но уже попахивает интелектуальностью, удачи!
 
DEMBELДата: Четверг, 19 Февраля 2009, 03:28 | Сообщение # 15
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
или координаты?

Добавлено (19 Февраль 2009, 03:28)
---------------------------------------------
Зеленая хрень это травка похоже...




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 03:34 | Сообщение # 16
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Вообщем надо шоб сохранялись динамично созданные обекты (Хотспоты и переменные)
А именно
1 Каждое имя хотспота Hotspot[i] (Это самое главное)
2 Кординаты конешна
3 какая картинка привязана к данному хотспоту

Но все это НЕ вовремя генирации а после

А вот эту скрипту обясните поподробнее, как проверить существует ли такойто или нет

If (HotSpot[i] Существует) then
Сохранить HotSpot[i] итд
else

end

 
Alex3AДата: Четверг, 19 Февраля 2009, 03:46 | Сообщение # 17
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (Wiz2VIP)
Хотспоты мы уже сгенерировали
Переменная object[i]$ обнулена

Создал в динамике объекты и обнуляеш масив ссылок на него?
И зачем что то сохранять - только если надо востановить положение игры при следующем запуске.
Все массивы с динамически созданными объектами должны оставаться до окончания игры, полезно так же
иметь переменные для размеров массивов и хранения текущего объекта.
При удалении объекта его надо разрушить (удалить) а так же удалить ссылку на него из массива, и если есть
переменная длины массива уменьшить ее.

Добавлено (19 Февраль 2009, 03:46)
---------------------------------------------
На каждый созданый объект навесить свой скрипт, тогда он сам будет знать свое имя, положение... а так же есть ли он
посредством скрипта конечно.

 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 03:46 | Сообщение # 18
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Quote (Alex3A)
только если надо востановить положение игры при следующем запуске

Именно что и нада восстановить
Ведь это по сути редактор карт должен быть, где нужно сохранятся и загружаться
А еще эта функция пригодится при сохранении игры где должны сохранятся Строения, Плантации деревьев, камней, юниты итд

 
DEMBELДата: Четверг, 19 Февраля 2009, 03:48 | Сообщение # 19
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (DEMBEL)
Ты используешь еще какие нибудь картинки?

какие? Назначь каждой картинке идентификатор, т.е. уникальную переменную, чтоб программа поняла какая картинка где привязана. Там по ходу разберешся как это использовать.
Имя хотспота сохранить - при создании в цикле клади имя обьекта в переменную (массив) и потом сохрани ее, хоть в файл через StrToFile
Подумай лучше над организацией хранения всей этой инфы вначале и как ты ее будешь доставать, тогда тебе сразу будет понятнее что и как делать конкретно.




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 03:49 | Сообщение # 20
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Лана я спть,
Завтра буд более понятные вопросы задавать
 
DEMBELДата: Четверг, 19 Февраля 2009, 03:49 | Сообщение # 21
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
О, вон Alex дельные вещи говорит, слушай



Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Alex3AДата: Четверг, 19 Февраля 2009, 03:50 | Сообщение # 22
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Да, и не спеши ваять все сразу, сначала построй один объект, добейся что бы он у тебя делал все что надо,
а уж затем можеш его размножать, сколько душе угодно,(в разумных пределах).
 
Wiz2VIPДата: Четверг, 19 Февраля 2009, 07:03 | Сообщение # 23
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Вот доделал скрипт который болеменее структурирет сохраненные переменные

Code
** Указываем ширину и высоту окна
pw=PubWidth()
ph=PubHeight()
** Указываем ширину и высоту фрэйма
w=32
h=32
** число фрэймов для текущей ширины окна
n_imgs_w=pw/w
RoundNum1=INT(n_imgs_w)
RoundNum2=n_imgs_w-RoundNum1
If (RoundNum2>=0) Then
n_imgs_w=RoundNum1 + 1
End
** число столбцов
n_imgs_w=n_imgs_w-1
** число фрэмов для текущей высоты окна
n_imgs_h=ph/h
RoundNum1=INT(n_imgs_h)
RoundNum2=n_imgs_h-RoundNum1
If (RoundNum2>=0) Then
n_imgs_h=RoundNum1 + 1
End
** число строк
n_imgs_h=n_imgs_h-1
** Указываем начальные переменные
x=0
y=0
NumPoint=0
** Укажем временные дополнительные переменные
Name$='Name='
Type$='Type='
Building$='Building'
Point$='Point'
Unit$='Unit'
Owner$='Owner='
Player$='Player'
AllowToBuil  d$='AllowToBuild'
AllowToMove$='AllowToMove'
Ai$='Ai'
XO$='X='
YO$='Y='
WO$='Width='
HO$='Height='
IN$='ImageName='
Yes$='1'
No$='0  '
en$=en$ +CHR(13)+CHR(10)
** Прописываем количество фрэймов
TottalPoints=n_imgs_w * n_imgs_h
TottalPoints$='PointsAll=' + CHAR(TottalPoints)
RetVal=StrToFile(FILE1$,TottalPoints$,FALSE,TRUE)
** Создаем цикл
For j=1 To n_imgs_h
For i=1 To n_imgs_w
CreateHotSpot("Point","object[i]$,x,y,w,h")
** новая координата x (для столбца)
x=x+w
** Запустим счетчик
NumPoint=NumPoint+1
** добавим код для активной области
script$='CurObj$=CurrentObject()'+CHR(13)+CHR(10)
script$=script$+'Message("SelectedObject","CurObj$")'+CHR(13)+CHR(10)
SetObject Param("object[i]$","MOUSEUPSCRIPT:1=script$")
imgpath$='<Embedded>\\'
imgfile$='1.jpg'
fullimg$=imgpath$+imgfile$
** загрузка изображения в активную область
ReplaceImage("object[i]$","fullimg$")
** перемещаем объект на задний план
ReorderObject("object[i]$","BACK")
Refresh("")

SaveToFile$=Name$ + Point$ + CHAR(NumPoint) + en$ + Type$ + Building$ + en$ + Owner$ + Player$ + en$ + XO$ + CHAR(x) + en$ + YO$ + CHAR(y) + en$ + WO$ + CHAR(w) + en$ + HO$ + CHAR(h)

RetVal=StrToFile(FILE1$,SaveToFile$,TRUE,TRUE)
Next i
** сброс координаты x (для столбца)
x=0
** новая координата y (для строки)
y=y+h
Next j
 
DEMBELДата: Суббота, 21 Февраля 2009, 04:31 | Сообщение # 24
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Wiz2VIP)
RetVal=StrToFile(FILE1$,SaveToFile$,TRUE,TRUE)

кстати, ни тут, ни в проекте не увидел, где определяется переменная FILE1$ ? В какой же файл ты сохраняешь?
Quote (Wiz2VIP)
А вот эту скрипту обясните поподробнее, как проверить существует ли такойто или нет
If (HotSpot[i] Существует) then
Сохранить HotSpot[i] итд
else
end

If (HotSpot$[i]<>'') then
действия если обьект существует (StrToFile)
else
действия если обьект не существует
end
Строго говоря, мы проверяем не на наличие обьекта, а на наличие переменной с именем обьекта в массиве (когда ты при создании обьекта автоматически присваиваешь его имя переменной, это служит как бы маркером обьекта) Если переменная пустая, то значит обьекта нет. Таким образом, сохраняя имя обьекта в массив при его создании ты получаешь "списки" обьектов, и с ним ты можешь делать все что угодно, сохранять, загружать... можно создавать целые файлы настроек для отдельных обьектов где хранить инфу об их состоянии (типа твоей переменной SaveToFile$, но лучше)... а подставляя потом значения переменных из массива в различные операторы ты можешь выполнять действия над самими обьектами, догоняешь?




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62


Сообщение отредактировал DEMBEL - Суббота, 21 Февраля 2009, 04:41
 
Wiz2VIPДата: Суббота, 21 Февраля 2009, 05:55 | Сообщение # 25
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Quote (DEMBEL)
If (HotSpot$[i]<>'') then

Воооо
Вот за обяснение этой фкнкции большое спасибо!!!
Я ее видел в хелпе но недумал что она в моем случае пойдет.

Quote (DEMBEL)
кстати, ни тут, ни в проекте не увидел, где определяется переменная FILE1$ ? В какой же файл ты сохраняешь?

Вот обновленный проект со всякими скриптиками для тестов...на второй странице генератор вместе с сохранениями

И еще Обьясните мне как правильно склонировать обьект, если можно то маленький пример.

Добавлено (21 Февраль 2009, 05:55)
---------------------------------------------
Ну доработаю конешно шоб все структуры хранились отдельно а при генерции использовались переменные для определения (чего скока куда итд)
Так недалеко и полноценный генератор карт написать)))

А вообще кто што думает, MMB вообще потянет AI ??? ато без соперников и игра неинтересна

Прикрепления: revival.mbd (91.2 Kb)
 
DEMBELДата: Суббота, 21 Февраля 2009, 06:13 | Сообщение # 26
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
Quote (Wiz2VIP)
MMB вообще потянет AI ???

ну смотря какие действия там должен ai делать... Я думаю, что если игра будет "пошаговой" то можно чтонибудь придумать




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
Wiz2VIPДата: Понедельник, 02 Марта 2009, 22:01 | Сообщение # 27
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Так люди, судя по возможнястям MMB оно не потянет реальный AI поэтому перехожу на XNA Game Studio, все кто знает C++ преветствуются...
 
basmeДата: Вторник, 03 Марта 2009, 10:16 | Сообщение # 28
MMB Club
Группа: Проверенные
Сообщений: 358
Репутация: 5
Награды: 2
Статус: Offline
Нет, правда, это смотря какой AI. Вон, на mmbuilder.ru пара проектов "Крестики-нолики", по идее там компьютерный игрок - тоже AI, и в принципе, это пошаговая стратегия, только маленькая.
А вот AI реального времени вряд-ли получится сделать - при хоть сколько-нибудь большом количестве предметов анализа для интеллекта билдер будет нещадно тормозить.
 
toizyДата: Вторник, 03 Марта 2009, 11:52 | Сообщение # 29
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Quote (Wiz2VIP)
, все кто знает C++ преветствуются...

зарплату платишь?


Жизнь оказалась не такой уж и забавной, как поначалу...
 
Wiz2VIPДата: Четверг, 05 Марта 2009, 23:19 | Сообщение # 30
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
Quote (toizy)
зарплату платишь?

Ага, тебя учи, а еще и плати за это да...мы вообщето тут учимся и обьясняем если знаем, а не бюджетные приложения разрабатываем...

А впрочем вот проект, который умеет Генерировать, Сохранять, и Загружать.
Поюзайте и подумайте какойже может получится AI...
Реального времени точно нет, да и пошагово очень долго будет просчитывать
Вот в этом проекте всеголишь 767 переменных просчитывается, а в реальном AI их будет на сотни больше.

Хотя может у кого и получится оптимизмровать!!!
Будет отлично!!!
Проект может быть продолжет жить!!!

Quote (basme)
Подпись отключена за неуплату

Прикольно!
Прикрепления: 5584827.mbd (102.2 Kb)
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: