spr_+argument0 = spr_mp446
|
|
миха | Дата: Среда, 30 Мая 2012, 08:16 | Сообщение # 1 |
почти ветеран
Сейчас нет на сайте
| Здарова, Братиши ! В общем тут ниже код, в котором argument0=mp446, дак вот проблема в том, что Game Maker видит mp446 переменной, и выдает ошибку. Мне нужно чтобы spr_ соединился с argument0, и получиолось spr_mp446.
weapon[i]=spr_+argument0 wdr[i]=spr_hero_+argument0
Плиз, помогите!!! Очень надо... для чего не скажу.
|
|
| |
TakBar | Дата: Среда, 30 Мая 2012, 08:27 | Сообщение # 2 |
постоянный участник
Сейчас нет на сайте
| Quote (миха) argument0=mp446 Может быть, правильнее так:
Quote (миха) weapon[i]=spr_+argument0 wdr[i]=spr_hero_+argument0 Попробуй Code weapon[i]='spr_'+string(argument0) wdr[i]='spr_hero_'+string(argument0)
Game Maker. Урок по созданию игры, как Веселая ферма Нет у меня ничего. Отвечать не буду: нет меня.
Сообщение отредактировал TakBar - Среда, 30 Мая 2012, 08:29 |
|
| |
миха | Дата: Среда, 30 Мая 2012, 08:44 | Сообщение # 3 |
почти ветеран
Сейчас нет на сайте
| TakBar, тогда он будет вписывать в массив строковое значение. И выводиться оно будет как текст. Добавлено (30.05.2012, 08:44) --------------------------------------------- А еще вот проблема: Quote for (i=0 ; i>5 ; i+=1) { {if weapon[i] =-1 {weapon[i]=spr_mp446 wdr[i]=spr_hero_mp446 sound_play(s_pickup_weapon) } } }
то, что я вам показывал до этого - функция. Вот я попробовал упростить (просто для экспиримента), но всеравно ничего не работает.
|
|
| |
TakBar | Дата: Среда, 30 Мая 2012, 08:53 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Quote (миха) TakBar, тогда он будет вписывать в массив строковое значение. И выводиться оно будет как текст. Пробовал так сделать? Возможно, я не так понял, но у меня все работает Добавлено (30.05.2012, 08:53) --------------------------------------------- Если weapon[i] - объект, тогда Code weapon[i].sprite_index=spr_mp446
Game Maker. Урок по созданию игры, как Веселая ферма Нет у меня ничего. Отвечать не буду: нет меня.
|
|
| |
GameMix | Дата: Среда, 30 Мая 2012, 09:20 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| миха, можно так сделать: При обращении к скрипту, в скобках написать 'mp446'; В скрипте выполнять следующее:Code execute_string("weapon[i]=spr_"+argument0+"; wdr[i]=spr_hero_"+argument0);
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
YellowAfterlife | Дата: Среда, 30 Мая 2012, 10:58 | Сообщение # 6 |
Сейчас нет на сайте
| execute_string() - плохая идея, из-за медленной скорости работы, и в текущих версиях GameMaker эта функция уже не поддерживается. Имеет смысл использовать что-то вроде этой системы для нахождения ресурсов по имени.
|
|
| |
миха | Дата: Среда, 30 Мая 2012, 11:14 | Сообщение # 7 |
почти ветеран
Сейчас нет на сайте
| Quote Если weapon[i] - объект, тогда weapon[i] - это массив, содержащий 4 позиции (включая 0), который хранит имена 5 спрайтов.
Люди... ну я не знаю. Пока ничего и никак...Добавлено (30.05.2012, 11:14) --------------------------------------------- YellowAfterlife, ммм.... если я б знал инглиш...
|
|
| |
Saladin | Дата: Среда, 30 Мая 2012, 11:35 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| У тебя всего пять ячеек массива. "Суффикс" или что оно там такое содержит помимо цифр еще и буквы, что делает практически невозможным перебор с помощью цикла. Какой смысл в этих извращенных манипуляциях? Не проще ли использовать строго нумерованный имаж_индекс и всего один спрайт? Зачем специально усложнять себе жизнь?
Анбаннэд. Хэлоу эгин =)
|
|
| |
GameMix | Дата: Среда, 30 Мая 2012, 11:50 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Saladin, думаю, спрайты там анимированы, поэтому не прокатывает.
Steel Standoff - 2D аркада. Мои статьи
|
|
| |
Saladin | Дата: Среда, 30 Мая 2012, 12:05 | Сообщение # 10 |
заслуженный участник
Сейчас нет на сайте
| Ну спрайт героя думаю анимирован, а спрайт самого оружия? Что там анимировать? Передергивание затвора? Автоматизировать простейшую операцию скриптом, когда ее можно так же легко запихать в свич/кейс, выглядит мягко говоря странно. Вот если бы таких "пушек" было полсотни, это да, хотя все равно вручную придется индексы каждой писать. Не понимаю...
Анбаннэд. Хэлоу эгин =)
|
|
| |
миха | Дата: Среда, 30 Мая 2012, 12:33 | Сообщение # 11 |
почти ветеран
Сейчас нет на сайте
| Quote for (i=0 ; i>5 ; i+=1) { {if weapon[i] =-1 {weapon[i]=spr_mp446 wdr[i]=spr_hero_mp446 sound_play(s_pickup_weapon) } } }
Weapon - массив инвентаря!!! Weapon[0] - это первый слот дял оружия, weapon[1] это второй слот оружия и т.д. Следовательно, этот скрипт выбирает ячейку инвентаря для собранного предмета.
|
|
| |
Saladin | Дата: Среда, 30 Мая 2012, 14:21 | Сообщение # 12 |
заслуженный участник
Сейчас нет на сайте
| Тогда поставим вопрос ребром. Какое отношение имеет ЭТО: Quote (миха) weapon[i]=spr_+argument0 wdr[i]=spr_hero_+argument0 к вот ЭТОМУ: Quote (миха) for (i=0 ; i>5 ; i+=1) { {if weapon[i] =-1 {weapon[i]=spr_mp446 wdr[i]=spr_hero_mp446 sound_play(s_pickup_weapon) } } } ?
Анбаннэд. Хэлоу эгин =)
|
|
| |
Фил | Дата: Среда, 30 Мая 2012, 15:31 | Сообщение # 13 |
Томатный революционер
Сейчас нет на сайте
| В самое начало вставляй этот код: Code sprite = ds_list_create(); var t, k; t = 0; while (true) { k = sprite_get_name(t); if (k = '<undefined>') break; ds_list_add(sprite, sprite_get_name(t)); t += 1; } Использовать так: Code weapon[i]=ds_list_find_index(sprite, 'spr_' + string(argument0)); wdr[i]=ds_list_find_index(sprite, 'spr_hero_' + string(argument0));
|
|
| |
YellowAfterlife | Дата: Среда, 30 Мая 2012, 15:54 | Сообщение # 14 |
Сейчас нет на сайте
| Quote (Фил) В самое начало вставляй этот код: Метод неоптимален: * Поиск по ds_list занимает больше времени, нежели доступ к ds_map (cм. пример в записи, на который ссылается мое сообщение) * Подразумевает определенный перфекционизм относительно распределения ресурсов - если один из спрайтов был добавлен, а позже удален, то метод не найдет ни один спрайт с индексом выше.
|
|
| |
Фил | Дата: Среда, 30 Мая 2012, 16:24 | Сообщение # 15 |
Томатный революционер
Сейчас нет на сайте
| 1) Можно заменить и на map. Не суть. 2) Очистить list. Выполнить код заново.
|
|
| |
миха | Дата: Четверг, 31 Мая 2012, 04:40 | Сообщение # 16 |
почти ветеран
Сейчас нет на сайте
| Фил, помогло!
|
|
| |