Skip to content

[SCRIPT]

Featured Replies

____________$$$$$$$*$______$$$$$$$$$
__________$$$$$$$$$*$$$__$$$$$$$__$$$$
_________$$$$$$$$$$*$$$$$$$$$$$$$$__$$$
_________$$$$$$$$$$*$$$$$$$$$$$$$$__$$$
_________$$$$$$$$$$*$$$$$$$$$$$$$$__$$$
__________$$$$$$$$$*$$$$$$$$$$$$$__$$$
____________$$$$$$$*$$$$$$$$$$$$$$$$
_______________$$$$*$$$$$$$$$$$$$
_________________$$*$$$$$$$$$$$
____________________$$$$$$$$
_____________________$$$$$
______________________$$$
_______________________$

//******************************************************************************
{version 0.2 от 11.06.2009г. by NLObP

1.write NAME 
2.run script 
3.V folder \ scripts \ picture.txt should be based on the file with text or pictures 
4.load command in the chat> load = picture 
5.write how to write a chat, team chat> dest = 1, or chat = 1 (0 - general chat, etc.) 
6.start for execution, the command in the chat> start or run 
7.stop script, using chat> stop 
8.posle output image script stops himself.
}
//******************************************************************************
program Risuem_w_chat2;
const
 Name='NLObP';     //имя персонажа в игре

 Pathtxt='.\scripts\';   //путь к файлу
 NameTxt='picture.txt';  //имя файла с рисунком (текстом)

 debug=true;             //true - чтобы видеть команды в чате

 DefaultExecuteDelay=500;
//..............................................................................
var
 TextPic : TStringlist;    //сюда загружаем текст из файла
 ExecuteTimer: Ttimer;     //основной таймер
 ExecuteDelay: integer;    //задержка между сообщениями в чат

 strIndex: integer;        //номер строки
 chat: integer;            //в какой чат слать

//******************************************************************************
procedure Init; //Вызывается при включении скрипта
var
 i, j :integer;
begin
 TextPic:=TStringList.Create;
 //загружаем файл
 TextPic.LoadFromFile(PathTxt+NameTxt);

 strIndex:=0; //начинаем с первой строки

 ExecuteDelay:=DefaultExecuteDelay; //задержка между сообщениями в чат

 ExecuteTimer:=TTimer.Create(nil);
 ExecuteTimer.Enabled:=false;
 ExecuteTimer.Interval:=ExecuteDelay; //время задержки
 ExecuteTimer.OnTimer:=@OnExecute;
end;
//..............................................................................
procedure Free; //Вызывается при выключении скрипта
begin
 ExecuteTimer.Enabled:=False; //остановим на всякий случай
 Executetimer.Free;
 TextPic.free;
end;
//******************************************************************************
{
Вспомогательные процедуры и функции
}
//******************************************************************************
procedure debugMsg(msg: string);
begin
 if debug then
 begin
   sendMSG(msg);
   SendMessage(msg);
 end;
end;
//******************************************************************************
{
Посылаем пакеты
}
//******************************************************************************
//послать сообщение в чат (видим только мы)
//use: SendMessage(msg);
procedure SendMessage(msg:string);  //отправка системных сообщений клиенту
begin
 buf:=#$4A;
 WriteD(0);
 WriteD(10);
 WriteS('');
 WriteS(msg);
 SendToClientEx(Name);
end;

//49=Say2:s(Text)d(Type)s(Target)
procedure SendMs(msg: string; dest: integer);
begin
 //buf:=#$49;  //Грация
 buf:=#$38;  //Интерлюдия
 WriteS(Msg);
 WriteD(dest);
 WriteS('');
 SendToServerEx(Name);
end;


//..............................................................................
function ExtractValue(sData, sFind: string;): string;
{возвращаем конец строки после найденного символа}
var
 s: string;
 i,j: integer;
begin
 i:=0;
 result:='';
 i:=find(sData, sFind);
 if i>0 then  result:=copy(sData, i+length(sFind), length(sData));
end;
function RtrimEx(sData, sDelimiter: string): string;
{Удаление из строки S заданные символы справа}
var
 m,i : integer;
 s: string;
begin
 s:=sData;
 i:=0;
 while i=0 do
 begin
     m:=length(s);
     if m>0 then begin
        if s[m]<>sDelimiter then i:=1;
        if s[m]=sDelimiter then delete(s,m,1);
     end;
     if m <= 0 then i:=1;
 end;
 result:=s;
end;
//..............................................................................
function LtrimEx(sData, sDelimiter:String): string;
{Удаление из строки S заданные символы слева}
var
 m,i : integer;
 s: string;
begin
 s:=sData;
 i:=0;
 while i=0 do
 begin
     m := length(s);
     if m > 0 then
     begin
        if s[1]<>sDelimiter then i:=1;
        if s[1]=sDelimiter then delete(s,1,1);
     end;
     if m <= 0 then i:=1;
 end;
 result:=s;
end;
//..............................................................................
function Ltrim(sData:String): string;
{Удаление из строки S заданные символы слева}
begin
 result:=LtrimEx(sData,' ');
end;
//..............................................................................
function Rtrim(sData:String): string;
{Удаление из строки S заданные символы слева}
begin
 result:=RtrimEx(sData,' ');
