Пятница, 27 Декабря 2024, 22:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
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, так и задумано , стоит убрать одну строку в кодах и хил будет только на союзников , но я подумал , что хил на всех - будет лучше.
Потом вся магия и все скиллы будут с уровнями.Уровни можно менять.
Чем выше уровень тем эффективнее магия , больше ее область поражения , сила дэбафов ,ее стоимость, урон ,доп. эффекты.
Также и у врагов.
Сейчас я с этим и вожусь.... cool
А также у каждой магии есть эммитеры , которые тоже зависят от уровня.
Вот 3 скрина с законченной магией smile ГрандБэнг, я тоже закончил , но там с эммитером надо очень повозиться..





Мой проект


Сообщение отредактировал 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 (например при окончании пути нпс - начинает есть)
}}

Ну, вот что-то подобное wacko





Мой проект


Сообщение отредактировал Krosos - Среда, 21 Августа 2013, 21:23
KrososДата: Среда, 21 Августа 2013, 19:31 | Сообщение # 134 | Тема: [2D] "SHIELD" [Аркада][ Подписаться на тему ]
постоянный участник
Сейчас нет на сайте
Не многовато ли народу на такой малый проект? surprised




Мой проект
KrososДата: Среда, 21 Августа 2013, 11:45 | Сообщение # 135 | Тема: Ваши любимые игры
постоянный участник
Сейчас нет на сайте
Художник-Художник, industrial очень конфликтный мод.Отвергает другие хорошие моды , например инвазион , а инвазион отвергать плохо!
Я ради инваизона целую неделю строил замок с большими и длинными стенами без всяких тулманикитов.А потом началась битва...
После битвы ... бедный мой замок. sad

Добавлено (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)
постоянный участник
Сейчас нет на сайте
Драв - рисует , степ - не рисует - вот и вся разница.




Мой проект
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг