Page 1 of 2
Нужна помощь со скриптом.
Posted: 06.12.2011 13:46
by Stels
Ребят, есть скрипт, где персонаж выбирает нпц по ID и выберает определенную строчку в контекстном меню нпц типа buy, sell
Проблема вот в чем: я перещел на другой сервер, а там нпц постоянно заного спавнятся и стоит лишь настроить скрипт, как уже появляется новы нпц...
можно ли каким-нибудь образом сделать, что бы он выбирал нужного нпц не по id а по приписке в имени? к примеру, Tinker
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 13:47
by MuDaCk
можно.
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 13:47
by Stels
а каким образом?

Re: Нужна помощь со скриптом.
Posted: 06.12.2011 13:51
by MuDaCk
гетнейм и БМсёрч)
{Player Title}
function GetCharTitle: String; // Получения тайтла с папердола своего чара, возвращает приписку и весь остальной текст, длиной до 60 байт
Пример:
Код:
Addtosystemjournal(GetCharTitle);
Результат::
2:27:37 [KopUshKa_15]: KopUshKa, Legendary Miner
Для любых других НПЦ, у которых есть папердол:
при коннекте берется имя неписи, пишется в свойство, которое видно через закладку World и которое можно взять через GetName.
Если нужен тайтл с папердолла - значит шлете UseObject на непись, и ставите цикл типа
Код:
S:=GetName($xxxxxxxx);
while GetName($xxxxxxxx) = S do wait(xxx)';
цикл для того, чтобы дождаться когда придет пакет папердолла на непись. Когда он приходит - title пишется поверх старого имени в свойства, и берете его так же через GetName.
Соответственно кусок получения папердолла будет выглядеть как-то так:
Код:
S:=GetName($xxxxxxxx);
UseObject($xxxxxxxx);
while GetName($xxxxxxxx) = S do wait(xxx)';
S:=GetName($xxxxxxxx);
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 13:57
by Stels
Это все хорошо, но в команду S:=GetName($xxxxxxxx) нужно вписать ID, а мне нужно чтобы он по типу находил нпц и сам перебирал их имена, до тех пор пока не наткнется на нужного.
Спасибо за эту подсказку - с этим куском ясно, осталось, что бы по типу находил нпц, как это можно реализовать?
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:00
by MuDaCk
также как ты по типу находишь предмет в бекпаке
только надо делать двойное условие - чтобы кол-во найденых Ид было больше 0 и чтобы имя было с припиской нужной)
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:07
by Stels
Спасибо большое!
А на каком он растоянии ищет? и можно ли вручную указать это растояние?
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:09
by MuDaCk
Stels wrote:Спасибо большое!
А на каком он растоянии ищет? и можно ли вручную указать это растояние?
Code: Select all
FindDistance := 2;
FindVertical := 3;
значения подставь свои)))
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:13
by Stels
Большое спасибо. сейчас попробуй подправить свой скрипт и если не выйдет обращусь снова))
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:21
by Stels
MuDaCk wrote:также как ты по типу находишь предмет в бекпаке
только надо делать двойное условие - чтобы кол-во найденых Ид было больше 0 и чтобы имя было с припиской нужной)
такс, а если у нпц может быть два типа?
это нужно просто два раза искать тип? сначала один и если не нашел то второй?
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:39
by Stels
findtype(typeVendore, ground)
По этой команде ругается на typeVendore, здесь нужно оставить имено это слово?

)) или указать тип вручную? Хотя он ругается и на то и на то

Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:42
by MuDaCk
свой тип конечно же

Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:48
by Stels
MuDaCk wrote:свой тип конечно же

Я с этого и начал, но он мне выдает следующее: Type mismatch и показывает на конец строки перед точкой с запятой =\
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:53
by CFA
GetName больше так не работает. Вместо него надо использовать функцию GetTitle(id : Cardinal) : String
Re: Нужна помощь со скриптом.
Posted: 06.12.2011 14:55
by Stels
CFA wrote:GetName больше так не работает. Вместо него надо использовать функцию GetTitle(id : Cardinal) : String
Спасибо, помогло, а то только хотел написать, что он зависает на строчке с циклом

)))