From Stealth Client

Jump to: navigation, search


N

NRstkLayer

function NRstkLayer() : Byte

Возвращает номер слоя 0x1B - Товарный бекпак 2 у вендора (NPC Buy no restock container).

У обычных игровых чаров контейнер на этом слое отсутствует, т.е. ObjAtLayer(NRstkLayer) = 0.

Пример 1:

if ObjAtLayer(NRstkLayer) > 0 then 
  AddToSystemJournal('NRstkLayer ID: '+IntToStr(ObjAtLayer(NRstkLayer)));

NS

function NS : Word;

Returns reagent type: Nightshade

NSCount

function NSCount : Word;

Returns Nightshade count in backpack.


NeckLayer

function NeckLayer() : Byte

Возвращает номер слоя 0x0A - Ожерелье, Горжетка (Neck).

Пример 1:

if ObjAtLayer(NeckLayer) > 0 then 
  AddToSystemJournal('Neck ID: '+IntToStr(ObjAtLayer(NeckLayer)));

Пример 2:

{Если на слое чтото есть, то снимаем}
if ObjAtLayer(NeckLayer) <> 0 then
  begin
    unequip(NeckLayer);
    wait(1000);
  end;

NewMoveXY

function NewMoveXY(Xdst, Ydst : Word; Optimized : Boolean; Accuracy : Integer; Running : Boolean) : Boolean

Функция просчитывает путь в точку и движется к ней.

Преимущества по сравнению с Doc:RU/Api/MoveXY:

1) Огромное уменьшение времени на просчет длинного пути за счет того, что маршрут пересчитывается не на каждом шаге, а один раз и до препятствия.

2) Новая система шагов, дает некоторый прирост скорости за счет оптимизации.

3) Авто-открывание дверей (при включенной опции) (добавить ссылки!)

4) Поддержка опций (добавить ссылки!)

//Xdst, Ydst// - координаты точки, к которой нужно прийти.

//Optimized// - при //True// будет производиться более сложный просчет пути, поэтому рекомендуется включать только на дистанции до 200 тайлов. Параметр Optimizd оставлен для совместимости, см. Doc:RU/Api/MoveHeuristicMult

//Accuracy// - точность приближения: 0 - прямо на точку, 1 - рядом в радиусе одного тайла и т.д. Длина ограничена 1000 тайлами.

//Running// - бежать/идти в точку.

Если путь был успешно пройден, то функция вернет //True//, иначе //False//.

Данная функция не подходит для шардов, где для выхода с корабля требуется пройти на трап. В этом случае нужно стать перед трапом и использовать Doc:RU/Api/Step в направлении открытого трапа

Пример:

  NewMoveXY(100,100,True,0,True);

NumGumpButton

function NumGumpButton(GumpIndex, Value : Integer) : Boolean

Не работает как ловушка на гамп, а только для обработки уже пришедших гампов.

Принцип работы такой же, как и у Doc:RU/Api/WaitGump, с тем лишь отличием, что нет перебора ВСЕХ гампов в списке, а перебираются кнопки только того гампа, индекс которого указан в GumpIndex

Если такая кнопка не найдена - то ничего серверу не отсылается, а функция вернет False.


Пример:

{кусок крафтерского скрипта. 
Сначала ставится ловушка на таргет на инготы на полу, 
потом использование тинкертулзов для вызова гампа,
затем замена значения TextEntry гампа, 
затем жмется кнопка гампа.}
  WaitTargetGround($1BF5); 
  a := GetGumpsCount; 
  UseObject(FindType($1EB9,backpack));
  while a = GetGumpsCount do
    Wait(50);
  NumGumpTextEntry(GetGumpsCount-1,513, '30');
  NumGumpButton(GetGumpsCount-1,7956);

NumGumpCheckBox

function NumGumpCheckBox(GumpIndex, CBID, Value : Integer) : Boolean

Не работает как ловушка на гамп, а только для обработки уже пришедших гампов.

Принцип работы такой же, как и у Doc:RU/Api/GumpAutoCheckBox, с тем лишь отличием, что нет перебора ВСЕХ гампов в списке, а перебираются CheckBox только того гампа, индекс которого указан в GumpIndex

Если такой CheckBox не найдена, то функция вернет False.

При этом ответ на гамп серверу НЕ отправляется! Это надо сделать через Doc:RU/Api/WaitGump либо Doc:RU/Api/NumGumpButton

Пример:

  WaitTargetGround($1BF5); 
  a := GetGumpsCount; 
  UseObject(FindType($1EB9,backpack));
  while a = GetGumpsCount do
    Wait(50);
  NumGumpCheckBox(GetGumpsCount-1,1537, 1);
  NumGumpButton(GetGumpsCount-1,'7956');

NumGumpRadiobutton

function NumGumpRadiobutton(GumpIndex : Word; RadiobuttonID,Value : Integer): Boolean;

NumGumpTextEntry

function NumGumpTextEntry(GumpIndex, TextEntryID : Integer; Value : String) : Boolean

Не работает как ловушка на гамп, а только для обработки уже пришедших гампов.

Принцип работы такой же, как и у Doc:RU/Api/GumpAutoTextEntry, с тем лишь отличием, что нет перебора ВСЕХ гампов в списке, а перебираются TextEntry только того гампа, индекс которого указан в GumpIndex

Если такой TextEntry не найдена, то функция вернет False.

Пример:

{кусок крафтерского скрипта. 
Сначала ставится ловушка на таргет на инготы на полу, 
потом ловушка на входящий гамп, для замены значения TextEntry, 
затем ловушка на гамп на кнопку, 
и только потом использование тинкертулзов для вызова гампа.}
  WaitTargetGround($1BF5); 
  a := GetGumpsCount; 
  UseObject(FindType($1EB9,backpack));
  while a = GetGumpsCount do
    Wait(50);
  NumGumpTextEntry(GetGumpsCount-1,513, '30');
  NumGumpButton(GetGumpsCount-1, 7956);