PDA

Просмотр полной версии : dcChat: работа с чатом


clyr
07.07.2008, 00:05
Только что выложил где-то еще; подумал: скрипт вполне "завершенный", чтобы постить его сюда.

Основа:
Chat.txt из поставки l2phx 320

Возможности:

1. Отдельное окно чата.
2. "Автоспам": одна строчка раз в Х секунд
3. Длинный текст: отправка многострочного сообщения
4. Лог чата.

l2phx
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)+'.'+Tim eToStr(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.

raid
07.07.2008, 23:17
И опять же не хватает херочата!
"%" type:=17

clyr
09.07.2008, 02:40
о! спасибо! Я как-раз не знал ID геройского чата.

jestb
09.07.2008, 20:10
а на Щаут какая циферка ? )

clyr
09.07.2008, 23:28
'!': begin
Msg:=Copy(etext.text,2,1000);
dd:=1;
nm:='';

1, вестимо

jestb
10.07.2008, 01:40
Кстати спасибо за скрипт, полезная штука для трейдера ) .

Amorality
30.07.2008, 13:26
Пользовалась стандартным скриптом Чата, встроенным в ПНХ , там все 1 цветом , нельзя писать в пм , не понятно куда пишут (шаут \ трейд \ пати \ клан \ али \ виспер) , а у тебя это решено? Раскрашивается ли чат в цвета как в ла2 , если это возможно?

clyr
31.07.2008, 15:55
1. чат не раскрашивается.
2. в скрипте понятно, в какой канал говорят: [ALLY]: <текст>
3. в ПМ писать можно: "Имя сообщение, как в игре.
4. модератор, подтверди сообщение.

DOJ
08.09.2008, 13:31
А возможно писать в геройски чат если ты не герой???

Crypto
08.09.2008, 23:38
Возможно ли расширить работу с чатом с помощью вот этих модулей?
http://boltunstyle.boom.ru/smartbot/index.htm
В плане эксперимента.

xkor
09.09.2008, 13:35
Crypto, теоретически можно...

clyr
22.11.2008, 01:15
Возможно ли расширить работу с чатом с помощью вот этих модулей?
http://boltunstyle.boom.ru/smartbot/index.htm
В плане эксперимента.
аааааа!!! можно! нужно!! сделаю!!!

Rix
07.04.2009, 12:02
У меня проблемка, запустил этот скрипт пишу и отправляю пакет и в логе игры появляется надпись "Вы не можете распустить алианс" что это может быть?

Сервер Камаэль

NLObP
07.04.2009, 13:57
У меня проблемка, запустил этот скрипт пишу и отправляю пакет и в логе игры появляется надпись "Вы не можете распустить алианс" что это может быть?

Сервер Камаэль

Скрипт расчитан на С4-Интерлюдию! Переписывай под Камаель (меняй id пакетов).

SolaVento
14.08.2009, 04:43
А может кто знает, как с помощью FS разноцветный текст выводить?
Теоретичеки TMemo это не может и надо использовать TRichEdit, но мне не помогло(
А чат разноцветный хочется...

alexteam
14.08.2009, 22:09
реализовать интерфейс и управляющие им команды в плагине.

TAMBIK
14.08.2009, 22:19
А может кто знает, как с помощью FS разноцветный текст выводить?
Теоретичеки TMemo это не может и надо использовать TRichEdit, но мне не помогло(
А чат разноцветный хочется...

так есть проги спец для раскраски чата
например
Heisers Sys Editor.
1. В вашей папке с игрой, в папке system есть фаил systemmsg-e , копируем его в папку Heisers Sys Editor.
2. Запускаем фаил L2 modder.exe
3. Затем в меню File нажимаем на Load Messages. (загружает список всех сообщений)
4. После каждой измененной строчки нажимаем на Save Text/Colour
5. А что бы Сохранить все изменения, заходим в меню File и нажимаем на Save Messages.
6. Затем копируем обратно фаил systemmsg-e в вашу папку с игрой, в папку system с заменой.

//alexteam:
Человек интересуется как раскрасить текст выводящийся в tmemo/trichedit. на манер того как раскрашивает пх просмотр пакета.
А может кто знает, как с помощью FS(FastScript) разноцветный текст выводить?
Теоретичеки TMemo это не может и надо использовать TRichEdit, но мне не помогло(
Тема топика
dcChat: работа с чатом
раздел
L2PacketHack > Жесткий скриптинг
в теме - скрипт для работы с чатом. а не модификации клиента.

SolaVento
14.08.2009, 23:07
ну плагины всё могут, но хотелось бы пока скриптовыми средствами справиться.

Kostya
15.11.2009, 19:31
Ошибку выдает в строке - etext.align:=alTop;

Что делать?!

tiranosaur
13.12.2009, 01:07
Насчет болтуна кто-то пытался?

QaK
13.12.2009, 12:38
Kostya, закоменти =)

supernewbie
29.07.2010, 10:49
почему-то скрипт при компиляции выдавал ошибки, закоментил пару строк, с ужасом понял что он не разпознает крик, хч и пм) доделал

Gray314
17.12.2010, 00:06
Так все таки вопрос о том чтобы писать в херо, не являсь таковым? Можно реализовать?

dyh9l
19.12.2010, 16:39
Так все таки вопрос о том чтобы писать в херо, не являсь таковым? Можно реализовать?
НЕТ!!! :mad: