Воскресенье, 06 Октября 2024, 22:18

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (Game Maker)
GAZ777Дата: Воскресенье, 06 Ноября 2011, 13:33 | Сообщение # 2601
участник
Сейчас нет на сайте
LunarPixel, спасибо

<-- КЛИКНИ! Ты поможешь ему вырасти.



Invincible Tanks
Гриша_БыстровДата: Воскресенье, 06 Ноября 2011, 21:39 | Сообщение # 2602
частый гость
Сейчас нет на сайте
В чём проблема?
Code
___________________________________________
FATAL ERROR in
action number 1
of Create Event
for object o_ball:

COMPILATION ERROR in code action
Error in code at line 1:
    speed = 6//
         ^
at position 7: Variable name expected.



LunarPixelДата: Воскресенье, 06 Ноября 2011, 21:41 | Сообщение # 2603
старожил
Сейчас нет на сайте
Хм... объектов с именем speed нет?! smile

Гриша_БыстровДата: Воскресенье, 06 Ноября 2011, 21:44 | Сообщение # 2604
частый гость
Сейчас нет на сайте
нет.

Добавлено (06.11.2011, 21:44)
---------------------------------------------
Все-разобрался.Там Sound speed назывался=)



SyankДата: Понедельник, 07 Ноября 2011, 18:23 | Сообщение # 2605
участник
Сейчас нет на сайте
Мне нужно, чтобы объект при создании в креате создал локальные переменные s1, s2, s3.... s199, s200
Как это прописать кодом можно?
GameMixДата: Понедельник, 07 Ноября 2011, 18:36 | Сообщение # 2606
старожил
Сейчас нет на сайте
Syank, в create того объекта:
Code
for (i=1; i<=200; i+=1)
execute_string("s"+string(i)+" = 0");


Steel Standoff - 2D аркада.
Мои статьи
SyankДата: Понедельник, 07 Ноября 2011, 18:56 | Сообщение # 2607
участник
Сейчас нет на сайте
Супер, создало. Но не понимаю вообще как работает.
NazaДата: Понедельник, 07 Ноября 2011, 18:59 | Сообщение # 2608
GMUser
Сейчас нет на сайте
for (i=1; i<=200; i+=1) - цикл. Он выполняет следующий код пока i не будет равно 200. И каждый раз, i увеличивается на 1. Т.е, цикл работает 200 раз. Дальше, создаются переменные и равняются к нулю.

Сообщение отредактировал meax - Понедельник, 07 Ноября 2011, 19:00
MrIncrofДата: Понедельник, 07 Ноября 2011, 19:02 | Сообщение # 2609
Lite Programmer
Сейчас нет на сайте
Syank, for - оператор цикла
for(число с которого начинается отсчёт; до какого числа будет идти; сколько чисел проходит за кадр)
execute_string("s"+string(i)+" = 0"); - создаёт локальные переменные. То есть создаётся переменная s + i сверху, прибавляется +1. В данном случае переменные равны нулю

Добавлено (07.11.2011, 19:02)
---------------------------------------------
Эх, опоздал smile

GameMixДата: Понедельник, 07 Ноября 2011, 19:11 | Сообщение # 2610
старожил
Сейчас нет на сайте
Quote (Syank)
Супер, создало. Но не понимаю вообще как работает.

execute_string() - выполняет GML-код из строки. Соответственно, аргумент должен иметь строковый тип.

