Воскресенье, 17 Ноября 2024, 14:19

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (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, ну при нажатии на клавишу, например. Тебе уж виднее, когда там у тебя этот код выполняться должен. smile

LunarPixelДата: Среда, 11 Июля 2012, 11:02 | Сообщение # 3385
старожил
Сейчас нет на сайте
Переменную obj только не забудь в create объявить. smile

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, и берет оттуда переменные.
Ура, товарищи! smile

Сообщение отредактировал 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 не отделаешься.
В общем то, больше ничего на этот счет не скажу. Это просто давнишний спор об удобстве программирования в опр. ЯП. Спор бессмысленный smile
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
Поиск:

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