PDA

Просмотр полной версии : [Скрипт] Телепорт по локации мышкой 2,7


altairalentus
26.02.2012, 01:36
Почти полностью переделал скрипт собрал в нем все что связано с тп :сохранение тп в список, тп мишкой, тп по клику на карте, блик.
Вот список команд скрипта:

Команды .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 его скрипт [Ссылки могут видеть только зарегистрированные и активированные пользователи] Открываем карту зажимаем контрол и правым кликом указываем место потом в чате дописиваем висоту например так Место 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пх
30187

Пример работы скрипта [Ссылки могут видеть только зарегистрированные и активированные пользователи]

mars2107
26.02.2012, 01:56
Очень понравилось "блик", а вот как работает .m1 не понял. Надо вписать в чат .m1 потом открыть карту клавишей "М" и тыкнуть на место и сделать два шага? я так делал, меня на угол карты бросает. Объяснишь подробнее?


Разобрался, в восторге. Щелкаем не на карту а на территорию где бежим. Как будто хотим туда побежать

whiteSaunds
26.02.2012, 03:41
Роботает все на ура!Спасибо автору!11)

Havoc007
26.02.2012, 07:29
Восхитительно. Автор, давай еще полезных скриптов ;)

talala
26.02.2012, 09:16
отменно

priest.nrts
26.02.2012, 09:57
на нью х75 не работает, там был фикс на тп метода который используется в скрипте, только работает 2ой метод с использование мигающего состояния [Ссылки могут видеть только зарегистрированные и активированные пользователи]

par-vova3
26.02.2012, 11:05
Супер !

Mongol
26.02.2012, 21:34
Да, скрипт оч хороший, мб в подполье?

Denis86russ@
27.02.2012, 14:34
автор молодец скрипт харош но тп мышкой не робит

altairalentus
27.02.2012, 15:49
автор молодец скрипт харош но тп мышкой не робит
какой сервер может фикс способа или ты что то не правильно делаешь сначала пишем в чат .m1 лил .m2 потом мишкой нажимаешь куда тп

mars2107
27.02.2012, 15:57
Да, скрипт оч хороший, мб в подполье?

подпольем и не пахнет, это даже не фиксануть. Пакеты на движение были, есть и будут /problem ибо мы стояли бы на месте все. Просто алгоритм очень хорошо реализован и автоматизирован.

Mongol
27.02.2012, 19:11
подпольем и не пахнет, это даже не фиксануть. Пакеты на движение были, есть и будут /problem ибо мы стояли бы на месте все. Просто алгоритм очень хорошо реализован и автоматизирован.

Вообще то всё это фиксится, единственно что наверно не фиксится - это тп через стену. Как заключался фикс где я играл? Они прост ограничили расстояние тп до 25 метров. Тем самым на далёкие расстояния не полетаешь. А скрипт этим и хорош, что тут собрали всё что нужно. Как по мне скрипт достоин подполья, но решать не мне)

aion programmer
27.02.2012, 19:44
подпольем и не пахнет, это даже не фиксануть. Пакеты на движение были, есть и будут /problem ибо мы стояли бы на месте все. Просто алгоритм очень хорошо реализован и автоматизирован.

Ну не скажи на ньюшке фиксанули:emolol:

Yanetank
27.02.2012, 20:05
Автор зделай так чтоб при нажатии на карте(кнопка M) левой кнопкой тепешило туда)

altairalentus
27.02.2012, 20:19
Автор зделай так чтоб при нажатии на карте(кнопка M) левой кнопкой тепешило туда)
Не получиться координату Z откуда брать, хотя можно поискать.

Yanetank
27.02.2012, 20:22
Слуш я на Пр*йме токочто тестил норм робило потом через 5мин перестало че делать?

altairalentus
27.02.2012, 20:44
Слуш я на Пр*йме токочто тестил норм робило потом через 5мин перестало че делать?

Ты точно все верно сделал включил скрипт, сначала пишем в чат .m1 лил .m2 потом мишкой нажимаешь куда тп

Swepkol
28.02.2012, 18:55
Автору после того как в общий чат написал .m1 . Открыть карту "M" и тыкнуть место ?

altairalentus
28.02.2012, 19:33
Автору после того как в общий чат написал .m1 . Открыть карту "M" и тыкнуть место ?

Нет надо на жать мышкой (не на карту) туда куда хочешь переместиться как у Л2 если отключено перемещение мышкой включить в настройках

Denis86russ@
01.03.2012, 11:58
кароче на местость тыкай например на гору .m1 гора пару шагов и ты там

w00t
07.03.2012, 17:04
У меня команда .m1 - .m2 Не работает. ( Пишет в чате> PHX : Wrong Point ) Вроде ставлю мышку на карте все норм..
А .go1-2-3 все ок пашет.

c-lavr
07.03.2012, 17:35
Есть не дороботка в скрипте. Вы не считываете байты ориентации (куда повернут перс в игре) из 31 байтового пакета 9F, хотя переменная у вас для этого введена.

Исправите:


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 3 do writed(xyzh[i]);
writec(0);
sendtoserver;
buf:='';
mouse_start:=false;
mouse_mode:=0;

end.

werde2010
22.03.2012, 14:59
Пробую на newaion х75 , при использовании всех команд портует обратно с разворотом тела... т.е я использую я к примеру команду ".m2", тыкаю на угодное мне место,и меня обратно возвращаяет на место где я стоял.

c-lavr
22.03.2012, 15:32
Пробую на newaion х75 , при использовании всех команд портует обратно с разворотом тела... т.е я использую я к примеру команду ".m2", тыкаю на угодное мне место,и меня обратно возвращаяет на место где я стоял.

автор давно свою тему не редактировал.
Пользуйся этим ссылка ([Ссылки могут видеть только зарегистрированные и активированные пользователи])

Shurik25
09.04.2012, 17:02
Парни куда скрипты сувать??

altairalentus
15.04.2012, 19:29
Обновил скрипт изменения в 1 посте

Doctor1997
16.04.2012, 11:02
Слушай копирую скрипт все как надо нажимаю на галочку не пашет а она не ставиться... я так понимаю проблема в скрипте?

altairalentus
16.04.2012, 11:12
Слушай копирую скрипт все как надо нажимаю на галочку не пашет а она не ставиться... я так понимаю проблема в скрипте?
Скачал архив розпаковал в папку с прогой?
и какая ошибка внизу в строке написана

Doctor1997
16.04.2012, 11:52
конечно)
пишет EFOpenError : Cannot open file "C:\winpr\Teleport\teleport.txt" Системе не удается найти указанный путь
я так назвал папку с прогой

altairalentus
16.04.2012, 12:17
конечно)
пишет EFOpenError : Cannot open file "C:\winpr\Teleport\teleport.txt" Системе не удается найти указанный путь
я так назвал папку с прогой
Так посмотри правильно ли распаковал папку бо скрипт не находит файла посмотри может нажал разпаковать в папку тогд а там будет папка в папке а нада папка Teleport и в ней 2 тхт файла
[Ссылки могут видеть только зарегистрированные и активированные пользователи]

Doctor1997
16.04.2012, 12:34
у меня вообще такой папки нету...
можешь залить куда-то что бы я скачал и вставил потому что я даже в скачанном архиве не могу найти

altairalentus
16.04.2012, 15:16
у меня вообще такой папки нету...
можешь залить куда-то что бы я скачал и вставил потому что я даже в скачанном архиве не могу найти

Я обновил аттач в 1 посте там ссылка на архив недоглядел вчера

