Регистрация Главная Пользователи Все разделы прочитаны
Сообщения за день Справка Регистрация

Рисунки символами в чате

-

Боты, скрипты и прочий софт для Lineage 2

- Весь софт по Lineage 2 и все, что связано с ботоводством, скриптописанием и брутом - в этом разделе

Ответ
 
Опции темы
Старый 31.07.2009, 18:19   #1
Заблокирован
 Старший сержант
Аватар для GraNIT
 
GraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауруGraNIT излучает ауру
Регистрация: 27.07.2009
Сообщений: 237
Популярность: 578
Сказал(а) спасибо: 593
Поблагодарили 329 раз(а) в 147 сообщениях
Отправить сообщение для GraNIT с помощью ICQ Отправить сообщение для GraNIT с помощью Skype™
 
По умолчанию Рисунки символами в чате

Скрипт для рисунков в чате {Gracia Part 2}
PHP код:
program Risuem_w_chat2;
const
  
Name='NAME';     //имя персонажа в игре

  
Pathtxt='.\scripts\';   //путь к файлу
  NameTxt='
picture.txt';  //имя файла с рисунком (текстом)

  debug=true;             //true - чтобы видеть команды в чате

  DefaultExecuteDelay=500;
//..............................................................................
var
  TextPic : TStringlist;    //сюда загружаем текст из файла
  ExecuteTimer: Ttimer;     //основной таймер
  ExecuteDelay: integer;    //задержка между сообщениями в чат

  strIndex: integer;        //номер строки
  chat: integer;            //в какой чат слать

//******************************************************************************
procedure Init; //Вызывается при включении скрипта
var
  i, j :integer;
begin
  TextPic:=TStringList.Create;
  //загружаем файл
  TextPic.LoadFromFile(PathTxt+NameTxt);

  strIndex:=0; //начинаем с первой строки

  ExecuteDelay:=DefaultExecuteDelay; //задержка между сообщениями в чат

  ExecuteTimer:=TTimer.Create(nil);
  ExecuteTimer.Enabled:=false;
  ExecuteTimer.Interval:=ExecuteDelay; //время задержки
  ExecuteTimer.OnTimer:=@OnExecute;
end;
//..............................................................................
procedure Free; //Вызывается при выключении скрипта
begin
  ExecuteTimer.Enabled:=False; //остановим на всякий случай
  Executetimer.Free;
  TextPic.free;
end;
//******************************************************************************
{
Вспомогательные процедуры и функции
}
//******************************************************************************
procedure debugMsg(msg: string);
begin
  if debug then
  begin
    sendMSG(msg);
    SendMessage(msg);
  end;
end;
//******************************************************************************
{
Посылаем пакеты
}
//******************************************************************************
//послать сообщение в чат (видим только мы)
//use: SendMessage(msg);
procedure SendMessage(msg:string);  //отправка системных сообщений клиенту
begin
  buf:=#$4A;
  WriteD(0);
  WriteD(10);
  WriteS('');
  WriteS(msg);
  SendToClientEx(Name);
end;

//49=Say2:s(Text)d(Type)s(Target)
procedure SendMs(msg: string; dest: integer);
begin
  //buf:=#$49;  //Грация
  buf:=#$38;  //Интерлюдия
  WriteS(Msg);
  WriteD(dest);
  WriteS('');
  SendToServerEx(Name);
end;


//..............................................................................
function ExtractValue(sData, sFind: string;): string;
{возвращаем конец строки после найденного символа}
var
  s: string;
  i,j: integer;
begin
  i:=0;
  result:='';
  i:=find(sData, sFind);
  if i>0 then  result:=copy(sData, i+length(sFind), length(sData));
end;
function RtrimEx(sData, sDelimiter: string): string;
{Удаление из строки S заданные символы справа}
var
  m,i : integer;
  s: string;
begin
  s:=sData;
  i:=0;
  while i=0 do
  begin
      m:=length(s);
      if m>0 then begin
         if s[m]<>sDelimiter then i:=1;
         if s[m]=sDelimiter then delete(s,m,1);
      end;
      if m <= 0 then i:=1;
  end;
  result:=s;
end;
//..............................................................................
function LtrimEx(sData, sDelimiter:String): string;
{Удаление из строки S заданные символы слева}
var
  m,i : integer;
  s: string;
begin
  s:=sData;
  i:=0;
  while i=0 do
  begin
      m := length(s);
      if m > 0 then
      begin
         if s[1]<>sDelimiter then i:=1;
         if s[1]=sDelimiter then delete(s,1,1);
      end;
      if m <= 0 then i:=1;
  end;
  result:=s;
end;
//..............................................................................
function Ltrim(sData:String): string;
{Удаление из строки S заданные символы слева}
begin
  result:=LtrimEx(sData,' ');
end;
//..............................................................................
function Rtrim(sData:String): string;
{Удаление из строки S заданные символы слева}
begin
  result:=RtrimEx(sData,' ');
end;
//..............................................................................
function AllTrimEx(sData, sDelimiterLeft, sDelimiterRight: String): string;
{Удаление из строки S заданные символы слева и справа}
begin
  result:=LtrimEx(RtrimEx(sData, sDelimiterRight), sDelimiterLeft);
end;
//..............................................................................
function AllTrim(sData: String): string;
{Удаление из строки S заданные символы слева и справа}
begin
  result:=Ltrim(Rtrim(sData));
end;
//..............................................................................
function ExtractName(sData, sFind: string): string;
{возвращаем строку до найденного символа}
var
  i: integer;
