Вопрос - Ответ (Game Maker)
|
|
Dva_Kota | Дата: Среда, 11 Июля 2012, 10:51 | Сообщение # 3381 |
заслуженный участник
Сейчас нет на сайте
| Gefak, ты назвал переменную global.player_health, а обращаешься к ней player_health. обращаться тоже нужно global.player_health
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
DenDron | Дата: Среда, 11 Июля 2012, 10:52 | Сообщение # 3382 |
был не раз
Сейчас нет на сайте
| LunarPixel
В каком эвенте?
|
|
| |
Dva_Kota | Дата: Среда, 11 Июля 2012, 10:54 | Сообщение # 3383 |
заслуженный участник
Сейчас нет на сайте
| DenDron, я же написал что нужно использовать оператор with, а ты его выбросил (и вообще в твоем вопросе было написано что "пуля" чсоздается при создании объекта А).
Этот код у субмарины? Если да, то так: Code if enable_shoot=true { with(instance_create(x,y,obj_torpedo) ) { speed=5 direction=obj_submarine.image_angle// правильно ли я сделал? - здесь, скорее всего, правильно. } enable_shoot=0 alarm[0]=20 }
Ну или как LunarPixel предлагает.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
LunarPixel | Дата: Среда, 11 Июля 2012, 11:01 | Сообщение # 3384 |
старожил
Сейчас нет на сайте
| DenDron, ну при нажатии на клавишу, например. Тебе уж виднее, когда там у тебя этот код выполняться должен.
|
|
| |
LunarPixel | Дата: Среда, 11 Июля 2012, 11:02 | Сообщение # 3385 |
старожил
Сейчас нет на сайте
| Переменную obj только не забудь в create объявить.
|
|
| |
DenDron | Дата: Среда, 11 Июля 2012, 11:16 | Сообщение # 3386 |
был не раз
Сейчас нет на сайте
| Спасибо, помогло =). Сделал по образцу LunarPixel.
upd. Вот полностью выполняемый код при эвенте клавиши space:
Code if enable_shoot=true { torpedo=instance_create(obj_submarine.x,obj_submarine.y,obj_torpedo) { torpedo.image_angle=obj_submarine.image_angle torpedo.direction=torpedo.image_angle if torpedo.image_angle=0 { torpedo.speed=5 } else { torpedo.speed=4.955 } } enable_shoot=0 alarm[0]=20 }
Сообщение отредактировал DenDron - Среда, 11 Июля 2012, 11:31 |
|
| |
BrightSpot | Дата: Среда, 11 Июля 2012, 17:42 | Сообщение # 3387 |
заслуженный участник
Сейчас нет на сайте
| может вопрос и глупый, но как определить длинну строки в пикселях?? просто делаю чат и курсор строки не могу подстроить(то вперед убегает то наоборот отстает при вводе разных букв)
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
GameMix | Дата: Среда, 11 Июля 2012, 17:44 | Сообщение # 3388 |
старожил
Сейчас нет на сайте
| BrightSpot, string_width('строка')
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
BrightSpot | Дата: Среда, 11 Июля 2012, 18:12 | Сообщение # 3389 |
заслуженный участник
Сейчас нет на сайте
| Quote (GameMix) string_width('строка') епт... над было ж такое забыть... спс=))
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
Gefak | Дата: Среда, 11 Июля 2012, 19:46 | Сообщение # 3390 |
постоянный участник
Сейчас нет на сайте
| А то, что перед этим стоит variable_global_get? Пробовал и global.player_health, та же фигня, говорит, что не знаю такой переменное - player_health
|
|
| |
BrightSpot | Дата: Среда, 11 Июля 2012, 20:14 | Сообщение # 3391 |
заслуженный участник
Сейчас нет на сайте
| у тебя скорее всего обьект рисования поставлен в комнату раньше обьекта с переменными... и еще все таки правильней будет global.player_health
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
Gefak | Дата: Среда, 11 Июля 2012, 22:17 | Сообщение # 3392 |
постоянный участник
Сейчас нет на сайте
| нашел редактирование скрипта комнаты. Вписал туда instance_create (240,320,Player); - объект Player в Create содержит скрипт с переменными instance_create (5,5,Text_Drawer); - собсна, рисовальщик текста, который обращается к переменным из скрипта, принадлежащего Player'у. Ошибок не находит, но и пишет нулик, тобишь переменную всеравно не находит. Чертяка Если поставить скрипт с переменными в Step Player'а, то снова пишет ошибкуДобавлено (11.07.2012, 22:17) --------------------------------------------- ЕСТЬ!!! ЗАРАБОТАЛО! Просто решил с функциями разобраться. Сделал целую иерархию, удобную для работы. Читаем внимательно, может кому-то поможет. Есть скрипт Player_Controls, принадлежащий Player'у. Этот скрипт управляет передвижением игрока (на чистом скрипте, без кнопок) и прыжком. Вот его содержание: { function_Player_Move(); function_Player_Jump(); } Все... Эти две функции обращаются к скриптам с соответствующими названиями, в которых уже закодированы передвижение и прыжок. По-моему это очень и очень удобно, просто супер! И потом я подумал... Это же сродни импорту! Значит и с переменными можно поступить также! Пишу в скрипт HUD: { Player_Variables (); draw_text(5,5,global.player_health); } И всё работает! Скрипт HUD через функцию обращается к скрипту Player_Variables, и берет оттуда переменные. Ура, товарищи!
Сообщение отредактировал Gefak - Среда, 11 Июля 2012, 21:30 |
|
| |
BrightSpot | Дата: Среда, 11 Июля 2012, 23:43 | Сообщение # 3393 |
заслуженный участник
Сейчас нет на сайте
| Quote (Gefak) может кому-то поможет. легче убится чем так мучаться... совет: не зацикливайся на внешних скриптах... все это можно в 3-4 раза короче записать в самих обьектах(придет с опытом),а скрипты нужны для частоповторяющихся участков кода...
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
Gefak | Дата: Четверг, 12 Июля 2012, 00:33 | Сообщение # 3394 |
постоянный участник
Сейчас нет на сайте
| Quote (BrightSpot) все это можно в 3-4 раза короче записать в самих обьектах Опыт в программировании у меня уже большой - Pascal, C++, C#, ActionScript3. И я не по наслышке знаю, что лучше написать две-три лишние строчки кода, чем потом мучаться и путаться в своем же коде. По-моему использование внешних скриптов в триста раз удобнее, нежели писать в объектах. Удобство заключается в том, что, чтобы обратиться к скрипту для изменения опр. значений, например, нужно всего лишь найти скрипт в папочке scripts (в которой для удобства можно и подпапочки сделать) и изменять как душе угодно. Ну, это уже кому как. Какие-то художники любят и пальцы использовать вместо кисти, и им так удобнее и рисуется намного лучше, а другие кроме кистей даже мастихин не признают.
Сообщение отредактировал Gefak - Четверг, 12 Июля 2012, 00:39 |
|
| |
BrightSpot | Дата: Четверг, 12 Июля 2012, 01:08 | Сообщение # 3395 |
заслуженный участник
Сейчас нет на сайте
| в гм есть замечательная вещь... можно обращатся к переменным любых обьектов... и даже в несколько слоев... например: в обьекте player в create пишешь hp=100 а в обьекте худа draw_text(5,5,player.hp) и все... вывод: зачем усложнять себе жизнь...Добавлено (12.07.2012, 01:08) --------------------------------------------- и еще имхо в гм нужно очень извратится, что бы начать в своем коде путатся...
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
Gefak | Дата: Четверг, 12 Июля 2012, 01:19 | Сообщение # 3396 |
постоянный участник
Сейчас нет на сайте
| BrightSpot, если вам так удобнее, то пожалуйста, но мне кажется, что это сродни писанию кода "на коленке", когда горазде удобнее, когда нужные переменные лежат в одном скрипте, и другой скрипт (одной строчкой, ничего сложного же) обращется к первому за перемеными. Не вижу усложнений, наоборот, это только упростит работу. К тому же, переменные нужны глобальные, и одним hp=100 не отделаешься. В общем то, больше ничего на этот счет не скажу. Это просто давнишний спор об удобстве программирования в опр. ЯП. Спор бессмысленный
|
|
| |
BrightSpot | Дата: Четверг, 12 Июля 2012, 01:44 | Сообщение # 3397 |
заслуженный участник
Сейчас нет на сайте
| Quote (Gefak) и одним hp=100 не отделаешься. могу привести пример 3д рпг на ГМ где только так все и работает=))
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
Dva_Kota | Дата: Четверг, 12 Июля 2012, 09:15 | Сообщение # 3398 |
заслуженный участник
Сейчас нет на сайте
| Тут дело не столько в удобстве, сколько в быстродействии. Вызов скриптов в ГМ работает медленнее чем выполнение кода в объектах, а вызов скриптов из скриптов, соответственно, делает выполнение еще медленнее. В ГМ главное различие между локальными и глобальными переменными в том, что к глобальной можно обратиться всегда (если она задана), а к локальной только если в комнате есть объект, которому принадлежит данная переменная. И локальные переменные могут быть с одинаковыми именами, если они относятся к разным объектам (или экземплярам объектов), а глобальные переменные с одинаковыми именами не допустимы.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |
Gefak | Дата: Четверг, 12 Июля 2012, 10:09 | Сообщение # 3399 |
постоянный участник
Сейчас нет на сайте
| Dva_Kota, насколько медленнее? Неужто при наличии около сотни скриптов (причем вся логика игры и будет написана в этой сотне скриптов), то игра будет выдавать 5 fps?
|
|
| |
Dva_Kota | Дата: Четверг, 12 Июля 2012, 10:16 | Сообщение # 3400 |
заслуженный участник
Сейчас нет на сайте
| Смотря какой компьютер и какие скрипты, но то что они работают медленно - известный факт.
Новый пример инвентаря! /20.06.2012/
Energy Wars
|
|
| |