Jump to content

Recommended Posts

Posted

It a chat via phx

Basis:

Chat.txt from phx 320

 

Features:

 

1. A separate chat window.

2. "Avtospam: one line every X seconds

3. Long text: sending multiline messages

4. Log chat.

 

own script:

const
    MaxMessages = 1000;
var
 m: TMemo;
 frm:TForm;
 penel: TPanel;
 etext:  tedit;
 button: tbutton;
 box   : TCheckBox;
 every : TEdit;
 _Name : TEdit;
 i: Integer;
 tm:TTimer;
 Message, Name: String;

procedure SendMs(Sender: TObject);
var
 Msg, Nm: String;
 dd: integer;
begin
 if etext.text<>'' then begin
   buf:=#$38;
   case etext.text[1] of
     '!': begin
       Msg:=Copy(etext.text,2,1000);
       dd:=1;
       nm:='';
     end;
     '$': begin
       Msg:=Copy(etext.text,2,1000);
       dd:=9;
       nm:='';
     end;
     '+': begin
       Msg:=Copy(etext.text,2,1000);
       dd:=8;
       nm:='';
     end;
     '"': begin
       dd:=pos(' ', etext.text);
       Msg:=Copy(etext.text,dd+1,1000);
       nm:=Copy(etext.text,2,dd-3);
       dd:=2;
     end;
     '#': begin
       Msg:=Copy(etext.text,2,1000);
       dd:=3;
       nm:='';
     end;
     '@': begin
       Msg:=Copy(etext.text,2,1000);
       dd:=4;
       nm:='';
     end;
     else begin
       Msg:=etext.text;
       dd:=0;
       nm:='';
     end;
   end;
   WriteS(Msg);
   WriteD(dd);
   if nm<>'' then WriteS(Nm);
   SendToServerEx(_Name.Text);
 end;
end;
procedure onNewCommand(obj:TObject;key:string);
var i:integer;
var symbol:Variant;
var after:string;
begin
    if (key[1]=#$0D) then begin
        SendMs(obj);
        symbol := etext.Text[1];
        after := '';
        if symbol = '#' then after := '#';
        if symbol = '!' then after := '!';
        if symbol = '@' then after := '@';
        if symbol = '$' then after := '$';
        etext.Text := after;
    end;
end;
procedure onTimer(Sender:TObject);
begin
 tm.Interval := StrToInt(every.Text);
 if box.checked = true then SendMs(Sender);
end;
procedure Init;
begin
 frm := TForm.Create(nil);
 frm.Caption := 'Chat';
 frm.BorderStyle := bsSizeable;
 frm.Position := poDesigned ;
 frm.Width:=400;
 frm.Height:=600;
 m:=TMemo.Create(frm);
 m.parent:=frm;
 m.align:=alClient;
 m.ReadOnly:=true;
 m.ScrollBars:=ssBoth;
 penel:=TPanel.Create(frm);
 penel.parent:=frm;
 penel.align:=alBottom;
 penel.height:=48;
 etext:=tedit.Create(penel);
 etext.parent:=penel;
 etext.align:=alTop;
 button:=tbutton.Create(penel);
 button.parent:=penel;
 button.top := etext.height;
 button.caption:='Send';
 button.onClick:=@SendMs;
 box := TCheckBox.Create(penel);
 box.parent := penel;
 box.Top := etext.height + 2;
 box.Left := button.width + button.left +2;
 box.Caption := 'Shtorm via: ';
 every:=tedit.Create(penel);
 every.parent:=penel;
 every.Left := box.Left + box.Width;
 every.Top := button.top;
 every.Text := IntToStr(3000);
 tm := TTimer.Create(frm);
 tm.Interval := 1000;
 tm.Enabled := true;
 tm.OnTimer := @OnTimer;
 etext.OnKeyPress := @onNewCommand;
 _Name:=tedit.Create(frm);
 _Name.parent:=frm;
 _Name.align := alTop;
 _Name.Text := '';
 frm.Show;
end;

procedure SaveToFile(prefix:string);
var name:string;
begin
    name := prefix+'.'+ConnectName+'.'+DateToStr(Date)+'.'+TimeToStr(Time)+'.txt';
    while Pos(':',name) <> 0 do begin
          name[Pos(':',name)] := '-';
    end;
    m.Lines.SaveToFile(name);
end;

procedure Free;
begin
 SaveToFile('ChatLog');
 box.Free;
 every.Free;
 tm.Free;
 etext.Free;
 button.Free;
 penel.Free;
 m.Free;
 frm.Free;
end;



var tp:integer;
var ct:string;
var MessageCounter:integer;
begin
if _Name.Text = '' then _Name.Text := ConnectName;
if FromServer and (ConnectName = _Name.Text) and (pck[1]=#$4a) then
 begin
   i:=10;
   name:=ReadS(i);
   message:=ReadS(i);
   tp := ReadD(6);
   ct := '???';
   if tp = 0 then ct := 'GNR';
   if tp = 8 then ct := 'TRD';
   if tp = 3 then ct := 'PRT';
   if tp = 4 then ct := 'CLN';
   if tp = 9 then ct := 'ALY';

   ct := DateToStr(Date) + ' '+ TimeToStr(Time) + ', '+ ct;

   if name='' then name:='pronouncing: ';
   m.Lines.Add('['+ct+'] '+Name+': '+message);

   if MessageCounter > MaxMessages then begin
      SaveToFile('Backup');
      //m.Lines.Add('BACKUPED');
      MessageCounter := 0;
   end;
   MessageCounter := MessageCounter+1;
 end;
end.

enjoy ;)

 

P.s. Work only on c4-interlude.

Posted

Tried with C4 client works fine but unfortunately doesn't work with L2 Gracia  :-X

 

Nice share anyway, thanks!

in the end i wrote :

P.s. Work only on c4-interlude.

 

Noone playing c4 anymore but good share.Hide it

i think 100 posts enought? :)

