PDA

Просмотр полной версии : [Скрипт] Динамический байпасс


NoNameNPC1
23.11.2017, 16:22
// Привет))) помогите пж))

//(в самом низу строчка для примера)

//Я просматривал всякие примеры по инету и поизменяв налепил вот такое
//Подхожу к нпц , открываю диалог, включаю скрипт и он выбирает строчку
//( если у нее начало bypass -h) , ну и естественно выбирает первое возможное, плохо ,
// но уже ничего ибо всё же он сам научился определить что прописано дальше в байпасе.
//На сервере,как заметил , изменяются "дефис" и/или "цифры в середине"

// "bypass -h teleport_1664800768_15_57" ,

//"bypass -h teleport_-1664800768_15_57"

//И я не могу сюда добавить проверку окончания (( чтоб он искал
// от bypass -h до " msg="811;the ant nest"

var ResultBypass,tmp_bypass:string;
var i_bypass,k:integer;
procedure teleport;

begin
ResultBypass:='';
tmp_bypass := Engine.DlgText;
i_bypass:=pos('bypass -h',tmp_bypass);
i_bypass:=i_bypass + 10;
while not (tmp_bypass[i_bypass] = ' ')
and not (tmp_bypass[i_bypass] = '"') do

begin
ResultBypass:= ResultBypass + tmp_bypass[i_bypass];
i_bypass:= i_bypass+1;
end;

Engine.BypassToServer(ResultBypass, True);
print (ResultBypass);
end;

begin
teleport;
end.



//<a action="bypass -h teleport_1664800768_15_57" msg="811;the ant nest">the ant nest - 2100 adena </a>

ScythLab
27.11.2017, 21:30
У меня всегда мозг рвало от кода

not (tmp_bypass[i_bypass] = ' ')
and not (tmp_bypass[i_bypass] = '"')
Чем не устраивает запись? Зачем все эти излишние НЕ?

(tmp_bypass[i_bypass] <> ' ')
and (tmp_bypass[i_bypass] <> '"')
"not" уместен и оправдан в таком варианте:

not (tmp_bypass[i_bypass] in [' ', '"'])

В целом код рабочий (не считая проверок), а в частности нужно отлаживать, что конкретно в каких переменных.