beril, Step: if deystvie=1 { //Если действие идет timer+=1 //Прибавляем таймер +1 каждый шаг if timer = 30 { timer=0 deystvie=0 pausa=1} // Если таймер достиг 30 шагов(1 секунда или пол секунды при фпс 60) то начинается пауза. if pausa=1 { //Если пауза идет timer+=1 if timer = 60{ timer=0 deystvie=1 pausa=0}} //продолжаем действие
Твое действие должно идти от переменной. if deystvie=1 {Действие} Если оно идет , то ведем счет. Каждый раз прибавляем timer+=1 , пока идет действие. Таймер насчитал 30 пунктов и действие прекратилось , его переменная стала равна нулю, а если она равна нулю то и действие не возможно. Дальше врубаем новую переменную pausa=1 и сбрасываем таймер до нуля. Дальше снова считаем , но уже до 60 , и как досчитали , снова врубаем действие и опять обнуляем таймер и переменную паузы тоже.
Можно и через алармы , но они должны врубаться только на 1 шаг , поэтому тут они неудобны.
Еще раз:сначала объект считает до 30 и выполняя действие ,останавливается, потом считает до 60 и снова начинает действие.
Ну , я делал через метки. Враг ищет игрока по его метке , и мы ищем врага по его метке. У каждой метки есть target.target- это владелец метки. Мы ищем метку , а урон получает владелец. Достаточно только поменять поиск и атаку ,и враг тут же превращается в союзника.А еще я могу сделать даже 3 стороны , где 1 будет сражаться против двух других. И все это благодаря меткам на игроках.(Но потом я понял , что можно было использовать родителя для родителей , с ним бы тоже прокатило.) \ Метка: Step: id.x=target.x id.y=target.y Игрок: Create: Kleymo=instance_create(x,y,KleymoOfEnemy) Kleymo.target=id
В общем , принадлежность зависит от метки ,и эту метку ищет ИИ и атакует ее владельца.
Добавлено (12.08.2013, 13:45) --------------------------------------------- А , зачем использовать move_towards_point(object1.x,object1.y,3)? Он же не обходит препятствия , а препятствия есть в каждой игре...
Добавлено новое демо=) Вообще все переделано под нормальное и вроде получилось неплохо. Убран фейдинг , рейнджер , худ врага. Добавлено: Скиллы:
Лечение-Лечение Готовность- добавляет 100 очков готовности цели (нельзя добавить себе) Дождь жизни- лечение всех Диспел- лечение дэбафов Воскрешение-воскрешение союзника , начиная от первого , в любом месте.
Огонь-массовый урон + дэбаф на защиту 4 хода Психо- массовый урон вокруг мага + дэбаф на атаку Взрыв земли - массовый урон в некотором направлении + дэбаф на скорость Молния- атака одной цели молнией + дэбаф на инициативу и ошеломление. Скелет - призыв скелета , который идет и лупит всех кто нам не нравится(Можно призывать 2 скелета , еще они на автопилоте)
Ловушка - наносит врагу урон и заканчивает его ход Ловушка на ошеломление - тоже что и первая , только без урона , а отнимает инициативу.
Слом защиты Слом атаки Кровавая расправа- проще говоря , этот скилл для тех , кого бесит ,когда у врага остается 2-5 хп , данный скилл расчитан на то , чтобы добить врага. В случае удачи , наносится очень большой урон , в случае неудачи наносится слабый урон.(Чем меньше хп тем выше шанс , а также зависит от атаки рыцаря , если например защита врага 1000 но хп 2 , а у рыцаря 100 атаки , то скилл нанесет 1 урон)
Об остальных скиллах , пока нету идей=)
Полностью изменена структура ячеек.Теперь они создаются и их два типа:перемещение , действие. Ловушки: Ловушки создает охотник , и когда в его ловушки попадают мобы , то охотник получает опыт. В ловушку может вляпаться и игрок , даже при отмене хода(Поэтому по аккуратнее),а сам охотник в нее вляпаться не может. Скиллы: Большинство скиллов отнимает готовность у игрока , то есть его ход наступит позже. Например, скилл "дождь жизни" отнимает 100 маны и 500 готовности - значит жрец пропустит 5 своих ходов. Также сила скиллов напрямую зависит от атаки , даже магия!
А еще добавленны предметы: Всего 4 предмета: Хп+30% , Хп+60% , МП+25% , МП+50% Предметы можно использовать только на себя , но можно передавать.(А то я думаю странно , когда в бою к тебе подбегает союзник и заливает зелье тебе в рот O_o) Можно носить максимум 8 зелий. Найти зелья можно в сундуках или после убийства врага в ближнем бою - то есть охотник , снайпер и маг магией не могут собирать предметы.
У врагов, я больше не замечал отклонений , но один раз что-то странное выскочило , поэтому если они будут в долгом ступоре их ход прервется , но это крайне редко бывает - один из 1000 случаев.
Летун: Теперь летун может перелетать через союзников (можно сделать и через врагов , но я пока думаю - нужно ли это?)
О механике я думал также , как и о графике =O- я оставлю все это на потом. Скринов , слишком много бы вышло , да и особо показать там нечего , поэтому кину демо. Полный список изменений о ней выше.
Что осталось сделать: Маг ИИ (чтобы атаковать магией или скиллом - достаточно только дать сигнал ячейке и главному объекту), Фэйдинг , Босс , еще скиллов , рэйнджера(да , опять) , зону действий. Потом останется графика и механика ,и основа для игры готова , останется только- все это накидать на большие уровни. Механика и графика сейчас - это только наброски. Классы будут в игре следующие: Маг , жрец , снайпер , темный рыцарь ,рыцарь , жрец крипта(Пока его магия валяется у мага),воин , охотник , летун и особый.
В демо на данный момент режим выживания , но мы можем и побегать от мобов ,ведь там разрешена большая область действий=) Каждый следующий моб будет сильнее на 3% от предыдущего. Если кого-то слили то реснут он будет с 1 лвл , потому что я это еще не настроил.
Ctrl- это тест кнопка на быстрое завершение хода - она пока не идеально работает А- атака
Добавлено (11.08.2013, 13:00) --------------------------------------------- Извиняюсь за свою дикую небрежность с предыдущей демо=( Game7.exe Теперь почти все исправил , и доработал. 1)Добавлены:маги и рейнжеры ,и эмм... босс ,ну что-то похожее на босса. 2)Поправлена механика 3)Добавлено поле боя (большое) 4)Добавлены респы Ну , в общем я сделал что-то уже более похожее на игру.
Задача:победить босса!
У босса очень высокие параметры , и чем выше опасность , тем он чаще ходит. Босс - это воин.(Ближний бой) Босс ходит не часто , но ходит довольно далеко и убивает одним ударом любого вашего юнита и более того , босс начинает игру возле вас и поэтому вам его не победить и придется от него убегать , пока не прокачаетесь,развернетесь ,и не убьете его.(И должно выскочить окошко победы) Также , все далекие враги ходят мгновенно ,поэтому будет игра тормозить во время их мгновенного хода.(Как во многих других играх)
Если жрец умрет , то вы проиграете , потому что он единственный , кто умеет воскрешать.
Уровень сложности игры выбирается в начале. Он влияет на уровень растущей опасности: 5-брать вообще не рекомендую , я даже не знаю для чего его туда добавил,3-уже довольно сложный , 1 - довольно легкий.=)
Нету пока только темноты , и это наверное предпоследнее демо. Потом буду делать графику и полностью править всю механику игры.=) И один скриншот(Одного думаю хватит):
CreatingOver, верно , как в старых играх.=) lisiyrak, да , я их деактивировал , но это не помогло.=( Самая диколагающая функция- instance_nearest(x,y,obj) , а без нее не получается.
CreatingOver, в том , что это плохой способ - это точно! Не , это не подходит ,и я уже написал выше почему. 1)Вся карта делится на квадраты 64*64 2)Некоторые квадраты открыты(Они видны) , а не которые закрыты (Не видны) , а некоторые видны на половину(alpha(0.5)). 3)Вблизи игроков , эти квадраты видны , а вдали скрыты темнотой. 4)Квадраты скрывают все , как туман войны и открываются только , тогда , когда игрок будет возле них. 5)В учет видимости квадратов идут и стены - за стенами ничего не видно.
Добавлено (11.08.2013, 05:55) --------------------------------------------- Стены там еще не учитывались.Тени должны были идти через коллижен лайн на игрока ,при отсутствии между ними стен. .
Добавлено (11.08.2013, 05:58) --------------------------------------------- Вот , я еще пример делал
Первый не подойдет=( Первый не учитывает задний фон. Второй - это перебор .Он ,так сказать , слишком крут для моего проекта.Мне нужны квадратные тени , то есть, как в старых играх. А так , можно перенести скрипты в свой проект , за исключением тех , которые создают рандомные свечения и получится тоже самое. Но лучше бы , его не использовать - он расчитан на TDS ,а не TRPG.
От игроков исходит свет - это зона видимости. Чем дальше , тем свет слабее до полной темноты. Также свет не должен проходить сквозь объекты стены. Я пробовал накидать фейд-объектов и изменять их в зависимости от расстояния , но это вызвало очень много лагов.
Kazerex, напрмер ,global.UNI[1]=id И у нас тут 9 объектов и нужно найти среднюю точку между ними всеми , с учетом того , что некоторые объекты могут и не существовать.
В общем вот формула: maxX=max(global.UNI[1].x ,global.UNI[2].x,global.UNI[3].x,global.UNI[4].x,global.UNI[5].x,global.UNI[6].x,global.UNI[7].x,global.UNI[8].x,global.UNI[9].x,global.UNI[10].x) minX=min(global.UNI[1].x ,global.UNI[2].x,global.UNI[3].x,global.UNI[4].x,global.UNI[5].x,global.UNI[6].x,global.UNI[7].x,global.UNI[8].x,global.UNI[9].x,global.UNI[10].x) maxY=max(global.UNI[1].y ,global.UNI[2].y,global.UNI[3].y,global.UNI[4].y,global.UNI[5].y,global.UNI[6].y,global.UNI[7].y,global.UNI[8].y,global.UNI[9].y,global.UNI[10].y) minY=min(global.UNI[1].y ,global.UNI[2].y,global.UNI[3].y,global.UNI[4].y,global.UNI[5].y,global.UNI[6].y,global.UNI[7].y,global.UNI[8].y,global.UNI[9].y,global.UNI[10].y) tita.x=(mimX+maxX)/2 tita.y=(mimY+maxY)/2
Проблема заключается в том , что если один из ,global.UNI[O]=0 , то код считает это за минимум=( Как сделать так , чтобы если ,global.UNI[O]=0 , то он не учитывался бы как минимум?
Добавлено (10.08.2013, 02:53) --------------------------------------------- Я опять сам догадался
Код
mxx=0 mxy=0 for (T=1 ;T<10 ; T+=1){ if global.UNI[T].x>=mxx and global.UNI[T].x>0 {mxx=global.UNI[T].x} } for (T=1 ;T<10 ; T+=1){ if global.UNI[T].x<mxx and global.UNI[T].x>0 {mnx=global.UNI[T].x} } for (T=1 ;T<10 ; T+=1){ if global.UNI[T].y>=mxy and global.UNI[T].y>0 {mxy=global.UNI[T].y} } for (T=1 ;T<10 ; T+=1){ if global.UNI[T].y<mxy and global.UNI[T].y>0 {mny=global.UNI[T].y} }
HaGe, а я думал , что подобная игра получится без использования массивов. Наверное потому что я их сам не использую у меня и получаются скрипты на 2 страницы Если конечно с for , а global.p{x,y] - еще довольно простая.
Notin, ну на гамаке можно создать наверное почти все , хватило бы только цп-единственная проблема. В JRPG нет никаких супер АИ , нет никаких мега экшенов , там нет никаких фиговых туч объектов , но можно приукрасить от себя.Сделать свою уникальную игру , напоминающую JRPG , а там если уже есть понимание - то это возможно