Доброго времени суток уважаемые участники формума.
Я поглядел, что тут используется в скриптах движок языка Delphi.
У меня собственно ворос таковой:
Я незнаю, что возвращает значение переменной Функция или процедура?
Для чего это мне нужно собственно->>
[
if FromClient and (ConnectName='Nevec') and (pck[1]=#$19) then
begin
Передать Функции или Процедуре по этому условию пакет,
затем Функция или Процедура обработает так как мне нужно этот
пакет, чтобы затем я смог его присвоить допустим->>
buf:=Сюда;
end;
]
Часть кода моего:
Const Name='nucLear';
Procedure SendMessage(Msg:String);
Begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(Msg);
SendToClientEx(Name);
End;
//Function SelectEnchantScroll(Scroll:String):String;
//Begin
// if FromClient and (ConnectName=Name) and (pck[1]=HStr('19')) then
// Begin
// Scroll:=pck;
// End;
//End;
begin
if FromClient and (ConnectName=Name) and (pck=HStr('56 18 00 00 00 00 00 00 00 00')) then
begin
buf:=SelectEnchantScroll(pck);
SendToServerEx(Name);
pck:='';
delay(400);
buf:=HStr('D0 4C 00 D6 B3 10 40');
SendToServerEx(Name);
pck:='';
delay(1000);
buf:=HStr('5F D6 B3 10 40 00 00 00 00');
SendToServerEx(Name);
pck:='';
SendMessage('Заточено!!!');
end;
if FromServer and (ConnectName=Name) and (pck=HStr('87 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00')) then
begin
SendMessage('Слетело!!!');
end;
end.
Доброе время суток,кто может разобратся что за скрипт?
Цитата:
Const UserName=('онатоле');
var
ObjectID, KarmaPK, TargetPK, MessagePK, ClassPK, i, x, y, z, TempPK: Integer;
NamePK, CvarPK : String;
ClassName: TStringList;
procedure Init;
begin
MessagePK:=1;
TargetPK:=0;
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS('PK Scanner for Gracia 1.5 by Furious, metalFan');
SendToClientEx(UserName);
ClassName :=TStringList.Create;
ClassName.LoadFromFile('ClassName.ini');
end;
procedure Free;
begin
ClassName.free;
end;
procedure OnConnect(WithClient: Boolean);
begin
end;
procedure OnDisonnect(WithClient: Boolean);
begin
end;
procedure MessageSend(Msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(Msg);
SendToClientEx(UserName);
end;
procedure TargetingPK(ObjectID: Integer);
begin
if TargetPK=1 then begin
buf:=#$1F;
WriteD(ObjectID); WriteD(0); Writed(0); Writed(0); WriteC(0);
SendToServerEx(UserName); end;
end;
procedure KillRadar;
begin
buf:=#$F1;
WriteD(0);
WriteD(1);
WriteD(0);
WriteD(0);
WriteD(0);
SendToClientEx(UserName);
end;
function GetClassName(CID : integer) : string;
begin
result:=ClassName.Strings[CID];
end;
begin
if (FromServer) and (ConnectName=UserName) and (pck[1]=#$31) then
begin
x:=ReadD(2);
y:=ReadD(6);
z:=ReadD(10);
i:=22;
NamePK:=ReadS(i);
ClassPK:=ReadD(i+8);
KarmaPK:=ReadD(i+176);
if (KarmaPK>0) then
begin
ObjectID:=ReadD(18);
TargetingPK(ObjectID);
if MessagePK=1 then begin MessageSend(''+NamePK+' | '+GetClassName(ClassPK)+' | '+IntToStr(KarmaPK)+) end;
buf:=#$F1;
WriteD(0);
WriteD(1);
WriteD(X);
WriteD(Y);
WriteD(Z);
SendToClientEx(UserName);
end;
end;
if (FromServer) and (ConnectName=UserName) and (pck[1]=#$08) then begin
TempPK:=ReadD(2);
case TempPK of ObjectID:
KillRadar;
end;
end;
if (FromClient) and (ConnectName=UserName) and (pck[1]=#$49) then
begin
CvarPK:=ReadS(2);
case CvarPK of
'\start':
begin
TargetPK:=1;
MessageSend('Search On!');
pck:='';
end;
'\stop':
begin
TargetPK:=0;
MessageSend('Stopped all services!');
pck:='';
end;
'\radar':
begin
MessageSend('Radar Killed');
KillRadar;
pck:='';
end;
end;
end;
end.
до этого не юзал скриптовую чать проги, и сегодня заинтересовался этим.
вопрос такой
Код:
procedure Init; //Вызывается при включении скрипта
begin
buf:= HStr('19 74 1D 09 10 00 00 00 00');
SendToServer();
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
end.
нажимаю на кнопку выполнить, ниче не происходит. попробовал этот пакет отправить "посылкой", получилось нормально.
где ошибся?
возник еще один вопрос. prodecure Action
вызывается, когда отправляется пакет, первый байт которого соответствует 'Action' ?
и если в основном(когда при поступлении любого пакета действующего) бегинэнде напишу фигню, то этим я просто блокирую все исходящие и входящие пакеты ?
например
Код:
var
n : integer;
procedure Init; //will be called on script initialization
begin
end;
procedure Free; //This method calls when script don't need anymore
begin
end;
//Primary part of dcript
//calls alltime when l2ph got new packet
begin
n:= n + 1;
end.
Последний раз редактировалось joersun, 30.01.2012 в 22:23.
Причина: возник второй вопрос