Я вижу, что многие заинтересовались командой взятия в лок. Некоторые даже её раздобыли, но не до конца поняли как её
расшифровать. Ну чтож, давайте вместе рассмотрим эту команду. Спешу вас обрадовать, данная статья будет самой маленькой
по объёму из всех написанных (хех, не всегда же писать громадные статьи). Подробно объяснять не буду, всё видно на
видео:
[Ссылки могут видеть только зарегистрированные пользователи. ]
Небольшой комментарий. Загружаем звёздную карту, запускаем WP, включаем захват пакетов, берём одного стрюнера в лок,
тут же берём другого стрюнера в лок, останавливаем захват пакетов. Ищем команду - пакет от клиента к серверу. В моём
случае их было всего два, поэтому проблем с поиском не было. Как только нашли нужную команду, отсылаем её на сервер,
при этом лок перебрасывается с одного стрюна на другого. Итак, вот и сама команда взятия в лок:
53454C7C39393830303438300A00 (шестнадцатеричный код)
SEL|99800480.. (символьный код)
Символьный код проще для понимания, поэтому рассмотрим именно его.
Как видите тут даже и рассматривать нечего, после SEL идёт восьмизначный ID стрюнера (как показывает практика, в основном
меняются лишь последние три цифры).
В качестве домашнего задания, попробуйте самостоятельно взять кого-нибудь в лок (естественно с помощью WP), начните со
стрюнеров, потом попробуйте взять в лок лордакию, саймона, мордона и наконец игрока своей корпорации, сравните их ID.
На этом данную статью заканчиваю. Изучайте, экспериментируйте и ждите следующих глав.
В качестве домашнего задания, попробуйте самостоятельно взять кого-нибудь в лок (естественно с помощью WP), начните со
стрюнеров, потом попробуйте взять в лок лордакию, саймона, мордона и наконец игрока своей корпорации
мое ДЗ - скрипт Автолок.
Инициируется кнопкой Обогащение сырья (ктати предложите кто для лока нормальную кнопку...)
Под`едьте к толпе мобов, нажмите кнопку "Обогащение" и смотрите что будет.
Код:
// лок цели которая движется
var tmpStr,tmpstrmob,_7C,_OAOO: string;
LabConst,Move:string;
LStr:integer;
function OnTimer(var ntimer,count:integer):boolean;
begin
// формируем строку лока найденного id и передаем серверу
gSys.SetTimer(ntimer,0);
if ntimer = 1 then gSys.SendS(HStr('53454C7C')+tmpstrmob+_OAOO);
end;
procedure OnCreate;
begin
LabConst:=HSTR('4C41427C5550447C4745540A00');
_OAOO:=HSTR('0A00');
_7C :=HSTR('7C');
Move:=HSTR('307C317C');
end;
procedure OnDestroy;
begin
end;
begin
if (not _gFromServ) and (Pos(LabConst,_gBuff)=1) then
begin
// если открыто окно перерабоки сырья то запускаем таймер на лок...
gSys.SetTimer(1,150+Round(200*Random()));
end;
//здесь запоминаем id чего либо шевелящегося вокруг нас
if (_gFromServ) and (Pos(Move,_gBuff)=1) then
begin
LStr := length(_gBuff);
tmpstr:=Copy(_gBuff,Pos(Move,_gBuff)+4,LStr);
tmpstrmob:=Copy(tmpstr,1,Pos(_7C,tmpstr)-1);
end;
end.
Инициируется кнопкой Обогащение сырья (ктати предложите кто для лока нормальную кнопку...)
Под`едьте к толпе мобов, нажмите кнопку "Обогащение" и смотрите что будет.
Код:
// лок цели которая движется
var tmpStr,tmpstrmob,_7C,_OAOO: string;
LabConst,Move:string;
LStr:integer;
function OnTimer(var ntimer,count:integer):boolean;
begin
// формируем строку лока найденного id и передаем серверу
gSys.SetTimer(ntimer,0);
if ntimer = 1 then gSys.SendS(HStr('53454C7C')+tmpstrmob+_OAOO);
end;
procedure OnCreate;
begin
LabConst:=HSTR('4C41427C5550447C4745540A00');
_OAOO:=HSTR('0A00');
_7C :=HSTR('7C');
Move:=HSTR('307C317C');
end;
procedure OnDestroy;
begin
end;
begin
if (not _gFromServ) and (Pos(LabConst,_gBuff)=1) then
begin
// если открыто окно перерабоки сырья то запускаем таймер на лок...
gSys.SetTimer(1,150+Round(200*Random()));
end;
//здесь запоминаем id чего либо шевелящегося вокруг нас
if (_gFromServ) and (Pos(Move,_gBuff)=1) then
begin
LStr := length(_gBuff);
tmpstr:=Copy(_gBuff,Pos(Move,_gBuff)+4,LStr);
tmpstrmob:=Copy(tmpstr,1,Pos(_7C,tmpstr)-1);
end;
end.
блин чтото я не понел как его заюзать как я тока не пробовал)обьсниш?
А можно ли как нить сделать так чтобы пока не убьешь 1 моба цель не переходила на другую.
Ну в данной интерпретации скрипт учебный. Повесьте на другую комадну и будет просто брать в лок... Если профессионально делать - то я пока ничего лучшего не придумал как делать свою форму в dll и там разместить несколько интерфейсных кнопок для скрипта WP - на автолок, компрессию груза, etc
Задаются константы (функционально). Можно было бы наверное (не пробовал смотреть - поддерживается или нет секция const в скриптах WP - но я думаю это не принципиально как задавать константы)
В частности :
LabConst ('4C41427C5550447C4745540A00'); - спамится клиентом когда открыто окно лаборатории
Моve - ('307C317C') - так передается от сервера информация (начало пакета) что ктото переместился...
7С - это стандартный разделитель в DO аргументов
A000 - так завершаются многие команды, в частности команда SEL - лока
Кстати я не совсем понял, зачем тебе процедуры OnCreate и OnDestroy. Ты ведь не создаёшь собственных объектов.
А в общем не плохо, только таким скриптом не реально кого-то слить, лок постоянно перепрыгивает
Кстати я не совсем понял, зачем тебе процедуры OnCreate и OnDestroy. Ты ведь не создаёшь собственных объектов.
А в общем не плохо, только таким скриптом не реально кого-то слить, лок постоянно перепрыгивает
Это же учебная демка, хотя и в ГГ может применяться если в ручную проходить. У меня на другой команде висит лок. А вообще если развивать тему, надо делать лок чтобы он по выбору брал в цель 1. НПЦ 2. "Своих" игроков 3. Враждебных игроков. Но это уже как говорится другая история.
по поводу креате и дестрой - у меня script tester ругался когда их не было. По сути они то хлеба не едят постоянно - каждая только 1 раз выполнится.
А вообще если можно и без них = я не настаиваю