Jump to content

Recommended Posts

Posted

/\

/||\

/ || \

| || |

| || |

##########| || |##########

#..............#_/_/| || |_/_/#..............#

#..............#_/_/| || |_/_/#..............#

#..............#_/_/| || |_/_/#..............#

#..............#_/_/| || |_/_/#..............#

#..............#_/_/| || |_/_/#..............#

#..............#_/_/| || |_/_/#..............#

#_/_/_/_/_/_/_/| || |_/_/_/_/_/_/_/#

#_/_/_/_/_/_/_/| || |_/_/_/_/_/_/_/#

#_/_/_/_/_/_/_/| || |_/_/_/_/_/_/_/#

#_/_/_/_/_/_/_/| || |_/_/_/_/_/_/_/#

#######_/_/| || |_/_/#######

#............#_/_/| || |_/_/#............#

#...........#_/_/| || |_/_/#...........#

#.........#_/_/| || |_/_/#.........#

#......#_/_/| || |_/_/#......#

#...#_/_/| || |_/_/#...#

#.#_/_/| || |_/_/#.#

#_/_/| || |_/_/#

#_/| || |_/#

#| || |#

/|___| || |___|\

\____________/

( // )

( // )

( // )

( // )

 

 

(^\/^\/^)

\+*+*+/

{¤ apoel ¤}

(¯`*•.¸,¤°´'`°¤,¸.•*´¯)

¸ ,¤°´'`°•.¸O¸.•°´'`°¤,¸

۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑۩۞۩๑๑۩۞۩

apoel ole ole

۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑๑۩۞۩๑۩۞۩๑๑۩۞۩

_______________________________________________,d888`\_\_\_______

_____________________________________________,d888`\_\_\_\________

____________________________________________,d88`\_\_\_\_\_\_______

__________________________________________,d88`\_\_\_\_\_\_\_______

_________________________________________,d8`_\_\_\_\_\_\_\_\______

_______________________________________,d8*\_\_\_\_\_\_\_\_\_\______

_____________________________________,d88*\_\_\_\_\_\_\_\..d**`_____

___________________________________,d88`\_\_\_\_\_\..d8*`\_\_\_\_____

_________________________________,d888`\_\_\..d8P*`\_\_\_\_\_\_\_____

_________________________._____,d8888*8888*`_|_|_|_|_|_|_|_|_|_|_____

_______________________,*_____,88888*8P*_|_|_|_|_|_|_|_|_|_|_|_|_|____

_____________________,*______d888888*8b._|_|_|_|_|_|_|_|_|_|_|_|_|____

___________________,P_______dP__*888.*888b.|_|_|_|_|_|_|_|_|_|_|_|____

_________________,8*________8____*888__`**88888b.|_|_|_|_|_|_|_|____

_______________,dP________________*88/_/_/_/_/_/_*88b./_/_/_/_/_/____

______________d8`__________________*8b/_/_/_/_/_/_/__*8b./_/_/_/____

____________,d8`____________________*8._/_/_/_/_/_/_/_/_/*88b…______

___________d8P_______________________88./_/_/_/_/_/_/_/_____________

_________,88P________________________888/_/_/_/_/_/_/______________

________d888*_______.d88P____________888/_/_/_/_/_/________________

_______d8888b..d888888*______________888/_/_/_/_/__________________

_____,888888888888888b.______________888/_/_/_/____________________

____,8*;88888P*****788888888ba.______888_/_/_/_____________________

___,8;,8888*________`88888*_________d88*_/_/______________________

___)8e888*__________,88888be._______888__/________________________

__,d888`___________,8888888***_____d888__________________________

_,d88P`___________,8888888Pb._____d888`___________________________

_888*____________,88888888**___.d8888*____________________________

_`88____________,888888888____.d88888b____________________________

__`P___________,8888888888bd888888*_______________________________

_______________d888888888888d888*_________________________________

_______________8888888888888888b._________________________________

_______________88*._*88888888888b.________.db_____________________

_______________`888b.`8888888888888b._.d8888P______________________

________________**88b.`*8888888888888888888888b..._________________

_________________*888b.`*8888888888P***7888888888888e.____________

__________________88888b.`********.d8888b**`88888P*_______________

__________________`888888b_____.d88888888888**`8888.______________

___________________)888888.___d888888888888P___`8888888b.__________

__________________,88888*____d88888888888**`____`8888b____________

_________________,8888*____.8888888888P`_________`888b.____________

________________,888*______888888888b...__________`888P88b._________

_______.db.___,d88*________88888888888888b_________`8888___________

___,d888888b.8888`_________`*888888888888888888P`___`888b._________

__/*****8888b**`______________`***8888P*``8888`_______`8888b.______

_______/**88`_________________.ed8b..__.d888P`__________`88888______

____________________________d8**888888888P*_______________`88b____

___________________________(*``,d8888***`___________________`88____

 

 

____________________________________________________________________________________________________

How to do it...

 

 

//******************************************************************************

{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.

 

 

Credits z0mbie86 for the guide on how to do it and for the texts to `GodPower^.

  • 3 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • Hello, We’re preparing to launch something new on L2network.eu… ⚠️   A premium SponsorAuction system is coming soon — introducing a new way to gain maximum visibility on the platform.     👉 Important: Your standard fixed sponsor spots are NOT going anywhere. They will remain available as always.   🔥 So what’s new? We’re adding a limited auction-based premium spot that will stand above everything else. This special placement will: Appear above all servers in the toplist Be visible on every page of the platform Deliver the highest possible exposure   💥 And here’s the catch: Only a very limited number of these premium spots will exist Access will be decided through competitive bidding This means: 👉 The most visible position on L2Network will no longer be bought — it will be won. ⏳ The first auction is opening soon. Early bidders will have the advantage. Get ready — because once it starts, competition will be intense. ------------------------------------------------------------------------------------ We've spent the last week rebuilding how your server pages work behind the scenes. Every server listed on L2Network now has a smarter, more discoverable detail page — and it's already pulling in better Google rankings. Here's what's new and how it helps you get more votes and players. ⭐ Star Ratings in Google Search Your server page now tells Google exactly how players have rated you. When someone searches for your server (or related Lineage 2 keywords), Google can now display golden stars next to your listing in the search results. REAL Stats- Live stats 📖 Auto-Generated Server Summary At the top of every detail page, there's now a clean intro paragraph describing your server in plain language — chronicle, rates, age, rating, and a call-to-action. It's built automatically from your existing server data, so you don't have to write anything. Players landing on your page see what your server is about within 2 seconds, instead of having to dig through tables.   ❓ FAQ Section on Every Page Every server page now has a Frequently Asked Questions block answering things like: What chronicle is this server? What are the rates? Is it L2OFF or L2J? When did it launch? How is it rated by players? These are auto-generated from your server settings — no work for you. Bonus: Google sometimes shows these directly in search results as expandable answers, giving you even more screen space in SERPs.   📈 What You Can Expect Over the next 2-4 weeks as Google re-crawls every detail page: What    Expected change Star ratings showing in Google searches    Servers with 5+ votes get ★ stars Click-through rate from search results    📈 Up to 35% higher Long-tail keyword rankings (e.g. "interlude x100", "high five pvp")    📈 Better positions Mobile click rate    📈 Improved with new layout
    • Thank you very much. It would also be good if you looked into this issue. UnknownSoldier has been manipulating me to make me look bad. He deleted all the evidence I uploaded and left all the insults against me. You'll also see that on April 26th, he reopened the thread and then locked it again just so his friend from Argentina could post: links down :l XD   In the thread: https://maxcheaters.com/topic/253997-sourceservercliente-l2devs-files-l2devscom/page/2/ They do this so they can later tell people that I deleted the links because it was a lie, and so on. Realize that all the damage you're causing is related to this same person. Regards and thank you very much! 🙂 PS: I would like UnknownSoldier to publish the evidence for why he has repeatedly called me a SCAMMER and explain why he also says that to other people. This person is using forum privileges to smear and discredit those who don't work with him. I WANT ALL THE EVIDENCE OF WHAT HE'S SAYING.  
    • Theres a lot of drama going on about Guytis scamming people. I want real, solid proof showing that he scammed anyone attach everything you have.   About reputation: we’re all adults here, yet some are acting like kids fighting over pixels. Think before spreading rumors. False claims don’t make you look better they make you look worse.   I’m waiting for actual evidence that he scammed any user. If there’s nothing to back it up, I’ll deal with it myself. Time’s running out this has been going on long enough.
    • I’ve read the whole topic about Baylee and Protojah. From what I can see, Baylee wanted to buy some htmls and they agreed on a price. Later, Baylee changed her mind and decided not to go through with it. The product wasn’t delivered because Baylee changed her mind. Even if she initially agreed to the price, to avoid confusion. if the files had been sent and payment not made, I would call it a scam. But since they weren’t sent, this isn’t a scam.   I want to stress that I try to be fair to everyone, no matter the situation.   Yeah, Protojah did put in time and effort, and that’s fine, but disagreements happen all the time, even in real life jobs, no matter what the work is. I’m going to lock this topic to avoid more drama. Please keep all personal issues in private messages. And before anyone says anything else I’m not taking sides. I don’t protect scammers and I ban them, but since this isn’t a scam, you both should resolve this situation in DMs.
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..