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. Quote
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! Quote
Vazelos Posted July 21, 2009 Posted July 21, 2009 Noone playing c4 anymore but good share.Hide it Quote
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... Quote
essential Posted July 21, 2009 Author Posted July 21, 2009 when I use that chat full server can see? Sure Quote
essential Posted July 23, 2009 Author Posted July 23, 2009 Tingeriukas, read in topic-message(firs post) after "features:" ... Quote
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. Quote
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. Quote
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 Quote
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] Quote
giojuve Posted July 27, 2009 Posted July 27, 2009 COOOOOOLLLL worked, big thnx!!!!!! :D :D :D :D :D :D :D :D Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.