end;
//..............................................................................
function AllTrimEx(sData, sDelimiterLeft, sDelimiterRight: String): string;
{Удаление из строки S заданные символы слева и справа}
begin
 result:=LtrimEx(RtrimEx(sData, sDelimiterRight), sDelimiterLeft);
end;
//..............................................................................
function AllTrim(sData: String): string;
{Удаление из строки S заданные символы слева и справа}
begin
 result:=Ltrim(Rtrim(sData));
end;
//..............................................................................
function ExtractName(sData, sFind: string): string;
{возвращаем строку до найденного символа}
var
 i: integer;
begin
 i:=0;
 result:='';
 i:=find(sData, sFind);
 if i>0 then result:=copy(sData, 1, i-length(sFind)+1);
end;
//..............................................................................
function Find(const S, P: string): Integer;
{Функция Find ищет подстроку P в строке S и возвращает индекс первого символа
подстроки или 0, если подстрока не найдена. Хотя в общем случае этот метод,
как и большинство методов грубой силы, малоэффективен, в некоторых ситуациях
он вполне приемлем.}
var
 i, j: Integer;
begin
 Result:=0;
 if Length(P)>Length(S) then
 begin
   debugMSG('Несоответствие длин: p='+inttostr(Length(P))+' > S='+inttostr(Length(s)));
   debugMSG('Строка: '+inttostr(strIndex));
   Exit;
 end;
 for i:=1 to Length(S)-Length(P)+1 do
 begin
   for j:=1 to Length(P) do
   begin
     if P[j]<>S[i+j-1] then
       Break
     else if j=Length(P) then
     begin
       Result:=i;
       Exit;
     end;
   end;
 end;
end;

//******************************************************************************
// Парсер/Исполнитель: главный цикл обработки команд Валкера
//******************************************************************************
function OnExecute(Sender: TObject): integer; //CommandList: TStringList
var
 s, cmd, param : string;
begin
 try
   s:=TextPic[strIndex]; //считываем строку рисунка
   SendMs(s, chat);      //выводим в чат
   inc(strIndex);        //следующая строка
 except
   ExecuteTimer.Enabled:=False; //остановим
 end;
end;

procedure UserCommands;    //комманды пользователя
var
 s, cmd: string;
begin //если комманда обработана удачно, то в чат сообщение не попадет, а будет выдано системное сообщение прямо в клиент
 s:=ReadS(2);
 debugMsg(s);
 s:=s+'='; //чтобы можно было взять число в конце
 cmd:=RTrimEx(ExtractName(s, '='), '=');  //получили строку вплодь до найденного символа
 cmd:=UpperCase(alltrim(cmd));
 case cmd of
   //команда загрузки скрипта>  load=picture
   'LOAD': begin
       s:=ExtractValue(s, '=');  //получили остаток строки начиная с искомого символа
       s:=RTrimEx(ExtractName(s, '='), '=');  //получили строку вплодь до найденного символа
       TextPic.clear;
       TextPic.LoadFromFile(PathTxt+s+'.txt'); //загружаем
       pck:='';
   end;
   'START','RUN': begin
       strIndex:=0; //начинаем с первой строки
       ExecuteDelay:=DefaultExecuteDelay; //задержка между выводом строк на экран
       ExecuteTimer.Enabled:=true; //включим таймер
       pck:='';
   end;
   'STOP': begin
       ExecuteTimer.Enabled:=false; //выключим интерпретацию скрипта валкера
       pck:='';
   end;
   'DEST','CHAT': begin
       s:=ExtractValue(s, '=');  //получили остаток строки начиная с искомого символа
       s:=RTrimEx(ExtractName(s, '='), '=');  //получили строку вплодь до найденного символа
       chat:=strtoint(s); //сохраним тип чата куда слать сообщение
       pck:='';
   end;
 end;
end;

//******************************************************************************
{
основная часть скрипта, вызывается при приходе каждого пакета, если скрипт включен
}
//******************************************************************************
begin
 //****************************************************************************
 //не обрабатываем пустые пакеты
 if pck='' then exit;

 //****************************************************************************
 if (ConnectName=Name) and FromClient then
 begin
   case pck[1] of
     //************************************************************************
     //#$49: UserCommands; //Say2:s(Text)d(Type)s(Target) Gracia
     #$38: UserCommands; //Say2:s(Text)d(Type)s(Target) Interlud
   end;
 end;
end.

 

662e0ee451bb.jpg

LOl, in my server, I will get ban if I use it in town? cuz it Obvious an exploit

Damn, that's really inspiring! +1 karma for your good job ;)

haha very good scripte man I am going try it

damn!! Fu^^ing cool !! I will share an other pic in this type from my collection as soon as get my pc back.

nice but don't you need first to be able to use phx on the server? witch it's kinda hard for some ppl...

you do and lol.. this post just made me want to set it up again =P

 

also make a script to change all my old irc pic codes to l2 =))

nice but don't you need first to be able to use phx on the server? witch it's kinda hard for some ppl...

lol its easier that stealing an icecream from a baby lol.Try it and u will see its nothing dificult if u have brain.

Hahah look really good, shame you try to steal our accounts yesterday xD

i know how to use phx man but from what reason i don't know it happens very rarely that it works and captures packets.

nice :)

ithis a exploit  ?

Yes, in the matter of facts it is...

BTW: nice picture you've got there :D

nice exploit ty for sharing :)

That's Funny. Ty for share :)

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.