//by mks
//помошник в PvP и PK.
//пьет CP и HP пробирки в нужное время(можно добавить и MP для пвп серваков), и освобождает вас от небоходимости зажатия клавиши Ctrl, которая так меня раздражает!(думаю это раздражает и не только меня)
///////////////////////////////////////////////////////
///////////////Master PvP by MKS v.1.0/////////////////
///////////////////////////////////////////////////////
//после активации скрипта необходимо выпить сначала банку CP, потом HP для получения их ID
const
Name='Arispar'; //ник перса
var
CurHP,MaxHP,CurCP,MaxCP: integer;
CPuse,HPuse: string;
TimerCP,TimerHP: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.enabled:=false;
TimerCP.interval:=1000; //интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик
TimerHP:=TTimer.Create(nil);
TimerHP.OnTimer:=@OnTimerHP;
TimerHP.enabled:=false;
TimerHP.interval:=15000; //интервал 15сек, т.к. действие одной бутылки = 15сек
end;
procedure OnTimerCP(Sender: TObject);
begin
buf:=CPuse;
SendToServerEx(Name);
end;
procedure OnTimerHP(Sender: TObject);
begin
buf:=HPuse;
SendToServerEx(Name);
end;
procedure Free; //Вызывается при выключении скрипта
begin
TimerCP.free;
TimerHP.free;
HPuse:='';
CPuse:='';
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse='') then CPuse:=pck;
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;
//считываем текущие и максимальные значения CP и HP
if FromServer and (pck[1]+pck[6]=#$0E#$04) then
begin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
CurCP:=ReadD(30);
MaxCP:=ReadD(38);
end;
if CurHP<>0 then
begin
//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) and (CPuse<>'') then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) and (HPuse<>'') then TimerHP.enabled:=true else TimerHP.enabled:=false;
//если используем скилы или заклинания добавляем флаг Ctrl, что б не надо было удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$2F) then pck[6]:=#$01;
//если наводим таргет, повторное нажатие по нему подменивается на атаку, опять же что б не удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then pck[1]:=#$0A;
end
else
begin
TimerHP.enabled:=false;
TimerCP.enabled:=false;
end;
end.
Вот скрипт в нем можно вкл\выкл функции прямо в окне клиента
при вкл скрипта появляется рамка где можно вкл\выкл отдельно каждую функцию.В нем ошибка в строке
function StrToHex(packet: string):string;
Скрипт № 2
"delphi" Код:
const
Name='xxxxx';
var
CurHP,CurCP,MaxCP,MyID,TargetID,o,x,y,z,Delta: integer;
CPuse,action,Msg: string;
TimerCP,TimerHP: TTimer;
AutoCtrl,AutoCP,AutoTarget,AutoRadar: boolean;
procedure Init;
begin
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.enabled:=false;
//configs
TimerCP.interval:=1000; //cpuse delay
AutoCtrl:=true; //autoctrl default
AutoCP:=true; //autocp default
AutoTarget:=false; //autotarget default
AutoRadar:=true; //autoradar default
Delta:=200; //if (currentCP)<(maxCP-delta) then cpuse
Say;
end;
procedure OnTimerCP(Sender: TObject);
begin
buf:=CPuse;
SendToServerEx(Name);
end;
procedure Free;
begin
TimerCP.free;
CPuse:='';
end;
function booleantostr(b:boolean):string;
begin
if b then
result:='True'
else
result:='False';
end;
procedure Say;
var s:string;
begin
if autoctrl then
s:='<tr><td>AutoCtrl=<a action="bypass autoctrl_off">'+booleantostr(autoctrl)+'</a></td></tr>'
else
s:='<tr><td>AutoCtrl=<a action="bypass autoctrl_on">'+booleantostr(autoctrl)+'</a></td></tr>';
if autocp then
s:=s+'<tr><td>AutoCP=<a action="bypass autocp_off">'+booleantostr(autocp)+'</a></td></tr>'
else
s:=s+'<tr><td>AutoCP=<a action="bypass autocp_on">'+booleantostr(autocp)+'</a></td></tr>';
if autotarget then
s:=s+'<tr><td>AutoTarget=<a action="bypass autotarget_off">'+booleantostr(autotarget)+'</a></td></tr>'
else
s:=s+'<tr><td>AutoTarget=<a action="bypass autotarget_on">'+booleantostr(autotarget)+'</a></td></tr>';
if autoradar then
s:=s+'<tr><td>AutoRadar=<a action="bypass autoradar_off">'+booleantostr(autoradar)+'</a></td></tr>'
else
s:=s+'<tr><td>AutoRadar=<a action="bypass autoradar_on">'+booleantostr(autoradar)+'</a></td></tr>';
s:=s+'<tr><td><br><center><img src="L2UI_CH3.herotower_deco" width=256 height=32></center><br><br></td></tr>';
if cpuse='' then
s:=s+'<tr><td>CPuse=<font color="LEVEL">[!] Выпей бутыль ЦП [!]</font></td></tr>'
else
s:=s+'<tr><td>CPuse=<a action="bypass autouse">'+strtohex(cpuse)+'</a></td></tr>';
buf:=hstr('0F 01 00 00 00');
WriteS('<html><title>PVP помошнегг (с) raid</title><body><center><img src="L2UI_CH3.herotower_deco" width=256 height=32></center><br><table width=100%>'+s+'</table><br><br><br><br><br><br>'+
'<br><center><img src="L2UI_CH3.herotower_deco" width=256 height=32><br><br><br><br><br><br>(c) raid aka Mamy</center></body></html>');
WriteD(0);
SendToClientEx(Name);
end;
function StrToHex(packet: string):string;
var
i:integer;
tmp:byte;
function ByteToHex(b: byte): Char;
begin
if b<10 then result:=chr(b+$30)
else result:=chr(b+$37);
end;
begin
result:='';
for i:=1 to length(packet) do begin
tmp:=ord(packet[i]) div 16;
result:=result+ByteToHex(tmp);
tmp:=ord(packet[i]) - tmp*16;
result:=result+ByteToHex(tmp)+' ';
end;
end;
begin
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse='') then begin
CPuse:=pck;
Say;
pck:='';
exit;
end;
if FromServer and (pck[1]+pck[6]=#$0E#$04) then
begin
MyID:=ReadD(2);
CurHP:=ReadD(14);
CurCP:=ReadD(30);
MaxCP:=ReadD(38);
end;
if FromServer and (pck[1]=#$A6) then begin
TargetID:=ReadD(2);
end;
{if FromServer and (pck[1]=#$29) and autotarget then begin
o:=ReadD(2);
if (ReadD(6)=MyID)and(o<>MyID)and(o<>TargetID) then begin
x:=ReadD(10);
y:=ReadD(14);
z:=ReadD(18);
delay(100);
buf:=hstr('04');
WriteD(o);
WriteD(x);
WriteD(y);
WriteD(z);
WriteC(0);
SendToServerEx(Name);
end;
end;
}
if FromServer and (pck[1]=#$05) and autotarget then begin
o:=ReadD(2);
if (ReadD(6)=MyID)and(o<>MyID)and(o<>TargetID) then begin
x:=ReadD(15);
y:=ReadD(19);
z:=ReadD(23);
delay(100);
buf:=hstr('04');
WriteD(o);
WriteD(x);
WriteD(y);
WriteD(z);
WriteC(0);
SendToServerEx(Name);
end;
end;
if (CurCP<MaxCP-Delta)and(CPuse<>'')and(CurHP>0)and AutoCP then
TimerCP.enabled:=true
else
TimerCP.enabled:=false;
if FromClient and (ConnectName=Name) and (pck=HStr('1B 06 00 00 00')) then begin
Say;
pck:='';
exit;
end;
if FromServer and(pck[1]=#$61)and AutoRadar then begin
x:=ReadD(6);
y:=ReadD(10);
z:=ReadD(14);
buf:=#$EB;
WriteD(0);
WriteD(1);
WriteD(x);
WriteD(y);
WriteD(z);
SendToClientEx(Name);
end;
if FromClient and (ConnectName=Name) and (pck[1]=#$2F) and AutoCtrl then
pck[6]:=#$01;
if FromClient and (ConnectName=Name) and (pck[1]=#$21) then begin
action:=ReadS(2);
if pos('auto',action)>0 then begin
if action='autocp_on' then autocp:=true;
if action='autocp_off' then autocp:=false;
if action='autoctrl_on' then autoctrl:=true;
if action='autoctrl_off' then autoctrl:=false;
if action='autotarget_on' then autotarget:=true;
if action='autotarget_off' then autotarget:=false;
if action='autoradar_on' then autoradar:=true;
if action='autoradar_off' then begin
autoradar:=false;
buf:=#$EB;
WriteD(0);
WriteD(1);
WriteD(0);
WriteD(0);
WriteD(0);
SendToClientEx(Name);
end;
if action='autouse' then CPuse:='';
Say;
pck:='';
end;
end;
if FromServer and (pck[1]=#$4A) then begin
o:=ReadD(2);
x:=10;
action:=ReadS(x);
Msg:=ReadS(x);
x:=pos('? E?AE? YOIO NA?AA?!!!', Msg);
while x>0 do begin
delete(Msg, x, length('? E?AE? YOIO NA?AA?!!!'));
insert('[мат]', Msg, x);
x:=pos('? E?AE? YOIO NA?AA?!!!', Msg);
end;
x:=ReadD(6);
buf:=#$4A;
WriteD(o);
WriteD(x);
WriteS(action);
WriteS(Msg);
pck:=buf;
end;
end.
Просьба помогите сделать управление скриптом №1
так как в скрипте № 2
Последний раз редактировалось TAMBIK, 09.04.2009 в 16:49.
А может кто извлечь функцию зажатия ctrl?
И если ли возможность сделать авто таргет, по сути работы "я" выделяю игрока с миражем(автосброс таргета) и чтобы он брался автоматически в таргет, до тех пор пока я не поменяю цель или не нажму эскейп?
//помошник в PvP освобождает вас от небоходимости зажатия клавиши Ctrl,const
Name='хххххххх'; //ник персаbegin//если используем скилы или заклинания добавляем флаг Ctrl, что б не надо было удерживать контролif FromClient and(ConnectName=Name)and(pck[1]=#$2F)then pck[6]:=#$01;
//если наводим таргет, повторное нажатие по нему подменивается на атаку, опять же что б не удерживать контролif FromClient and(ConnectName=Name)and(pck[1]=#$04)then pck[1]:=#$0A;
end.
работало на Интерлюде
для ХБ заменить 2F на 39 и 04 на 1F и 0A на 01 01 на 0F
помоему так
ЗНАТОКИ мож допишут чтоб работало без этого Name='хххххххх'; //ник перса
Добавлено через 8 минут
Цитата:
Сообщение от Auromy
А может кто извлечь функцию зажатия ctrl?
И если ли возможность сделать авто таргет, по сути работы "я" выделяю игрока с миражем(автосброс таргета) и чтобы он брался автоматически в таргет, до тех пор пока я не поменяю цель или не нажму эскейп?
а это как
Последний раз редактировалось TAMBIK, 29.04.2009 в 18:36.
Причина: Добавлено сообщение
Мираж автоматом сбрасывает таргет, чтобы не приходилось его заного брать в таргет и он выделялся автоматом пока не переключить на другую или не сбросить таргет кнопкой Esc (слева вверху ^_^')
Да ну нахер!!! Покрайней мере на валкеровской ветке форума обитает толпа ленивых балбесов, которым впадлу покопаться на форуме и найти ответ, на свой вопрос, который до этого уже задавали раз 20... Видимо на иностранных форумах, это норма...
Мираж - это скил активно-пасивный, которые сбрасывает таргет автоматом, есть ещё свич - аналог миража, но его нужно каставать. Мираж весит в бафах и срабатывает в определенной очередности.