begin
  i:=0;
  result:='';
  i:=find(sData, sFind);
  if i>0 then result:=copy(sData, 1, i-length(sFind)+1);
end;
//..............................................................................
function Find(const S, P: string): Integer;
{Функция Find ищет подстроку P в строке S и возвращает индекс первого символа
подстроки или 0, если подстрока не найдена. Хотя в общем случае этот метод,
как и большинство методов грубой силы, малоэффективен, в некоторых ситуациях
он вполне приемлем.}
var
  i, j: Integer;
begin
  Result:=0;
  if Length(P)>Length(S) then
  begin
    debugMSG('
Несоответствие длинp='+inttostr(Length(P))+' S='+inttostr(Length(s)));
    debugMSG('
Строка'+inttostr(strIndex));
    Exit;
  end;
  for i:=1 to Length(S)-Length(P)+1 do
  begin
    for j:=1 to Length(P) do
    begin
      if P[j]<>S[i+j-1] then
        Break
      else if j=Length(P) then
      begin
        Result:=i;
        Exit;
      end;
    end;
  end;
end;

//******************************************************************************
// Парсер/Исполнитель: главный цикл обработки команд Валкера
//******************************************************************************
function OnExecute(Sender: TObject): integer; //CommandList: TStringList
var
  s, cmd, param : string;
begin
  try
    s:=TextPic[strIndex]; //считываем строку рисунка
    SendMs(s, chat);      //выводим в чат
    inc(strIndex);        //следующая строка
  finally
    ExecuteTimer.Enabled:=False; //остановим
  end;
end;

procedure UserCommands;    //комманды пользователя
var
  s, cmd: string;
begin //если комманда обработана удачно, то в чат сообщение не попадет, а будет выдано системное сообщение прямо в клиент
  s:=ReadS(2);
  debugMsg(s);
  s:=s+'
='; //чтобы можно было взять число в конце
  cmd:=RTrimEx(ExtractName(s, '
='), '=');  //получили строку вплодь до найденного символа
  cmd:=UpperCase(alltrim(cmd));
  case cmd of
    //команда загрузки скрипта>  load=picture
    '
LOAD': begin
        s:=ExtractValue(s, '
=');  //получили остаток строки начиная с искомого символа
        s:=RTrimEx(ExtractName(s, '
='), '=');  //получили строку вплодь до найденного символа
        TextPic.clear;
        TextPic.LoadFromFile(PathTxt+s+'
.txt'); //загружаем
        pck:='';
    end;
    '
START','RUN': begin
        strIndex:=0; //начинаем с первой строки
        ExecuteDelay:=DefaultExecuteDelay; //задержка между выводом строк на экран
        ExecuteTimer.Enabled:=true; //включим таймер
        pck:='';
    end;
    '
STOP': begin
        ExecuteTimer.Enabled:=false; //выключим интерпретацию скрипта валкера
        pck:='';
    end;
    '
DEST','CHAT': begin
        s:=ExtractValue(s, '
=');  //получили остаток строки начиная с искомого символа
        s:=RTrimEx(ExtractName(s, '
='), '=');  //получили строку вплодь до найденного символа
        chat:=strtoint(s); //сохраним тип чата куда слать сообщение
        pck:='';
    end;
  end;
end;

//******************************************************************************
{
основная часть скрипта, вызывается при приходе каждого пакета, если скрипт включен
}
//******************************************************************************
begin
  //****************************************************************************
  //не обрабатываем пустые пакеты
  if pck='' then exit;

  //****************************************************************************
  if (ConnectName=Name) and FromClient then
  begin
    case pck[1] of
      //************************************************************************
      //#$49: UserCommands; //Say2:s(Text)d(Type)s(Target) Грация
      #$38: UserCommands; //Say2:s(Text)d(Type)s(Target) Интерлюдия
    end;
  end;
end. 
Picture.txt[HTML]____________$$$$$$$*$______$$$$$$$$$
__________$$$$$$$$$*$$$__$$$$$$$__$$$$
_________$$$$$$$$$$*$$$$$$$$$$$$$$__$$$
_________$$$$$$$$$$*$$$$$$$$$$$$$$__$$$
_________$$$$$$$$$$*$$$$$$$$$$$$$$__$$$
__________$$$$$$$$$*$$$$$$$$$$$$$__$$$
____________$$$$$$$*$$$$$$$$$$$$$$$$
_______________$$$$*$$$$$$$$$$$$$
_________________$$*$$$$$$$$$$$
____________________$$$$$$$$
_____________________$$$$$
______________________$$$
_______________________$[/HTML]
Инструкция по использованию:
[HTML]1.Как обычно правим NAME
2.Запускаем скрипт
3.В папке \scripts\picture.txt должен лежать файл с текстом или рисунком
4.загружаем командой в чате> load=picture
5.сообщаем в какой чат писать, командой в чате> dest=1 или chat=1 (0 - общий чат и т.д.)
6.запускаем на исполнение, командой в чате> start или run
7.экстренная остановка скрипта, командой в чате> stop
8.после вывода картинки скрипт останавливается сам.[/HTML]
Пример:[Ссылки могут видеть только зарегистрированные пользователи. ]
ЗЫ:Нашел на Coderx.ru

Последний раз редактировалось GraNIT; 31.07.2009 в 18:24.
  Ответить с цитированием
4 пользователя(ей) сказали cпасибо:
KreeDoZz (24.08.2009), pool (07.11.2009), Razzor (01.08.2009), Silence (31.07.2009)
Ответ

Опции темы

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
а можно ли видео разбить на рисунки? roma!sk Треп 19 30.10.2008 01:30

Заявление об ответственности / Список мошенников

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

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net