| 
	
		
		
			| Нужна помощь с проектом в Game Maker |  |  |  | 
| Losiah | Дата: Понедельник, 24 Октября 2016, 02:01 | Сообщение # 21 |  |   почетный гость Сейчас нет на сайте | сделай проше напиши небольшой код спавна. к объекту спавн в степ пишешь
 
 if spawn = 1
 {
 r=irandom(3)
 rx=0
 ry=0
 if r==0 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 if r==1 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 if r==2 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 if r==3 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 instance_create(rx,ry, o_enemy)
 spawn = 0
 alarm[0] = 360
 }
 
 если рандомнное число допусти 2 то появление врага будет выполнено по координатам rx ry. координаты выбираешь сам. при редактировании комнаты в низу пишутся координаты позиции твоей мыши
 
 вариант номер 2. пишешь диапазон координат объектов с которыми ты бы не хотел сталкиваться и если рандомные координаты попадают под этот диапазон то запускаешь скрипт снова, пока координаты не будут верными.
 вариант номер 3. если твой npc появляется и сталкивается с объектом то его выталкивает или телепортирует ближе к центру комнаты.
 есть ещё ещё ещё много вариантов.
 
 
   
 
 Сообщение отредактировал Losiah - Понедельник, 24 Октября 2016, 02:02 |  |  |  |  |  | 
| SovaDeveloper | Дата: Понедельник, 24 Октября 2016, 16:41 | Сообщение # 22 |  | был не раз Сейчас нет на сайте | Losiah, Вообщем со спавном все шикарно!) Можешь мне еще раз объяснить что со столкновением надо делать, ибо я не понял(((
 |  |  |  |  |  | 
| Tymonr | Дата: Понедельник, 24 Октября 2016, 17:58 | Сообщение # 23 |  |   With OpenSource forever♥ Сейчас нет на сайте | Цитата Losiah (  ) Код if spawn = 1{
 r=irandom(3)
 rx=0
 ry=0
 if r==0 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 if r==1 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 if r==2 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 if r==3 {rx=(выбранная координата оси x) ry=(выбранная координата оси y)}
 instance_create(rx,ry, o_enemy)
 spawn = 0
 alarm[0] = 360
}Ох уж этот говнокод)
 
 По поводу смерти - должна быть проверка на валидность. Прежде чем обращаться к объекту просто проверяй, что он еще существует
 По поводу застреваний - у тебя скорее всего смещение персонажа происходит с помощью set_position, а это будет телепортировать тебя в стены и т.п. Скачай какие-нибудь демки(Даже в самой студии вроде были топдуан демки) посмотри как сделано
 
 Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
 Как правильно задавать вопросы в технических форумах
 
 
 Сообщение отредактировал Tymonr - Понедельник, 24 Октября 2016, 17:58 |  |  |  |  |  | 
| Losiah | Дата: Понедельник, 24 Октября 2016, 18:16 | Сообщение # 24 |  |   почетный гость Сейчас нет на сайте | Смотри какая штука. если ты не задаёшь маску столкновения то она по умолчанию берёт за неё твою текстуру. в итоге герой застревает в пикселях дерева. 
  
 Добавлено (24 октября 2016, 18:16)
 ---------------------------------------------
 Tymonr, я просто его код немного поменял. я бы не стал использовать эти функции в степ или аларм. я бы её в таймлайн поместил и сделал по своему.
 так как получается что степ проверяет значение if spawn = 1 около 30 раз в секунду.
 
 
   
 
 Сообщение отредактировал Losiah - Понедельник, 24 Октября 2016, 18:33 |  |  |  |  |  | 
| SovaDeveloper | Дата: Понедельник, 24 Октября 2016, 18:35 | Сообщение # 25 |  | был не раз Сейчас нет на сайте | Losiah,Картинка не показывается, пишет что у тебя скрыт общий доступ для просмотра http://imageshack.com/a/img921/1598/2kNGLi.jpg
 http://imageshack.com/a/img923/5779/FhalY3.jpg
 Что нужно выбирать и выставлять??(Скриншоты)
 P.S Можешь кинуть ссылку на какую-нибудь годную статью про тайм лайны , я просто понятия не имею что это такое
  Добавлено (24 октября 2016, 18:35)---------------------------------------------
 Losiah, Вот картинки заработали)
 
 
 Сообщение отредактировал SovaDeveloper - Понедельник, 24 Октября 2016, 18:32 |  |  |  |  |  | 