P.s. In interlude work too...

Posted

It's for spamming purpsoses or what?

If yes, maybe the server has protection which doesn't allow u to speak so fast.

Anyway, thanks.

Posted

It's for spamming purpsoses or what?

If yes, maybe the server has protection which doesn't allow u to speak so fast.

Anyway, thanks.

 

In some L2J server this works, but is a waste of time ;P

 

Any way, ty for sharing.

Posted

It's for spamming purpsoses or what?

If yes, maybe the server has protection which doesn't allow u to speak so fast.

Anyway, thanks.

yes. But if ur server has protection, you can change in script time between repeats.

In some L2J server this works, but is a waste of time ;P

i dont think so. Anyway it works on most servers(c4-interlude) where works l2phx...

Such a server, I would not call a waste of time, since such servers are many and among them there is a decent where online > 2k ;P

Posted

lol interesting thing..I have never heard for this.. nice m8 for your gr8 move to share it with us and I am going to try it for the results!  8) [i will edit the results as soon as I test it w8 10 mins]

  • 2 weeks 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

    • Can't find you on discord ,can you share your discord profile here?
    • Hello lovely community, When you talk, about trust first of all I want you to stay and think for a second. - If was not a trusted person why I would even share this information? (seriously not a single reason) - I did not share any information about how this happened, and which company had the vulnurability (the issue has been fixed from their side and they was very helpful and took quick action + our dev as expert took that quick action) I also want warmly thank abusix.com for providing detailed information (not going to share the whole email for obivious reasons) Mentioning  - So lets clarify now what to except from the project. We have different different protocols and 2 engines. But first we are going to start with Interlude Mastered which is going to be a modern engine but a familiar one. Secondary project will be with the latest engine UE however this one needs allot of work is not that easy it takes time(so we will have it soon as is ready) I got to agree with Seamless, Good project are developed quietly. Also we have already clarified that the servers that we are working are under development how is possible guys to give you detailed information about something that is not finished yet? The topic opened on General Discussion Instead of  Private Servers for a reason. Some of you already have serves in this topic please and none of you have approach they way i do and be open for your own servers unless you have it ready until now so please.... atleast I'm taking a step and I'm pretty much open to share information with everyone. Once everything is ready Server information and everything will be shared in the topic: Private servers. Thanks in advance.  
    • Boost your connection speed and secure your privacy today!  Official Website: https://novproxy.com?kwd=tt-max
    • Good projects are developed quietly and launched only when they are ready to maintain a consistent online presence and build a community. The formula is simple, yet people keep making the same mistakes.   Start with an alpha phase and keep access limited. Since the author claims to already have an inner circle, use that group for early testing. Then open a closed beta through invitation keys or a similar system. Later, announce an open beta.   During these early stages, do not accept donations, partnerships, or other forms of support. Focus entirely on improving the project. Once it is stable, announce it and continue maintaining it regardless of the maximum number of users on
    • in best case this project will open with 100 ppl
  • 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..