Данный мною код выполняет следующее:
  • запускает цикл от 1 до 200 - for (i=1; i<=200; i+=1) , т.к. нужно создать переменные от s1 до s200;
  • получает строку: "s" + текущее значение счётчика (i) - s1 + строка " = 0".

    В итоге получается, функция execute_string() выполняет следующий код:
    Code
    s1 = 0 // 1 - вместо 1 будет поочерёдно ставиться значение i


    Добавлено (07.11.2011, 19:11)
    ---------------------------------------------
    Надо же, сколько желающих biggrin

    Steel Standoff - 2D аркада.
    Мои статьи


    Сообщение отредактировал GameMix - Понедельник, 07 Ноября 2011, 19:13
  • SaiteiДата: Понедельник, 07 Ноября 2011, 22:14 | Сообщение # 2611
    старожил
    Сейчас нет на сайте
    Стыдно спрашивать, но всё-таки спрошу)
    Как называется пробел в GML?
    LunarPixelДата: Понедельник, 07 Ноября 2011, 22:26 | Сообщение # 2612
    старожил
    Сейчас нет на сайте
    Arz, сначала не понял о чем ты, заработался наверно biggrin
    Ну а если правильно понял, то vk_space


    ЙакудДата: Понедельник, 07 Ноября 2011, 23:20 | Сообщение # 2613
    участник
    Сейчас нет на сайте
    Arz, если тебе нужна строка, то chr(32);

    "Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
    .blanco 2.0
    SaiteiДата: Понедельник, 07 Ноября 2011, 23:43 | Сообщение # 2614
    старожил
    Сейчас нет на сайте
    Quote (LunarPixel)
    Arz, сначала не понял о чем ты, заработался наверно biggrin
    Ну а если правильно понял, то vk_space

    нет, это наверное у меня уже крыша едет хд
    Да, спасибо. Вылетает из головы
    Quote (Йакуд)
    Arz, если тебе нужна строка, то chr(32);

    нет, это не то. Но всё равно спасибо
    SyankДата: Вторник, 08 Ноября 2011, 07:20 | Сообщение # 2615
    участник
    Сейчас нет на сайте
    Создать кучу переменных этой функцией execude_string вышло, а потом эти переменные использовать где то...
    Code
    repeat(20){  
    var s i;
    i=1
    s=instance_create((room_width/32)*i,y,terrain_point)
    s.startpoint=execute_string("global.terrainpoint"+string(i))
    s.endpoint=execute_string("global.terrainpoint"+string(i)+1)
    i+=1}

    это в старте комнаты. Создаёт 20 объектов. И локальным переменным по порядку задаёт глобальную переменную... ну так вот:D
    Но при компиляции выходит вот что:
    Code

    ___________________________________________
    COMPILATION ERROR in string to be executed
    Error in code at line 1:
        global.terrainpoint1
                          ^
    at position 20: Assignment operator expected.

    ___________________________________________
    ERROR in
    action number 1
    of Other Event: Room Start
    for object terrain_memory:

    Error in code at line 1:
        global.terrainpoint1
                          ^
    at position 20: Assignment operator expected.

    После всё проходит, но создаёт не 20 объектов, а всего 1. Вообще там наверное 19 объектов создало бы, но это не имеет сути. На помощь!>_<
    GameMixДата: Вторник, 08 Ноября 2011, 07:52 | Сообщение # 2616
    старожил
    Сейчас нет на сайте
    Syank, первая ошибка понятно, почему. Но вот потом точно появится ещё одна:
    Code
    s.endpoint=execute_string("global.terrainpoint"+string(i)+1)

    "+1"...это не строка, поэтому будет вылетать ошибка.

    Опять же, для простоты кода можно давать значения получившимся глобальным переменным:
    Code
    repeat(20){   
    var s i;  
    i=1  
    s=instance_create((room_width/32)*i,y,terrain_point)  
    s.startpoint=execute_string("global.terrainpoint"+string(i)+"=0")  
    s.endpoint=execute_string("global.terrainpoint"+string(i)+"1=0") // здесь я тебя правильно понял?
    i+=1}

    На счёт "+1"... Я тебя не понял, что пытаешься получить. Посмотри на всякий случай строку, которую я прокомментировал.


    Steel Standoff - 2D аркада.
    Мои статьи
    SyankДата: Вторник, 08 Ноября 2011, 08:19 | Сообщение # 2617
    участник
    Сейчас нет на сайте
    global.terrainpoint уже имеет своё значение. а если я его опять присвою 0, то смысла не будет.
    а где +1 это вот что:
    если в первой строке допустим global.terrainpoint6=n, то в следующей где +1 я жду global.terrainpoint7=т
    хотя можно просто i+=1 поставить на строку выше.
    GameMixДата: Вторник, 08 Ноября 2011, 08:25 | Сообщение # 2618
    старожил
    Сейчас нет на сайте
    Syank, тогда можно так:
    Code
    repeat(20){    
    var s i;   
    i=1   
    s=instance_create((room_width/32)*i,y,terrain_point)   
    s.startpoint=execute_string("globalvar terrainpoint"+string(i))   
    s.endpoint=execute_string("globalvar terrainpoint"+string(i+1))
    i+=1}


    Steel Standoff - 2D аркада.
    Мои статьи
    SyankДата: Вторник, 08 Ноября 2011, 08:39 | Сообщение # 2619
    участник
    Сейчас нет на сайте
    Ошибок нет, но startpoint, на пример, не получает значение до этого созданной global.terpoint1 и т.д.(я в коде переменные сначала перепутал, не terrainpoint, а terpoint)
    Равна 0 и всё. Может событие создания в объекте который эти глобальные переменные держит, переменные ещё не создались. То есть я startpoint приравниваю к global.terpoint раньше чем global.terpoint получила своё значение(там случайное число выбирается)
    тоже самое и с локальной endpoint
    GameMixДата: Вторник, 08 Ноября 2011, 08:52 | Сообщение # 2620
    старожил
    Сейчас нет на сайте
    Syank, всё...Понял, что тебе нужно biggrin
    Код такой:
    Code
    repeat(20){     
    var s i;    
    i=1    
    s=instance_create((room_width/32)*i,y,terrain_point)    
    execute_string("s.startpoint = global.terpoint"+string(i))   
    execute_string("s.endpoint = global.terpoint"+string(i+1))  
    i+=1}


    Steel Standoff - 2D аркада.
    Мои статьи
    Поиск:

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