Почти полностью переделал скрипт собрал в нем все что связано с тп :сохранение тп в список, тп мишкой, тп по клику на карте, блик.
Вот список команд скрипта:
Команды .goХ после использования команды делаем 2 шага, .go1 и .go2 чем больше прибежим тем дальше тп
.go1 - перемещает перса вперед
.go2 - перемещает перса назад
.go3 - прыжок очень высоко
Команды .mХ после использования клацаем мишкой на место куда тп (не на карту а на местность горы,лужайки и проч.)
.m1 - перемещает перса в указанную точку сидя и не отнимет хп от падения
.m2 - перемещает перса в указанную точку стоя но при перепаде высоты отнимает хп (сделано для побега от агро или быстрого перемещения по данжам )
.save - сохраняет пекущее положение перса(после использования нужно сделать 1 шаг для записи координат)
.tptosave - перемещает в точку записанную командой .save
.addtolist - записывает в список точку сохраняемую командой .save(в течении 20 сек нужно в общий чат написать имя точки)
.showlist - показывает текущий список тп(в течении 20 сек нужно в общий чат написать номер позиции куда хотим тп, 0 - отмена)
.clist - удаляет все записи с текущего листа
.chengelist - переключения между листами(в течении 20 сек нужно в общий чат написать номер листа, 0 - отмена)
.addlist - добавляет новый лист(в течении 20 сек нужно в общий чат написать имя листа)
.summon - призывает членов группы, необходимо сначала использовать команду .save, всем членам групи будет показан запрос на тп 1 - согласен 0 - отмена(данная функция работает только если в других членов группы установлен и работает такой же скрипт)
Так же есть возможность тп по клику на карте, спасибо С-lavr его скрипт http://zhyk.ru/forum/showthread.php?t=379716. Открываем карту зажимаем контрол и правым кликом указываем место потом в чате дописиваем висоту например так
Код:
Место 200
Код:
//Black_Hole 1.03
//Script by AltairAlentus
var
coordinat:array[0..1,0..3] of integer;
xyzh,pak: array[0..3] of integer;
packet,blick_mode,mouse_mode,action:byte;
blick_start,mouse_start,teleport_start:boolean;
t_pak,list,ps:string;
s,n,v:tstringlist;
Timer:ttimer;
x,y,z:single;
procedure init ;
begin
packet:=0;
s:=tstringlist.create;
n:=tstringlist.create;
v:=tstringlist.create;
list:='Teleport\teleport.txt';
s.loadfromfile(list);
n.loadfromfile('Teleport\lists.txt');
Timer:=TTimer.Create(nil);
Timer.OnTimer:=@TimerOn;
Timer.interval:=20000;
Timer.enabled:=false;
end;
procedure TimerOn ;
begin
Timer.enabled:=false;
action:=0;
end;
procedure chatmode(mode:byte);
begin
if mode=0 then action:=0
else
begin
action:=mode;
Timer.enabled:=true;
end;
end;
procedure Free ;
begin
s.savetofile(list);
v.savetofile('1.txt');
Timer.enabled:=false;
end;
procedure blick(mode:integer);
var
i:integer;
begin
if blick_start=true then
begin
xyzh[0]:=readD(6);
xyzh[1]:=readD(10);
xyzh[2]:=readD(14);
xyzh[3]:=readc(18);
if packet=0 then
begin
for i:=0 to 3 do coordinat[0,i]:=xyzh[i];
packet:=1;
end
else
begin
for i:=0 to 3 do coordinat[1,i]:=xyzh[i];
packet:=0;
case blick_mode of
1:
begin
pak[0]:=coordinat[1,0]+((coordinat[1,0]-coordinat[0,0])*10);
pak[1]:=coordinat[1,1]+((coordinat[1,1]-coordinat[0,1])*10);
pak[2]:=coordinat[1,2]+((coordinat[1,2]-coordinat[0,2])*10)+50000;
pak[3]:=coordinat[1,3];
end;
2:
begin
pak[0]:=coordinat[1,0]-((coordinat[1,0]-coordinat[0,0])*10);
pak[1]:=coordinat[1,1]-((coordinat[1,1]-coordinat[0,1])*10);
pak[2]:=coordinat[1,2]-((coordinat[1,2]-coordinat[0,2])*10)+50000;
pak[3]:=coordinat[1,3];
end;
3:
begin
pak[0]:=coordinat[1,0]+((coordinat[1,0]-coordinat[0,0]));
pak[1]:=coordinat[1,1]+((coordinat[1,1]-coordinat[0,1]));
pak[2]:=coordinat[1,2]+((coordinat[1,2]-coordinat[0,2]))+10000000;
pak[3]:=coordinat[1,3];
end;
end;
buf:=hstr('C2 00 57 61 FF 05');
for i:=0 to 2 do writed(pak[i]);
writec(xyzh[3]);
sendtoserver;
buf:='';
blick_start:=false;
blick_mode:=0;
end;
end
else
begin
blick_start:=true;
blick_mode:=mode;
end;
end;
procedure mouse(mode:integer);
var
i:integer;
begin
if mouse_start then
begin
if Length(pck)=31 then
begin
xyzh[0]:=readD(20);
xyzh[1]:=readD(24);
xyzh[2]:=readD(28);
xyzh[3]:=readc(18);
pck:='';
buf:=hstr('C2 00 57 61 FF');
case mouse_mode of
1: writec(4);
2: writec(5);
end;
for i:=0 to 2 do writed(xyzh[i]);
writec(xyzh[3]);
sendtoserver;
buf:='';
mouse_start:=false;
mouse_mode:=0;
end
else
begin
message('Не тот пакет ',8);
mouse_start:=false;
mouse_mode:=0;
end;
end
else
begin
mouse_start:=true;
mouse_mode:=mode;
end;
end;
procedure message(msg:string;chatID:byte);
begin
buf:=HStr('16 00 54 D5 FF 00 00 E3 10 37 00 ');
writec(chatID,6);
WriteS('L2ph');
WriteS(msg);
SendToClient;
end;
procedure teleport_corinat;
var
i:integer;
begin
if teleport_start then
begin
xyzh[0]:=readD(6);
xyzh[1]:=readD(10);
xyzh[2]:=readD(14)+100000;
xyzh[3]:=readc(18);
teleport_start:=false;
buf:='';
for i:=0 to 2 do writed(xyzh[i]);
writec(xyzh[3]);
t_pak:=buf;
buf:='';
pck:='';
end
else teleport_start:=true;
end;
procedure tptosave;
begin
buf:=hstr('C2 00 57 61 FF 04')+t_pak;
sendtoserver;
buf:='';
pck:='';
end;
procedure addtolist(go:boolean);
begin
if go then
begin
s.add(reads(7)+'='+t_pak);
chatmode(0);
message('Кординати '+reads(7)+' сохранены',8);
end
else
begin
if t_pak='' then message('Нет сохранених кординат используйте .save',8)
else
begin
message('Введите имя ',8);
chatmode(1);
end;
end;
pck:='';
end;
procedure showlist;
var
np:string;
i:integer;
begin
for i:=0 to s.count-1 do
begin
np:=np+HStr('0D 0A')+inttostr(i+1)+' -- '+s.names[i];
end;
chatmode(2);
message(np,7);
np:='';
pck:='';
end;
procedure tpfromlist(tpid:byte);
begin
if tpid<>0 then
begin
buf:=hstr('C2 00 57 61 FF 04')+s.values[s.names[tpid-1]];
sendtoserver;
chatmode(0);
pck:='';
end;
end;
procedure sendpaty(c: array[0..3] of integer);
begin
buf:=#$B2#$00#$57#$71#$FF#$05;
writes('t'+' '+IntToStr(c[0])+' '+IntToStr(c[1])+' '+IntToStr(c[2])+' '+IntToStr(c[3]));
SendToServer;
end;
procedure tppaty(go:boolean;choise:byte);
var
str,tm: string;
i,c:integer;
begin
if go then
begin
if choise=1 then
begin
buf:=hstr('C2 00 57 61 FF 04');
for i:=0 to 2 do writed(xyzh[i]);
writec(xyzh[3]);
sendtoserver;
buf:='';
pck:='';
end;
end
else
begin
str:=reads(28);
if str[1]='t' then
begin
i:=pos(' ',str)+1;
for c:=0 to 3 do
begin
tm:='';
while (str[i]<>' ') do
begin
tm:=tm+str[i];
inc(i);
end;
xyzh[c]:=StrToInt(tm);
Inc(i);
end;
message('Вас призывает персонаж '+reads(12)+#$0D#$0A+'1 -- Принять'+#$0D#$0A+'2 -- Отклонить',7);
chatmode(5);
pck:='';
end;
end;
end;
procedure chengelist(go:boolean;lid:integer);
var
np:string;
i:integer;
begin
if go then
begin
pck:='';
s.savetofile(list);
list:=n.values[n.names[lid-1]];
s.loadfromfile(list);
end
else
begin
for i:=0 to n.count-1 do
begin
np:=np+HStr('0D 0A')+inttostr(i+1)+' -- '+n.names[i];
end;
chatmode(3);
message(np,7);
np:='';
pck:='';
end;
pck:='';
end;
procedure addlist(go:boolean;lname:string);
begin
if go then
begin
n.add(lname+'='+'Teleport\'+lname+'.txt');
s.savetofile(list);
s.clear;
list:=n.values[lname];
s.savetofile(list);
message('Список '+lname+' сохранен',8);
pck:='';
end
else
begin
message('Введите имя списка',8);
chatmode(4);
end;
pck:='';
end;
procedure GetPos;
var
i:integer;
tmp:string;
begin
tmp:='';
i:=pos(' ',ps)+1;
while (ps[i]<>' ') do
begin
if (ps[i]<>'.') then
tmp:=tmp+ps[i]
else
tmp:=tmp+',';
inc(i);
end;
x:=StrToFloat(tmp);
tmp:='';
i:=i+1;
while (ps[i]<>' ') do
begin
if (ps[i]<>'.') then
tmp:=tmp+ps[i]
else
tmp:=tmp+',';
inc(i);
end;
y:=StrToFloat(tmp);
tmp:='';
i:=pos(']',ps)+1;
if (i<>Length(ps)) then
z:=z+StrToFloat(Copy(ps,i+1,Length(ps)-i));
end;
procedure SendTP;
begin
buf:=HStr('C2 00 57 61 FF 04 ');
WriteN(x);
WriteN(y);
WriteN(z);
SendToServer;
end;
begin
if FromClient then
case pck[1] of
#$9f:
begin
if blick_start then blick(0);
if mouse_start then mouse(0);
if teleport_start then teleport_corinat ;
end;
#$c2: if readh(6)in [24596..26645] then pck:='';
#$b2:
case reads(7) of
'.go1': blick(1);
'.go2': blick(2);
'.go3': blick(3);
'.m1': mouse(1);
'.m2': mouse(2);
'.save':teleport_corinat ;
'.addtolist': addtolist(false);
'.showlist': showlist;
'.tptosave': tptosave;
'.clist':s.clear;
'.summon': sendpaty(xyzh);
'.addlist': addlist(false,'');
'.chengelist': chengelist(false,0);
else
case action of
0: ;
1: addtolist(true);
2: tpfromlist(strtoint(reads(7)));
3: chengelist(true,strtoint(reads(7)));
4: addlist(true,reads(7));
5: tppaty(true,strtoint(reads(7)));
end;
end;
end;
if FromServer and (pck[1]=#$16) then tppaty(false,0);
if FromClient and (ReadC(1)=$B2) and (ReadC(7)=$5B) and (ReadC(9)=$70) and (ReadC(11)=$6F) and (ReadC(13)=$73) then
begin
ps:=ReadS(15);
GetPos;
SendTP;
pck:='';
end;
if FromClient and (ReadC(1)=$9F) then
z:=ReadN(14)+10;
end.
Так же для работы скрипта нужны файлы с настройками это тхт файлы в который храниться записанные координаты.
В архиве папка она должна быть в корне паки л2пх Teleport.rar
Пример работы скрипта [Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось altairalentus; 16.04.2012 в 15:14.
Очень понравилось "блик", а вот как работает .m1 не понял. Надо вписать в чат .m1 потом открыть карту клавишей "М" и тыкнуть на место и сделать два шага? я так делал, меня на угол карты бросает. Объяснишь подробнее?
Разобрался, в восторге. Щелкаем не на карту а на территорию где бежим. Как будто хотим туда побежать
Последний раз редактировалось mars2107; 26.02.2012 в 03:49.
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - для суровых подпольщиков
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Восстановлена работоспособность одного из лучших Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). для Аион. Спасибо автору(ам) =)
Path of Exile - в настоящее время там.
на нью х75 не работает, там был фикс на тп метода который используется в скрипте, только работает 2ой метод с использование мигающего состояния http://zhyk.ru/forum/showthread.php?t=364540
Последний раз редактировалось priest.nrts; 26.02.2012 в 11:19.
подпольем и не пахнет, это даже не фиксануть. Пакеты на движение были, есть и будут ибо мы стояли бы на месте все. Просто алгоритм очень хорошо реализован и автоматизирован.
подпольем и не пахнет, это даже не фиксануть. Пакеты на движение были, есть и будут ибо мы стояли бы на месте все. Просто алгоритм очень хорошо реализован и автоматизирован.
Вообще то всё это фиксится, единственно что наверно не фиксится - это тп через стену. Как заключался фикс где я играл? Они прост ограничили расстояние тп до 25 метров. Тем самым на далёкие расстояния не полетаешь. А скрипт этим и хорош, что тут собрали всё что нужно. Как по мне скрипт достоин подполья, но решать не мне)
________________ DOTA 2 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось Mongol; 27.02.2012 в 20:13.
подпольем и не пахнет, это даже не фиксануть. Пакеты на движение были, есть и будут ибо мы стояли бы на месте все. Просто алгоритм очень хорошо реализован и автоматизирован.
Ну не скажи на ньюшке фиксанули
________________
Помог жми спасибо! Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).