Народ помогите, вобщем, вот такая ситуация:
Сижу значит за игрухой типа башенок, значит подползают к маей базе, допустим, 10 enemy, а у меня на базе пушки стоят, и if_distance_to_object(enemy)<200 пушки стреляют по enemy. В результате сиих манипуляций у меня возникли следующие баги:
1. зомби подходят пушки активизируются, но стреляют не по тому, который distance< 200, а по любому, ползи он хоть в другом конце карты(((((
2. Пушек у меня несколько, а стреляют они все по одному зомби(((
Вот...Заранее благодарен за помощь
Help me pleae !!!
Сообщений 1 страница 19 из 19
Поделиться12008-05-13 03:43:04
Поделиться22008-05-13 15:46:00
Ответ на первый баг:
Дело в том, что ты не задал идентификатор объекта, по которому стоит стерелять.
Попробуй добавить к своему коду следующее:
В step:
if_distance_to_object(enemy)<200
{
if(instance_number(enemy)>0)//если число объектов данного образца > 0
{
enemy_idn=instance_nearest(x,y,enemy)//ищем ближайшего врага и определяем его идентификатор
}
}
Далее стрельбу ведем по объекту enemy с идентификатором enemy_idn, то есть по тому, который всех ближе к пушке и на дистанции < 200, если данный объект существует.
P.S.: необходимо использовать не образец объекта, а его идентификатор.
Поделиться32008-05-13 16:48:56
Logos2012 зачем так сложно?
Самый элементарный вариант-
Пушки они стоят на месте,далее делаем невидимую ауру,во врагах к примеру пишет а=0
Далее если с аурой сталкиваеться враг делаем а=1 к врагу,и незабыть в степе указать а=0 если враг НЕсталкиваеться с аурой
Далее у пушки опрос,если у врага а=1 и он столкновен с аурой то стрелять по нему,но тогда пушка будет стрелять во всех подряд по 1 разу кто в ауре,ставим время на задержку,и выбор(randome)в кого стрелять!
Кхе-кхе помойму у logos2012 проще.
P.s переношу в проверенную группу с достиганием 8 постов
Поделиться42008-05-13 22:22:13
как я сам то до ауры не допёр,спс
А про идентификацию вообще бы ни подумал, впринципе и то и другое это решит обе проблемы.
Пойду творить дальше, кстати подскажите как сделать переменную имени, всмысле выводится сообщение, типа "как вас зовут?", а потом по всей игре твоё имя тыкают куда не попадь
Отредактировано Opex (2008-05-13 22:22:47)
Поделиться52008-05-13 22:57:44
Элементарно,переменная а=name
Можешь сделать в начале 20 имён и рандом
Если рандом =2 пусть а=name2
Если рандом =5 пусть а=name5
А name забиваешь в начале,ТОЛЬКО НЕЗАБУДЬ ЧТО ПЕРЕМЕННЫЕ ПИШУТЬСЯ ДРАВОМ!(Draw)
Поделиться62008-05-14 00:54:46
Я имею ввиду, вначале игры тебя спрашивают: Введите ваше имя __________________ , игруха запоминает его, а потом тыкает его в сообщения .
Поделиться72008-05-14 02:53:32
вот ввод имени (исходник)
http://narod.ru/disk/323705000/talkn.gm6.html
Отредактировано GRID (2008-05-14 18:56:48)
Поделиться82008-05-14 15:13:16
Ответ про имя:
1) Вариант с использование внутренней глобальной переменой:
При нажатии на кнопку (некий объект) - Left Button:
global.name=get_string('your_name','введите имя')//Записываем имя в переменную
У героя в Draw:
draw_text(x,y,global.name)//Выводим значение переменной у героя.
//не забываем рисовать спрайт героя
/*Не уверен точно, будет ли сохраняться значение глобальной переменной при выходе из игры. Если это не прокатит, то используй второй вариант.*/
2) Вариант с использованием внешненго файла
При нажатии на кнопку (некий объект) - Left Button:
global.name=get_string('your_name','введите имя')//Записываем имя в переменную
ini_open('*.ini')//Открываем *.ini
ini_write_string('names','name1',global.name)//Записываем в *.ini строку
ini_close()//закрываем *.ini
В Create у героя:
ini_open('*.ini')
nm=ini_read_string('names','name1','Имя')//Считываем строку
ini_close()
В событии Draw у героя:
draw_text(x,y,nm)//Рисуем переменую
//не забываем рисовать спрайт героя
Отредактировано logos2012 (2008-05-14 15:17:25)
Поделиться92008-05-14 20:46:05
logos2012 +1
Поделиться102008-05-17 04:44:54
Как теперь эту переменную в сообщение вставить?
Поделиться112008-05-17 17:23:02
mes='Hi '+global.name//Записываем сообщение в переменную
show_message(mes)//Выводим сообщение
Поделиться122008-05-19 07:13:23
У меня очередной вопрос:
Создал я enemy второго типа, прописал всё как следует, задал enemy2_idn, короче аналогично как и для первого. Однако теперь пушки стреляют одновременно по enemy1 и enemy2, , чё делать?
Поделиться132008-05-19 15:37:35
У тебя снаряды 2 разных обьекта (типа снаряд анти моб1 и анти2) или одним
Поделиться142008-05-19 15:46:05
Сделай рандомом выбор по кому стрелять-
это в степе у=randome(2)
Далее если у>1 то стрелять в 1 врага
Если у<1 то стрелять во 2 врага.
Поделиться152008-05-19 19:05:35
Нельзя ли как-нибудь условием "кто ближе" ?
Если можно то как)))
Отредактировано Opex (2008-05-19 19:06:38)
Поделиться162008-05-19 19:35:52
пусть каждая башня содержит тогда 3 ауры:
дальняя (самая большая)
средняя и близкая
и типа когда моб к ней подходит создаем невидимый обьект допустим
дальняя+моб=choise1
сред.+моб=choise2
с близкой уж понятно.
И создаём 3 вида патрон (ближний,средний и дальний)
и делаем так
_________________
create: middle_ammo > create (instance destroy long_ammo)
create: close_ammo > create (instance destroy middle_ammo)
тоесть когда создаёться ближе снаряд дальний исчезает но появляется снаряд летящий в более близкого
ферштеин?
если не понятно кину исходник
Отредактировано GRID (2008-05-19 19:37:06)
Поделиться172008-05-20 04:01:00
Вроде понятно, но ты всё же кинь исходник
Поделиться182008-05-22 04:22:12
Кто-нибудь подскажите как грамотно прописать систему покупки=>постройки зданий... Имею ввиду, как в стратежках кликаешь по иконке здания, оно значит следует за курсором, и при нажатии ставится, У меня как бы есть своя система, но в DRUG & Drop и с багами, прошу грамотный код)))
Желательно очень подробно
Отредактировано Opex (2008-05-22 04:24:41)
Поделиться192008-05-22 17:29:56
Незаморачивай голову =) Сделай здание своим курсором =)