//Скрипт Рисуй аденой. // MyName запишите свой ник. // зайдите в игру запустите скрипт киньте 1 адену на землю. //Пишет почти все буквы. //Для использования скрипта создайте в директории C:\l2jokes\risuuadenoy //файл 1.txt запишите в него строку. var MyName: String; f: TStringList; jokes: array [1..2] of string; m: TMemo; MyID: Cardinal; MyName2: String; i: Integer; X, Y, Z: Integer; X1, Y1, Z1: Integer; gX: Integer; N: Char; MyTest: String; MyI: Integer; DL: Integer; SI: String; p: Integer; smeshenie, smeshenie1: Integer; v: Integer; procedure Init; //It is called at script turn on begin MyName:='bobrul'; i:= 0; gX := 1; p := 1; v := 0; //Загружаю текст из файла 1.txt f := TStringList.Create; f.LoadFromFile('C:\l2jokes\risuuadenoy\' + IntToStr(1) + '.txt'); jokes[1] := f.Text; f.free; ShowTab; //Создаю TMemo m:=TMemo.Create(UserTab); m.parent:=UserTab; m.align:=alClient; m.ReadOnly:=true; m.ScrollBars:=ssBoth; m.lines.add('Загружен текст из файла 1.txt :'); MyTest:=Trim(Lowercase(jokes[1])); m.lines.add(MyTest); //В MyTest содержиться строка из файла. MyI:=Length(MyTest); //Длина строки MyTest end; procedure Free; //It is called at script turn off begin //Уничтожаю TMemo m.Free; HideTab; end; procedure RisP; //Кидает адену на землю. begin buf := #$17; buf := buf + HStr('A1 81 02 10 01 00 00 00'); WriteD(X); //X WriteD(Y); //Y WriteD(Z); //Z SendToServer; Delay(2000); Application.ProcessMessages; end; procedure Vverx(J: Integer); begin gX:=1; for gX:= 1 to J do begin Y:=Y - 5; //Рисует вверх. Application.ProcessMessages; RisP; Application.ProcessMessages; gX:=gX+1; end; gX:=1; end; procedure Vpravo(J: Integer); begin gX:=1; for gX:= 1 to J do begin X:=X + 5; //Рисует вправо. Application.ProcessMessages; RisP; Application.ProcessMessages; gX:=gX+1; end; //Запомнить максимальное смещение вправо. smeshenie := X - X1; gX:=1; end; procedure Vniz(J: Integer); begin gX:=1; for gX:= 1 to J do begin Y:=Y + 5; //Рисует вниз. Application.ProcessMessages; RisP; Application.ProcessMessages; gX:=gX+1; end; gX:=1; end; procedure Vlevo(J: Integer); begin gX:=1; for gX:= 1 to J do begin X:=X - 5; //Рисует влево. Application.ProcessMessages; RisP; Application.ProcessMessages; gX:=gX+1; end; gX:=1; end; //Заготовки букв. procedure BP(SI: String); // Рисование бувы п. begin if SI = 'а' then begin vverx(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X - 35; // Рисует вправо. Y:=Y - 5; //ВВерх vverx(1); vpravo(4); X:=X + 15; //smeshenie1 := X - X1; //smeshenie := smeshenie1; end; if SI = 'б' then begin vverx(6); vpravo(3); vverx(1); X:=X - 15; // Рисует вправо. Y:=Y + 30; //ВВерх vpravo(3); vverx(3); vlevo(2); end; if SI = 'в' then begin vverx(6); vpravo(3); vniz(2); vlevo(2); vniz(1); vpravo(1); X:=X + 5; // Рисует вправо. vniz(2); vlevo(2); end; if SI = 'г' then begin vverx(6); vpravo(3); vniz(2); end; if SI = 'д' then begin vverx(2); vpravo(5); vniz(1); X:=X - 20; // Рисует вправо. Y:=Y - 5; //ВВерх vverx(4); vpravo(3); vniz(3); end; if SI = 'и' then begin vverx(6); Y:=Y + 20; vpravo(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); vniz(5); end; if SI = 'е' then begin Y:=Y - 5; vverx(3); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(2); X:=X + 5; vniz(1); X:=X + 5; vniz(1); vlevo(4); Y:=Y + 10; vniz(1); vpravo(3); Y:=Y - 5; vpravo(1); end; if SI = 'ё' then begin Y:=Y - 5; vverx(3); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(2); X:=X + 5; vniz(1); X:=X + 5; vniz(1); vlevo(4); Y:=Y + 10; vniz(1); vpravo(3); Y:=Y - 5; vpravo(1); Y:=Y - 30; vlevo(1); X:=X - 10; vlevo(1); end; if SI = 'ж' then begin vverx(1); Y:=Y - 5; vpravo(1); Y:=Y - 5; vpravo(1); vverx(1); X:=X - 5; vverx(1); X:=X + 5; vverx(1); X:=X + 10; vpravo(1); vniz(5); X:=X + 10; vpravo(1); Y:=Y - 5; vlevo(1); Y:=Y - 5; vlevo(1); vverx(1); X:=X + 5; vverx(1); X:=X + 5; vverx(1); end; if SI = 'з' then begin vverx(1); vpravo(4); Y:=Y - 5; vpravo(1); vverx(1); Y:=Y - 5; vlevo(4); Y:=Y - 10; vlevo(1); vpravo(5); vniz(1); end; if SI = 'п' then begin vverx(6); vpravo(3); vniz(5); end; if SI = 'р' then begin vverx(6); vpravo(3); vniz(3); vlevo(2); end; if SI = 'с' then begin vverx(6); vpravo(3); X:=X - 15; // Рисует вправо. Y:=Y + 25; //ВВерх vpravo(3); end; if SI = 'т' then begin Y:=Y - 20; //ВВерх vverx(2); vpravo(4); vniz(1); X:=X - 5; // Рисует вправо. vlevo(1); vniz(4); end; if SI = 'у' then begin vverx(1); Y:=Y - 20; //ВВерх vverx(1); X:=X + 5; // Рисует вправо. vniz(1); X:=X + 5; // Рисует вправо. vniz(2); X:=X - 5; // Рисует вправо. vniz(1); X:=X + 10; // Рисует вправо. Y:=Y - 5; //ВВерх vverx(3); X:=X + 15; end; if SI = 'ф' then begin Y:=Y - 15; //ВВерх vverx(1); Y:=Y - 5; //ВВерх vpravo(7); X:=X + 5; // Рисует вправо. vniz(1); X:=X - 5; // Рисует вправо. vniz(1); vlevo(6); X:=X + 15; // Рисует вправо. Y:=Y - 10; //ВВерх vverx(1); Y:=Y + 5; //ВВерх vniz(1); Y:=Y + 5; //ВВерх vniz(2); end; if SI = 'х' then begin vverx(1); Y:=Y - 20; //ВВерх vverx(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X + 5; vniz(1); X:=X - 20; vverx(1); X:=X + 5; vverx(1); X:=X + 5; vverx(1); X:=X + 5; vverx(1); X:=X + 5; vverx(1); end; if SI = 'ц' then begin vverx(6); Y:=Y + 25; vpravo(3); vverx(5); Y:=Y + 25; X:=X + 5; vniz(1); X:=X + 5; vniz(2); end; if SI = 'ч' then begin Y:=Y - 10; vverx(4); Y:=Y + 15; vpravo(3); vverx(3); Y:=Y + 15; vniz(2); vlevo(1); X:=X + 5; vpravo(1); Y:=Y - 25; X:=X - 5; vlevo(1); X:=X - 10; vlevo(1); end; //Запомню максимальное смещение вправо. end; begin if FromClient then case pck[1] of #$17: begin if p = 1 then begin X := ReadD(10); Y := ReadD(14); Z := ReadD(18); X1 := ReadD(10); Y1 := ReadD(14); Z1 := ReadD(18); p := 2; end; //Подходим ближе к тому месту где будем рисовать. buf := #$0F; WriteD(X); //X WriteD(Y + 10); //Y WriteD(Z); //Z WriteD(X); //X WriteD(Y); //Y WriteD(Z); //Z buf := buf + HStr('01 00 00 00 '); SendToServer; Delay(2000); Application.ProcessMessages; for DL:= 1 to MyI do //MyI длина строки MyTest begin SI:=Copy(MyTest,DL,1); m.lines.add(SI); BP(SI); //Рисую все буквы по порядку. SI := ''; //Возвращаю позицию в позицию для рисования следующей буквы. X := X1 + smeshenie + 10; //Перевод вправо на 10 позиций чтобы рисовать следующую букву. v := v - 5; Y := Y1; Z := Z1; //перемещение вправо перед рисованием следующей буквы. buf := #$0F; WriteD(X); //X WriteD(Y + 10); //Y WriteD(Z); //Z WriteD(X); //X WriteD(Y); //Y WriteD(Z); //Z buf := buf + HStr('01 00 00 00 '); SendToServer; Delay(2000); Application.ProcessMessages; end; v := 0; p := 1; end; end; end.