Игра Project Revival
|
|
Wiz2VIP | Дата: Четверг, 19 Февраля 2009, 01:37 | Сообщение # 1 |
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
| Помогайте кто могет!!! Добавлено (19 Февраль 2009, 01:37) --------------------------------------------- Вообщем после 2х часов раздумия смог написать скриптец который создает область для выделения, генератор клеток выдрал из хэлпа Теперь появился вопрос. Допустим у меня будт создаваться Здания,Юниты,итд переменные я к ним присвою Как можно узнать все переменные которые создавались вовремя процесса и сохранить Допустим я купил много юнитов unit1 ... unit??? Каким образом узнать скоко у меня юнитов всего атоесть число последнего И второй вопрос как найти все переменные(созданные во время запущенного процесса) и сохранить их в файл
|
|
| |
Wiz2VIP | Дата: Четверг, 19 Февраля 2009, 01:52 | Сообщение # 2 |
Новый участник
Группа: Пользователи
Сообщений: 16
Репутация: 0
Награды: 0
Статус: Offline
| Вот кусок скрипта создающий область для выделения(Обьекты еще не выделяются) Варианты оптимизации приветствуются
|
|
| |
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
| Вот... Правда сырой до ужоса))
|
|
| |
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 ??? ато без соперников и игра неинтересна
|
|
| |
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) Подпись отключена за неуплату Прикольно!
|
|
| |