lvl up менеджер (проблема)

agnitium

Прославленный
Проверенный
Сообщения
698
Розыгрыши
0
Репутация
720
Реакции
337
Баллы
1 473
Доброго времени суток! решил сделать нпц, который за определенный предмет поднимет уровень.
Как сделать, что бы он нормально выдавал экспу? сборка ванги 1.2.9.8
вижу, что идет преполнение, но как править?
Написал аи, сделал хтм файл, при разговоре нпц с чаром ничего не происходит в игре сервер пишет такую штуку.
exp overflow user[123] [-2147483648] chagned to [0]
в игре пишет:
you have earned 2147483647 experience
если убить любого моба, то начинает давать по несколько %
а сервер начинает писать
exp overflow user[123] [-2147483648] chagned to [2] ( где 2 увеличивающееся число)

NASC код:
Код:
class 1 lvl_up_manager : citizen{
parameter:
  string  fnHi = "lvluphi.htm";
  string  fnOk = "lvlupgive.htm";
  string  fnCancel = "lvpupcancel.htm";
  int     ItemId = 57;
  int     AmountItem = 1;


handler:
  EventHandler MENU_SELECTED( talker, ask, reply )
  {
    if( ask == -3 && reply == 2 )
    {
      if( myself::OwnItemCount( talker, ItemId ) >= AmountItem )
      {
        myself::DeleteItem1( talker, ItemId, AmountItem );
        myself::IncrementParam( talker, 0, 2147483647 );
        myself::ShowPage( talker, fnOk );
      }
      else
      {
        myself::ShowPage( talker, fnCancel );
      }
    }
  }
}

Компил:

Код:
class 1 lvl_up_manager : citizen
parameter_define_begin
    string fnHi "lvluphi.htm"
    string fnOk "lvlupgive.htm"
    string fnCancel "lvpupcancel.htm"
    int ItemId 57
    int AmountItem 1
parameter_define_end
handler 32 89    //  MENU_SELECTED
    variable_begin
        "talker"
        "ask"
        "reply"
        "myself"
        "_choiceN"
        "_code"
        "_from_choice"
    variable_end

    push_event    //  ask
    push_const 160
    add
    fetch_i4
    push_const 3
    negate
    equal
    push_reg_sp
    fetch_i
    branch_false L3
    push_event    //  reply
    push_const 164
    add
    fetch_i4
    push_const 2
    equal
    and
L3
    branch_false L2
L1
    push_event    //  myself
    push_const 704
    add
    fetch_i
    push_event    //  talker
    push_const 40
    add
    fetch_i
    push_parameter ItemId
    func_call 184680579    //  func[OwnItemCount]
    shift_sp -2
    push_parameter AmountItem
    greater_equal
    branch_false L5
L4
    push_event    //  myself
    push_const 704
    add
    fetch_i
    push_event    //  talker
    push_const 40
    add
    fetch_i
    push_parameter ItemId
    push_parameter AmountItem
    func_call 184746114    //  func[DeleteItem1]
    shift_sp -3
    shift_sp -1
    push_event    //  myself
    push_const 704
    add
    fetch_i
    push_event    //  talker
    push_const 40
    add
    fetch_i
    push_const 0
    push_const 2147483647
    func_call 184746219    //  func[IncrementParam]
    shift_sp -3
    shift_sp -1
    push_event    //  myself
    push_const 704
    add
    fetch_i
    push_event    //  talker
    push_const 40
    add
    fetch_i
    push_parameter fnOk
    func_call 184680516    //  func[ShowPage]
    shift_sp -2
    shift_sp -1
    jump L6
L5
    push_event    //  myself
    push_const 704
    add
    fetch_i
    push_event    //  talker
    push_const 40
    add
    fetch_i
    push_parameter fnCancel
    func_call 184680516    //  func[ShowPage]
    shift_sp -2
    shift_sp -1
L6
L2
handler_end

class_end
 
Последнее редактирование:

Не помню есть ли у него в этой версии реализация новой функции:
Код:
gg::SetPCLevel( talker, 1 ); // func_call 218234898    //  func[SetPCLevel]

Если так как ты делаешь:
Код:
level80 = 1553287149;
level40 = 15422851;
level60 = 126509030;
level70 = 429632402;
Но тут ты добавляешь експу, так что сперва тебе надо дать игроку 1 експу а потом сразу на необходимый лвл.
 
Последнее редактирование:
Назад
Сверху Снизу