Результаты поиска
| |
Krosos | Дата: Суббота, 24 Августа 2013, 21:06 | Сообщение # 121 | Тема: Начал учить GML. Покидайте идей |
постоянный участник
Сейчас нет на сайте
| А я начал с самого сложного , и многому от этого научился.
Мой проект
|
|
| |
Krosos | Дата: Пятница, 23 Августа 2013, 16:12 | Сообщение # 122 | Тема: Инициатива |
постоянный участник
Сейчас нет на сайте
| В общем ,я задолбался =( Главный объект должен посчитать всем инициативу(мгновенно) и определить кто будет ходить. По началу все идет хорошо , но иногда настает момент - когда кто-то зацикливает код , потому что не может занести свое число O в очередь. Вот код:
if global.Sunit.O=0 or global.Phase1=1{ //Если Sunit не избран или идет первая фаза while global.Phase3=0{ //Цикл пока не будет фаза 3 with KleymoOfEnemy{ //Для всех врагов with target{ if UnitSpeed>=100{global.Phase3=1}}} //Если готовность юнита равна 100 , то фаза 3 равна 1 with KleymoOfAlied{ //Для союзников with target{ if UnitSpeed>=100{global.Phase3=1}}} //Если готовность юнита равна 100 , то фаза 3 равна 1 if global.Phase3=1 {break} //Если фаза 3 равна 1 , то сломать цикл with KleymoOfEnemy{ //Для врагов with target{ {UnitSpeed+=global.IN[O] scr_effects()}}} //Прибавить к готовности личное число инициативы , и проделать некий скрпит with KleymoOfAlied{ with target{ {UnitSpeed+=global.IN[O] scr_effects()}}}} //Прибавить к готовности личное число инициативы , и проделать некий скрпит
while global.Phase3=1{ //Цикл если фаза 3 равна 1 with KleymoOfEnemy{ //Для врагов with target{ if UnitSpeed>=100{ds_queue_enqueue(global.turn,O)}}} //Если готовность больше 100 , то занести этому объекту свое число в очередь with KleymoOfAlied{ //Для союзников with target{ if UnitSpeed>=100{ds_queue_enqueue(global.turn,O)}}} //Если готовность больше 100 , то занести этому объекту свое число в очередь if !ds_queue_head(global.turn)=0 {global.Phase3=0} //Если на первом месте в очереди не число 0 , то фаза 3 равна 0 }
global.Phase1=0 //Фаза 1 равна нулю
with KleymoOfEnemy{ //Для врагов with target{ if UnitSpeed>=100{if O=ds_queue_head(global.turn){ //Если число юнита совпало с тем , что в списке то этот юнит выбирает ,как дальше будет ходить if object_get_parent(object_index)=AI_Warrior {scr_Phase2E()} if object_get_parent(object_index)=AI_Wizard {scr_Phase2EW()} if object_get_parent(object_index)=AI_Ranger {scr_Phase2ER()} if object_get_parent(object_index)=AI_Flayer {scr_Phase2EF()}} }}} with KleymoOfAlied{ //Для союзников тоже самое with target{ if UnitSpeed>=100{if O=ds_queue_head(global.turn) {scr_Phase2A()}}}} }
Конец хода выглядит примерно так: UnitSpeed-=100 ds_queue_clear(global.turn) global.Sunit=0
А все коды фазы 2(scr_Phase2E, например) начинаются вот так: global.Sunit=id
Мой проект
Сообщение отредактировал Krosos - Пятница, 23 Августа 2013, 18:21 |
|
| |
Krosos | Дата: Пятница, 23 Августа 2013, 15:46 | Сообщение # 123 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Dmi7ry, а нет , я исправил , это мой код тупил... Там была проблема с очередями до этого ,поэтому до этого места код даже не добирался.
Мой проект
|
|
| |
Krosos | Дата: Пятница, 23 Августа 2013, 15:18 | Сообщение # 124 | Тема: Цепная молния |
постоянный участник
Сейчас нет на сайте
| nekroo98, Цитата (nekroo98) Что значит ограничение на поиск цели? Это значит , чтобы он тебе не бил 100 целей а ударил только 5.Цитата (nekroo98) Делать через ближайший обьект - instance_nearest - не прокатывает естественно, потому, что ближайший объект будет тот, в кого полетела 1 молния. Если придумаешь, как обойти это, скажи. Я удаляю все метки под игроками , не удаляя под собой следующим кодом: if collision_rectangle(x-31.99,y-31.99,x+31.99,y+31.99,KleymoOfAlied,0,0) and distance_to_object(global.Sunit)>16 {instance_destroy()}
В твоем случае надо , просто создать метку над ближайшим игроком , и создавать от следующей , и так далее , но тогда не получится ограничить расстояние.В героях , насколько я помню , цепная молния била с не ограниченным расстоянием , всегда до 5 целей.
Мой проект
|
|
| |
Krosos | Дата: Пятница, 23 Августа 2013, 14:42 | Сообщение # 125 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Цитата (Dmi7ry) Цитата (Krosos) if object_get_parent(id)=AI_Warrior {scr_Phase2E() }
в качестве параметра функции должен идти id объекта, а не id экземпляра, поэтому нужно прописывать object_index вместо id:
Спасибо , но я понял в чем дело. Проблема наверное в том , что объект родитель не существует в комнате.
Мой проект
|
|
| |
Krosos | Дата: Пятница, 23 Августа 2013, 01:35 | Сообщение # 126 | Тема: Цепная молния |
постоянный участник
Сейчас нет на сайте
| nekroo98, понятно , тогда все очень просто.Ладно , сейчас сделаю пример ,тогда и себе тоже возьму =P Добавлено (23.08.2013, 01:31) --------------------------------------------- Черт , я переоценил свои силы=( Столкнулся с двумя проблемами: 1. направление спрайтой во время атаки. 2. ограничение на поиск целей Добавлено (23.08.2013, 01:35) --------------------------------------------- Можно было сделать просто цель на ближайший объект - это было бы намного проще и удобнее.
Мой проект
|
|
| |
Krosos | Дата: Четверг, 22 Августа 2013, 23:14 | Сообщение # 127 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Как задать вопрос - какой у тебя родитель? В справке не очень понятно , а у меня кажется не получилось=(
Код with KleymoOfEnemy{ with target{ if UnitSpeed>=100{ if O=ds_queue_dequeue(global.turn){ if object_get_parent(id)=AI_Warrior {scr_Phase2E() } if object_get_parent(id)=AI_Wizard {scr_Phase2EW()} if object_get_parent(id)=AI_Ranger {scr_Phase2ER()} if object_get_parent(id)=AI_Flayer {scr_Phase2EF()} }}}}
Мой проект
|
|
| |
Krosos | Дата: Четверг, 22 Августа 2013, 22:18 | Сообщение # 128 | Тема: Цепная молния |
постоянный участник
Сейчас нет на сайте
| nekroo98, а что у тебя за жанр игры?Если тактик , то все очень просто , а если экшн ,то там все намного труднее , особенно если есть несколько молний одновременно.
Мой проект
Сообщение отредактировал Krosos - Четверг, 22 Августа 2013, 22:56 |
|
| |
Krosos | Дата: Четверг, 22 Августа 2013, 19:47 | Сообщение # 129 | Тема: Цепная молния |
постоянный участник
Сейчас нет на сайте
| nekroo98, 25 строк - это писец.Код очень трудно-понимаемый, а он должен быть очень простым ,чтобы подвергать его дальнейшим изменениям. Лучше всего использовать 1 функцию на строку , а не лепить кашу иначе очень не удобно его разбирать... Я бы сделал примерно так: 1.Создаются ячейки repeat(5){ 2.Сигнал ячейкам: 3.Проверка наличия игрока в ячейках 4.Проверка достижимости 5.Если ячейка еще не атаковалась 6.Если первые 3 условия совпали то объявляем ячейку глобально атакуемой 7.Если глобально атакуемая ячейка >0 , то атакуем ее иначе удаляемся } instance_destroy()
Вот примерно так.
Мой проект
Сообщение отредактировал Krosos - Четверг, 22 Августа 2013, 19:51 |
|
| |
Krosos | Дата: Четверг, 22 Августа 2013, 17:08 | Сообщение # 130 | Тема: Цепная молния |
постоянный участник
Сейчас нет на сайте
| Я тоже сначала хотел сделать , но я подумал :мои нервы подобного не выдержат...
Дам подсказку , надеюсь очень поможет. Вот так атакует мой ИИ магией , попробуй извлечь пользу от этого кода:
if SelestTarget=1{ //Если началось событие , когда и нужно выбрать цель with attack_Tile{ //Дальнейший код для всех ячеек атаки if collision_rectangle(x-31.99,y-31.99,x+31.99,y+31.99,KleymoOfAlied,0,0){Atile=1}else{Atile=0} //Если игрок находится в ячейке атаки , то ячейка принимает на себя значение Atile=1(Имеет в себе союзника) иначе Atile=0 (Ячейка пустая) if Atile=1{//Если в ячейке кто-то есть timers+=random_range(1,2) //Вводим таймер случайности (Чтобы был случайный выбор цели , иначе атакована всегда будет верхняя угловая цель) if timers>=5{timers=0 //Если наш таймер достиг значения 5 , то обнуляем его и переходим к следующим действиям global.Sunit.SelestTarget=0 //Для юнита который сейчас ходил выбор цели закончен (global.Sunit - это ид игрока) , а все клетки которые не успели досчитать - идут нафиг... global.AttackPoint=id //Объявляем ячейку атакуемой global.Sunit.goattack=1//Начинаем следующий этап атаки для выбранного игрока }}}} Дальше происходит атака магией на атакуемую клетку. Этот код подходит для любой моей магии.
Мой проект
|
|
| |
Krosos | Дата: Четверг, 22 Августа 2013, 04:59 | Сообщение # 131 | Тема: 2D "Assault into the darkness" [TRPG] (8 демо) |
постоянный участник
Сейчас нет на сайте
| fruitymonster01, так и задумано , стоит убрать одну строку в кодах и хил будет только на союзников , но я подумал , что хил на всех - будет лучше. Потом вся магия и все скиллы будут с уровнями.Уровни можно менять. Чем выше уровень тем эффективнее магия , больше ее область поражения , сила дэбафов ,ее стоимость, урон ,доп. эффекты. Также и у врагов. Сейчас я с этим и вожусь.... А также у каждой магии есть эммитеры , которые тоже зависят от уровня. Вот 3 скрина с законченной магией ГрандБэнг, я тоже закончил , но там с эммитером надо очень повозиться..
Мой проект
Сообщение отредактировал Krosos - Четверг, 22 Августа 2013, 05:00 |
|
| |
Krosos | Дата: Среда, 21 Августа 2013, 21:39 | Сообщение # 132 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Anthem, считаются , но материться на это хочется....
Мой проект
|
|
| |
Krosos | Дата: Среда, 21 Августа 2013, 21:23 | Сообщение # 133 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Anthem,нет , я например делаю ТРПГ , а ИИ направляю с помощью меток. Вот так например: Создание меток: Цитата with KleymoOfAlied{ //Избранные объекты создают 4 метки возле себя instance_create(x+64,y,AA) instance_create(x-64,y,AA) instance_create(x,y+64,AA) instance_create(x,y-64,AA) } with AA{ if distance_to_object(instance_nearest(x,y,KleymoOfAlied))=0 {instance_destroy()} \\Если метка создалась прямо на избранном объекте - удалить(Если 2 объекта стоят рядом) if distance_to_object(instance_nearest(x,y,KleymoOfEnemy))<16 and distance_to_object(global.Sunit)>16 {instance_destroy()} \\Другое условие удаления }
Движение к ним: Цитата if Moving=2{ \\Если моя переменная равна 2 if !instance_exists(AA){global.Phase12=1} \\Если метка не существует - закончить свой ход if mp_grid_path(global.Moving_mpgrid,path008,x,y,instance_nearest(x,y,AA).x,instance_nearest(x,y,AA).y,false)=true and path_get_number(path008) <=global.SP[O]{ \\Если путь к ближайшей метке существует и он достижим (но тут мы ищем именно ближайшую метку , а не ближайшую достижимую) path_start(path008,speeed,0,1) \\Начинаем путь к метке со скоростью speeed endpath=1 \\Конец пути-переменная для события End_Path (например при окончании пути нпс - начинает есть) }} Ну, вот что-то подобное
Мой проект
Сообщение отредактировал Krosos - Среда, 21 Августа 2013, 21:23 |
|
| | |
Krosos | Дата: Среда, 21 Августа 2013, 11:45 | Сообщение # 135 | Тема: Ваши любимые игры |
постоянный участник
Сейчас нет на сайте
| Художник-Художник, industrial очень конфликтный мод.Отвергает другие хорошие моды , например инвазион , а инвазион отвергать плохо! Я ради инваизона целую неделю строил замок с большими и длинными стенами без всяких тулманикитов.А потом началась битва... После битвы ... бедный мой замок. Добавлено (21.08.2013, 11:45) --------------------------------------------- Блин... даже опять захотелось сыграть , но замок я построил бы боле умный. Я уяснил главную фишку , что самая лучшая защита нексуса - это середина огромного моста , а в середине большая и высокая башня. А на мосту можно спокойно растреливать тупых зомби с пушки.
Мой проект
|
|
| |
Krosos | Дата: Среда, 21 Августа 2013, 00:26 | Сообщение # 136 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Anthem, создай 4 метки возле куста и пусть нпс движется на ближайшую.
Мой проект
|
|
| |
Krosos | Дата: Воскресенье, 18 Августа 2013, 18:44 | Сообщение # 137 | Тема: Помогите с создание 3d оружия. |
постоянный участник
Сейчас нет на сайте
| Ох , блин... Нахрена делать шутеры на гэйммакере? Fps Creator или КриДвигатель уже вне конкуренции? Там в десятки раз все быстрее и проще.
Мой проект
|
|
| |
Krosos | Дата: Воскресенье, 18 Августа 2013, 16:21 | Сообщение # 138 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| t111, у гугла спроси , там таких дохрена.
Мой проект
|
|
| |
Krosos | Дата: Воскресенье, 18 Августа 2013, 15:26 | Сообщение # 139 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Dmi7ry, нет , в step события рисования не действуют.
Мой проект
|
|
| |
Krosos | Дата: Воскресенье, 18 Августа 2013, 11:23 | Сообщение # 140 | Тема: Вопрос - Ответ (Game Maker) |
постоянный участник
Сейчас нет на сайте
| Драв - рисует , степ - не рисует - вот и вся разница.
Мой проект
|
|
| |
|