| Losiah | Дата: Понедельник, 24 Октября 2016, 18:37 | Сообщение # 26 |  |   почетный гость Сейчас нет на сайте | Цитата SovaDeveloper (  ) P.S Можешь кинуть ссылку на какую-нибудь годную статью про тайм лайны , я просто понятия не имею что это такое
 не мне просто аларм самому не нравится. так то он ничего.
 
 
   |  |  |  |  |  | 
| SovaDeveloper | Дата: Понедельник, 24 Октября 2016, 18:43 | Сообщение # 27 |  | был не раз Сейчас нет на сайте | Losiah, а сепаратор столкновения в спрайтах нужен? |  |  |  |  |  | 
| Losiah | Дата: Понедельник, 24 Октября 2016, 18:51 | Сообщение # 28 |  |   почетный гость Сейчас нет на сайте | Есть сборник уроков для начинающих. там есть решение основных вопросов 
 
 
   |  |  |  |  |  | 
| SovaDeveloper | Дата: Понедельник, 24 Октября 2016, 19:03 | Сообщение # 29 |  | был не раз Сейчас нет на сайте | Losiah, ого, пробежался глазами, очень даже доступно написано, спасибо за все, очень помог!) |  |  |  |  |  | 
| Rean | Дата: Понедельник, 24 Октября 2016, 22:59 | Сообщение # 30 |  |   участник Сейчас нет на сайте | Tymonr, по какому критерию, интересно, этот маленький кусочек является "говнокодом"?)) То что переключатели не используются вместо конструкции "if-then"? Или то, что запись без отступов и точек с запятой? Здесь, думаю, вообще надо благодарить, что не как индусы-программисты - весь код в одну строку  Или то, что проверяется успешность операции присваивания "spawn = 1"?  Ну здесь я даже не знаю - может так и задумано?) Вопрос исключительно ради интереса, без злого умысла.
 
 
 Сообщение отредактировал Rean - Понедельник, 24 Октября 2016, 23:00 |  |  |  |  |  | 
| Losiah | Дата: Вторник, 25 Октября 2016, 00:39 | Сообщение # 31 |  |   почетный гость Сейчас нет на сайте | Rean, с моей точки зрение использовать "if spawn == 1"в степах только чтобы зациклить с аларм... э ну прямо бред. я просто написал то как это примерно должно быть в уже существующее тело функции if spawn == 1
 {
 // < Сюда
 instance_create(x,y, o_enemy)
 spawn = 0
 alarm[0] = 360
 }
 
 ещё хочу отметить что соблюдение всех правил синтаксиса это очень хорошо, если у твой код на 300 страниц. иначе всё в кашу переходит. а так для небольшого функционала, зачем?
 
 
   
 
 Сообщение отредактировал Losiah - Вторник, 25 Октября 2016, 00:47 |  |  |  |  |  | 
| Rean | Дата: Вторник, 25 Октября 2016, 01:42 | Сообщение # 32 |  |   участник Сейчас нет на сайте | Losiah, честно сказать, я может чего-то не понимаю (без сарказма), может какой-то "трюк", но проверка 
 Код if (spawn = 1) {
 ...
 ...
 spawn = 0
 }
 
полностью лишена смысла, так как в условиях оператора If сперва происходит присвоение значения, а потом только проверка успешности данного действия. Но, подозреваю, если у вас это работает, значит GML проще относится к невнимательности. Си таких ошибок не прощает
  Да и вообще, если нам надо проверить, что переменная не равна нулю, то достаточно написать: 
 
 А правила синтаксиса надо соблюдать не взирая на размер программы, потому как иначе эта самая программа, в лучшем случае просто не скомпилируется, в худшем - будет вести себя некорректно, а потом отлаживай её до посинения.
 Это же касается и оформления кода: это как хорошие манеры. Можно в повседневной жизни вести себя как быдло, а на все замечания отвечать: "Материться и харкаться перестану только тогда, когда буду в Палате Лордов или на приёме у английской Королевы."
  В общем, не хочу занудствовать, это личное дело каждого, просто когда делишься кодом с другими, то соблюдения хотя бы основного общепринятого стиля - это как некий признак уважения. Losiah, это не относится лично к тебе, я просто рассуждаю на заданную тему. Да и вообще, любая "программка", начинается с: "Здесь процедурку быстренько напишу, там цикл в функцию оберну..." и понеслось  Ну в общем, вы понимаете... |  |  |  |  |  
 |