cristal
17.05.2012, 03:12
при ТП по точкамперс просто недолетает до нужного места и падает под текстуры(( (по записанным координатам)

kill-user
17.05.2012, 09:32
Только на 2,7 работает?

altairalentus
18.05.2012, 15:34
при ТП по точкамперс просто недолетает до нужного места и падает под текстуры(( (по записанным координатам)

Бывает особенно в данжах в последней версии добавил плюс к висоте при сохранении точки щтоб было время чтоб текстуры прогрузились но в некоторых данжах та же проблема.

Только на 2,7 работает?

Этот принцип работает и на 2,5 только нужно ид пакетов поменять

nykich
24.05.2012, 14:11
на Atr***world отлично работает
только у меня проблема, я записал в лист свои координаты и когда тепаюсь на них, то улетаю в текстуры

phell
25.05.2012, 04:01
на Atr***world отлично работает
только у меня проблема, я записал в лист свои координаты и когда тепаюсь на них, то улетаю в текстуры

Попробуй откорректировать высоту появления персонажа в локе.

EtgTggg
01.06.2012, 03:01
Здрасте... может скрипт и отличный но увы на 175пх вылетает ошибка короче фейл (только из за активации скрипта в л2пх "Галочку тыкаешь и ошибка")

altairalentus
01.06.2012, 22:29
Здрасте... может скрипт и отличный но увы на 175пх вылетает ошибка короче фейл (только из за активации скрипта в л2пх "Галочку тыкаешь и ошибка")

Конкретней что за ошибка? Есть папка Teleport? Нужно скачать архив и распаковать в папку с Л2ПХ

Mirord
01.06.2012, 22:55
У меня тоже ошибка вылетает The applicatioin has encountered a problem. We are sorry for the incovenience

altairalentus
02.06.2012, 00:55
У меня тоже ошибка вылетает The applicatioin has encountered a problem. We are sorry for the incovenience

Какую версию программы ты используешь?
На 3.5.34.176 работает нормально.

devil06
05.08.2012, 17:52
На 3.0 будет работать?

Slip63
06.08.2012, 10:17
altairalentus, переделай на 3.0 плиз, или помоги разобраться какие пакеты и за что отвечают.. хотя бы ту часть скрипта где ТП мышкой по местности.

altairalentus
14.08.2012, 22:00
altairalentus, переделай на 3.0 плиз, или помоги разобраться какие пакеты и за что отвечают.. хотя бы ту часть скрипта где ТП мышкой по местности.

Я сейчас сижу на 2,7 но скоро перелезу на 3,0 тогда переделаю.

Добавлено через 34 минуты
У меня такая проблема при тп я прилитаю в сохранённую точку и проваливаюсь под текстуру( что делать?

Попробуй так

//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)+500000; //здесь идет прибавка к высоте попробуй так, если не поможет добавь еще
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.

hackdragon
15.08.2012, 08:34
Здраствуй altairalentus . Когда ввожу команду .save нече не происходит , .showlist ввожу вроде робит , там на листе 3 место по умолчанию. И как к листу тп-нуть потом? лпх 76

altairalentus
15.08.2012, 10:01
Здраствуй altairalentus . Когда ввожу команду .save нече не происходит , .showlist ввожу вроде робит , там на листе 3 место по умолчанию. И как к листу тп-нуть потом? лпх 76

В первом посте все написано
.save - сохраняет пекущее положение перса(после использования нужно сделать 1 шаг для записи координат)
.tptosave - перемещает в точку записанную командой .save
.addtolist - записывает в список точку сохраняемую командой .save(в течении 20 сек нужно в общий чат написать имя точки)
.showlist - показывает текущий список тп(в течении 20 сек нужно в общий чат написать номер позиции куда хотим тп, 0 - отмена)
.clist - удаляет все записи с текущего листа
.chengelist - переключения между листами(в течении 20 сек нужно в общий чат написать номер листа, 0 - отмена)
.addlist - добавляет новый лист(в течении 20 сек нужно в общий чат написать имя листа)
.summon - призывает членов группы, необходимо сначала использовать команду .save, всем членам групи будет показан запрос на тп 1 - согласен 0 - отмена(данная функция работает только если в других членов группы установлен и работает такой же скрипт)

.save после нужно сделать пару шагов, команда временно сохраняет точку при следующим использованием точка перезаписывается.
Для тп к этой точке команда .tptosave
А для добавления в список используем .addtolist

Vlad333999
18.08.2012, 13:51
На нью не арботает (х75)

какбея
18.08.2012, 17:30
Можете подсказать что надо изменить что бы на 2.5 работало?