Вернуться   CoderX :: Forums > Основные форумы > Полезности
Войти через OpenID

Полезности Исключительно для полезных тем из других разделов.
Темы тут не создаются!
Темы сюда перемещаются из других разделов, и на их старых местах остаются постоянные перенаправления.

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 07.07.2008, 00:02   #21
Пользователь
 
Регистрация: 10.12.2007
Сообщений: 54
Сказал Спасибо: 4
Имеет 46 спасибок в 16 сообщенях
clyr пока неопределено
По умолчанию

Вот вам скриптик....

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)+'.'+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.
Добавлено через 1 минуту
Основа:
Chat.txt из поставки l2phx 320

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

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

Последний раз редактировалось clyr, 07.07.2008 в 00:04. Причина: Добавлено сообщение
clyr вне форума   Ответить с цитированием
За это сообщение clyr нажился спасибкой от:
Старый 07.07.2008, 00:12   #22
Новичок
 
Регистрация: 08.04.2008
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
turamart
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
Юля, ты мне кстати в асе так и не ответила можно ли гдето твою чюдопрограммулинку достать), про сорци и спрашивать боюсь ops:
Я вылаживал эту прогу (LineAge 2 Chat) недели месяц назад но тему удалили. Не справедливо...
turamart вне форума   Ответить с цитированием
Старый 07.07.2008, 00:22   #23
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

turamart, да не, гдето эту темку видел и из неё качал, врятли её потом кто удалил, наверно просто затерялась среди моря флуда...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 16.09.2010, 15:07   #24
Новичок
 
Регистрация: 16.09.2010
Сообщений: 4
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Vimmer пока неопределено
По умолчанию

Цитата:
Сообщение от Drin Посмотреть сообщение
чуть элегантнее и для CT1, стилистику кода такую же как у авторши оставил для понятности:

Код:
        lib_NWindow := LoadLibrary('NWindow.dll');
        lib := lib_NWindow + $132060;
        VirtualProtect(pointer(lib), 3, PAGE_EXECUTE_READWRITE, OldProtect);
        p := pointer(lib);
        byte(p^) := $c2;
        byte(pointer(dword(p) + 1)^) := $08;
        byte(pointer(dword(p) + 2)^) := $00;
        VirtualProtect(pointer(lib), 3, PAGE_EXECUTE_READWRITE, OldProtect);
мб нубский вопрос, а зачем в конце вызывается VirtualProtect еще 1 раз?
с теми же параметрами..?
Vimmer вне форума   Ответить с цитированием
Старый 16.09.2010, 19:57   #25
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Vimmer, некропостер
QaK вне форума   Ответить с цитированием
Старый 16.09.2010, 21:46   #26
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Vimmer, по логике опечатка, должна вызваться как то так:
VirtualProtect(pointer(lib), 3, OldProtect, OldProtect);
дабы восстановить что было...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 16.09.2010, 22:05   #27
Местный
 
Регистрация: 11.06.2010
Сообщений: 644
Сказал Спасибо: 119
Имеет 85 спасибок в 77 сообщенях
dyh9l пока неопределено
По умолчанию

Цитата:
Сообщение от QaK Посмотреть сообщение
Vimmer, некропостер
хм.., а смысл от постов, тут веть хайдов нету вроде?)
dyh9l вне форума   Ответить с цитированием
Старый 16.09.2010, 23:38   #28
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

dyh9l, в чем связь хайдов и воскрешения тем пролежавших в забвении пару лет?
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 16.09.2010, 23:40   #29
Peacedoorball
 
Аватар для spoil99
 
Регистрация: 21.09.2009
Сообщений: 1,641
Сказал Спасибо: 226
Имеет 112 спасибок в 85 сообщенях
spoil99 может только надеятся на улучшение
По умолчанию

некрофилов сжечь!
__________________
йа баранко
spoil99 вне форума   Ответить с цитированием
Старый 17.09.2010, 05:05   #30
Новичок
 
Регистрация: 16.09.2010
Сообщений: 4
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
Vimmer пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
Vimmer, по логике опечатка, должна вызваться как то так:
VirtualProtect(pointer(lib), 3, OldProtect, OldProtect);
дабы восстановить что было...
Спасибо, тоже подумалось что должна быть ошибка, но решил уточнить, а малоли какой хитрый выкрутас
Vimmer вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Полезности


Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 22:39.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!