Среда, 21 Апреля 2021, 13:01

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » spr_+argument0 = spr_mp446 (Ну незнаю как подругому назваьб xD...)
spr_+argument0 = spr_mp446
михаДата: Среда, 30 Мая 2012, 08:16 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Здарова, Братиши biggrin ! В общем тут ниже код, в котором 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

Может быть, правильнее так:
Code

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, тогда он будет вписывать в массив строковое значение. И выводиться оно будет как текст.

Пробовал так сделать? Возможно, я не так понял, но у меня все работает smile

Добавлено (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
    заслуженный участник
    Сейчас нет на сайте
    Ну спрайт героя думаю анимирован, а спрайт самого оружия? Что там анимировать? Передергивание затвора? smile
    Автоматизировать простейшую операцию скриптом, когда ее можно так же легко запихать в свич/кейс, выглядит мягко говоря странно. Вот если бы таких "пушек" было полсотни, это да, хотя все равно вручную придется индексы каждой писать. Не понимаю...


    Анбаннэд. Хэлоу эгин =)
    михаДата: Среда, 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
    почти ветеран
    Сейчас нет на сайте
    Фил, помогло!
    Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » spr_+argument0 = spr_mp446 (Ну незнаю как подругому назваьб xD...)
    • Страница 1 из 1
    • 1
    Поиск:

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