Жесткий скриптинг Раздел для обсуждения готовых и тестируемых скриптов
Внимание! В разделе введена жесткая модерация, темы и сообщения публикуются только после проверки модераторами
07.07.2008, 00:05
#1
Пользователь
Регистрация: 10.12.2007
Сообщений: 54
Сказал Спасибо: 4
Имеет 46 спасибок в 16 сообщенях
dcChat: работа с чатом
Только что выложил где-то еще; подумал: скрипт вполне "завершенный", чтобы постить его сюда.
Основа:
Chat.txt из поставки l2phx 320
Возможности:
1. Отдельное окно чата.
2. "Автоспам": одна строчка раз в Х секунд
3. Длинный текст: отправка многострочного сообщения
4. Лог чата.
l2phx
delphi Код:
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 := 'Шторм через: ' ;
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:='Объявление: ' ;
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 .
За это сообщение clyr нажился 14 спасибками от:
alexteam ,
APXAHGEJI ,
Be3geBJIa3 ,
DashKAaa ,
dfackk ,
dyh9l ,
DzumoHu4 ,
Emocean ,
Grinch ,
jestb ,
Johnson ,
NLObP ,
pir ,
SexGuru
07.07.2008, 23:17
#2
Новичок
Регистрация: 01.07.2008
Адрес: Пермь
Сообщений: 21
Сказал Спасибо: 0
Имеет 37 спасибок в 10 сообщенях
И опять же не хватает херочата!
__________________
Emo-chan style.
09.07.2008, 02:40
#3
Пользователь
Регистрация: 10.12.2007
Сообщений: 54
Сказал Спасибо: 4
Имеет 46 спасибок в 16 сообщенях
о! спасибо! Я как-раз не знал ID геройского чата.
09.07.2008, 20:10
#4
Новичок
Регистрация: 21.12.2007
Сообщений: 10
Сказал Спасибо: 7
Имеет 1 спасибку в 1 сообщении
а на Щаут какая циферка ? )
09.07.2008, 23:28
#5
Пользователь
Регистрация: 10.12.2007
Сообщений: 54
Сказал Спасибо: 4
Имеет 46 спасибок в 16 сообщенях
Код:
'!': begin
Msg:=Copy(etext.text,2,1000);
dd:=1;
nm:='';
1, вестимо
10.07.2008, 01:40
#6
Новичок
Регистрация: 21.12.2007
Сообщений: 10
Сказал Спасибо: 7
Имеет 1 спасибку в 1 сообщении
Кстати спасибо за скрипт, полезная штука для трейдера ) .
30.07.2008, 13:26
#7
Местный
Регистрация: 11.10.2007
Сообщений: 144
Сказал Спасибо: 44
Имеет 7 спасибок в 7 сообщенях
Пользовалась стандартным скриптом Чата, встроенным в ПНХ , там все 1 цветом , нельзя писать в пм , не понятно куда пишут (шаут \ трейд \ пати \ клан \ али \ виспер) , а у тебя это решено? Раскрашивается ли чат в цвета как в ла2 , если это возможно?
31.07.2008, 15:55
#8
Пользователь
Регистрация: 10.12.2007
Сообщений: 54
Сказал Спасибо: 4
Имеет 46 спасибок в 16 сообщенях
1. чат не раскрашивается.
2. в скрипте понятно, в какой канал говорят: [ALLY]: <текст>
3. в ПМ писать можно: "Имя сообщение, как в игре.
4. модератор, подтверди сообщение.
За это сообщение clyr нажился спасибкой от:
08.09.2008, 13:31
#9
Новичок
Регистрация: 23.08.2008
Адрес: Россия
Сообщений: 11
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
А возможно писать в геройски чат если ты не герой???
08.09.2008, 23:38
#10
Новичок
Регистрация: 08.09.2008
Сообщений: 15
Сказал Спасибо: 11
Имеет 0 спасибок в 0 сообщенях
Возможно ли расширить работу с чатом с помощью вот этих модулей?
http://boltunstyle.boom.ru/smartbot/index.htm
В плане эксперимента.
Опции темы
Опции просмотра
Линейный вид
Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
Часовой пояс GMT +4, время: 06:42 .
vBulletin style designed by
MSC Team .
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод:
zCarot
Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!