essential Posted July 21, 2009 Posted July 21, 2009 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.
Mywk Posted July 21, 2009 Posted July 21, 2009 Tried with C4 client works fine but unfortunately doesn't work with L2 Gracia :-X Nice share anyway, thanks!
essential Posted July 21, 2009 Author Posted July 21, 2009 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...
essential Posted July 21, 2009 Author Posted July 21, 2009 when I use that chat full server can see? Sure
essential Posted July 23, 2009 Author Posted July 23, 2009 Tingeriukas, read in topic-message(firs post) after "features:" ...
mg13gr Posted July 23, 2009 Posted July 23, 2009 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.
GrisoM Posted July 23, 2009 Posted July 23, 2009 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.
essential Posted July 24, 2009 Author Posted July 24, 2009 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
K4rmaArr0ws Posted July 24, 2009 Posted July 24, 2009 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]
giojuve Posted July 27, 2009 Posted July 27, 2009 COOOOOOLLLL worked, big thnx!!!!!! :D :D :D :D :D :D :D :D
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now