Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
[PTS] диалоги при наличии предметов
#1
Всем привет!
Подскажите пожалуйста хочу сделать на Gracia Final что быв зависимости от определенного итема\левла менялся диалог.

Вот мой код:
[SRC="c++"]class test_npc{


handler:
EventHandler TALKED( talker )
{
if(talker.level >= 80 )
{
ShowPage(talker, "dialog1.htm" );
}

if( OwnItemCount(talker, 4036) >= 1 )
{
ShowPage(talker, "dialog2.htm" );
}

if( OwnItemCount(talker, 4037) >= 1 )
{
ShowPage(talker, "dialog3.htm" );
}

if( OwnItemCount(talker, 4038) >= 1 )
{
ShowPage(talker, "dialog4.htm" );
}
}
}[/SRC]

мне нужно что бы при наличии итема 4037 открывался dialog2.htm если 4038 то dialog3.htm
Этот код открывает нужную страницу но сначала открывает диалог с 4037 а потом сразу 4038 и так далее

Есть еще один вопрос, как задать радиус работы диалога с нпц то бы при отходе от нпц он переставал работать или закрывался
Ответ
#2
Код:
class test_npc{


handler:
  EventHandler TALKED( talker )
  {


   if( OwnItemCount(talker, 4036) >= 1 )
    {
        ShowPage(talker, "dialog2.htm" );
    }

    else if( OwnItemCount(talker, 4037) >= 1 )
    {
        ShowPage(talker, "dialog3.htm" );
    }

    else if( OwnItemCount(talker, 4038) >= 1 )
    {
        ShowPage(talker, "dialog4.htm" );
    }

     else if(talker.level >= 80 )
    {
        ShowPage(talker, "dialog1.htm" );
   }

  }
  }
Ответ
#3
Тут либо else либо return.
[Изображение: 4e38c909fcd08c5fcdf363b54a62.png]
Ответ
#4
Спасибо!
А как можно сделать что бы диалог переставал работать или закрывался если отошел от нпц если не закрывать диалог то он будет работать хоть в другом конце карты.
Ответ
#5
проверять в обрабатываемой ссылке из диалога текущее расстояние от нпс до игрока
функции проверки расстояния в АИ есть, токльо ща не помню уже их название.
Ответ
#6
Имеется вот такой диалог, сейчас снимает 1 адену только за Reply = 1
как сделать что бы снималось за любой Reply не прописывая каждому OwnItemCount(talker, @adena) > 1 и DeleteItem


[SRC="c++"]
if( ask == -8 && reply == 1 && OwnItemCount(talker, @adena) > 1 )
{
CastBuffForQuestReward(talker, 753664002);
DeleteItem1 (talker, @adena, 1);
ShowPage (talker, "blabla_dialog1.htm");
return;
}
else if( ask == -8 && reply == 2 )
{
CastBuffForQuestReward(talker, 753664001);
ShowPage (talker, "blabla_dialog1.htm");
return;
}
else if( ask == -8 && reply == 3 )
{
CastBuffForQuestReward(talker, 754647042);
ShowPage (talker, "blabla_dialog1.htm");
return;
}[/SRC]
Ответ
#7
[SRC="c++"]if(ask == -8)
{
if (OwnItemCount(talker, @adena) < 1)
{
ShowPage(talker, "no_money.htm");
return;
}

DeleteItem1 (talker, @adena, 1);

if (reply == 1)
{
CastBuffForQuestReward(talker, 753664002);
}
else if (reply == 2)
{
CastBuffForQuestReward(talker, 753664001);
}
else if (reply == 3)
{
CastBuffForQuestReward(talker, 754647042);
}

ShowPage(talker, "blabla_dialog1.htm");
return;
} [/SRC]
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Правильные значения order для предметов Double 9 3,791 01-01-2014, 07:33 PM
Последний пост: DiagoD
  Продажа предметов Артёмка 10 2,971 01-23-2012, 11:35 AM
Последний пост: LestatL
  Придумать диалоги для торговцев Black Angel 4 3,598 03-18-2008, 08:02 PM
Последний пост: Black Angel

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)