DIALOGUE. Продаем товар за деньги.

Предисловие

В этом уроке, мы создадим продавца, который будет продавать ракетницу за 10 монет.

Монетка

Но, перед началом, создадим монетку в DECORATE.

Создаем монетку

Скачайте спрайты монетки на MEGA. Добавьте их к себе в wad, не забывайте про маркеры S_START и S_END.

Затем, перепишите данный код к себе в DECORATE:

actor myCoin : Coin 10101
{
  +floatbob
  states
  {
  spawn:
    COIN ABCDEFGHIJ 3
    loop
  }
}

Большая часть кода понятна тем, кто читал предыдущие уроки (DECORATE. Cоздание декораций(1).).

Наша монетка наследуется от класса Coin:

actor myCoin : Coin 10101

Coin — это класс монетки из Strife. Я наследуюсь от него, потому что так проще, вместо того чтобы писать код монетки, можно изменить готовый код под себя, для этого и нужно наследование. Код актора Coin, доступен на вики.

Теперь, вы можете расставлять монетки по карте. Перейдем к созданию продавца.

Создаем продавца.

Перепишите следующий код к себе в DIALOGUE:

conversation
{
  actor = "Revenant";
  page
  {
    name = "Merchant";
    dialog = "What do you want";
    choice
    {
      text = "A Rocket Launcher";
      YesMessage = "Here you rocket launcher";
      GiveItem = "RocketLauncher";
      Cost
      {
        item = "myCoin";
        amount = 10;
      }
      nomessage = "You dont have 10 coins";
    }
}

В Dialogue есть способ запросить цену за вариант ответа (блок choice). Это делается при помощи блока cost.

Cost
{
  item = "myCoin";
  amount = 10;
}
  • item — указывает предмет, который заберут (наши монеты).
  • amount — указывает количество этого предмета.

Если у игрока, меньше 10 монет, то выводится сообщение nomessage.

Сообщение nomessage

А, если у игрока больше 10 монет, то выводится сообщение YesMessage, и в обмен на 10 монет — выдается ракетница.

YesMessage = "Here you rocket launcher";
GiveItem = "RocketLauncher";
  • YesMessage — указывает сообщение
  • GiveItem — указывает предмет, который выдается игроку.

С кодом разобрались, время тестить.

Итоговый результат.

Пожалуйста отключи блокировщик рекламы, или внеси сайт в белый список!

Please disable your adblocker or whitelist this site!