Вопрос - Ответ (Game Maker)
|
|
|
Гриша_Быстров | Дата: Воскресенье, 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 нет?!
|
|
| |
Гриша_Быстров | Дата: Воскресенье, 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) --------------------------------------------- Эх, опоздал
|
|
| |
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) --------------------------------------------- Надо же, сколько желающих
Steel Standoff - 2D аркада. Мои статьи
Сообщение отредактировал GameMix - Понедельник, 07 Ноября 2011, 19:13 |
|
| |
Saitei | Дата: Понедельник, 07 Ноября 2011, 22:14 | Сообщение # 2611 |
старожил
Сейчас нет на сайте
| Стыдно спрашивать, но всё-таки спрошу) Как называется пробел в GML?
|
|
| |
LunarPixel | Дата: Понедельник, 07 Ноября 2011, 22:26 | Сообщение # 2612 |
старожил
Сейчас нет на сайте
| Arz, сначала не понял о чем ты, заработался наверно Ну а если правильно понял, то 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, всё...Понял, что тебе нужно Код такой: 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 аркада. Мои статьи
|
|
| |