Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 02.10.2009, 13:31   #1
Местный
 
Аватар для nezabudkin
 
Регистрация: 06.03.2008
Сообщений: 154
Сказал Спасибо: 46
Имеет 130 спасибок в 38 сообщенях
nezabudkin
По умолчанию Операции с массивами

Ребята, помогите, некак не могу разобраться. Скрипт относится к дешифрации пакетов. Нужно увеличить число длинной 4 байта, находящееся в массиве байтов, на определенную величину. В Delphi все просто:
delphi Код:
Inc(PLongWord(@Key[0])^,size);

А как это сделать в fastscript? Вот сам скрипт, проблема в процедуре DecryptPacket.

delphi Код:
var frm:Tform; memo:Tmemo; initmode: boolean; packet, stroka:string; key: array [0..7] of byte; KeyConst: array [0..7] of byte; procedure Init; //Вызывается при включении скрипта begin   frm := TForm.Create(nil);   frm.Caption := 'Chat';   frm.BorderStyle := bsSizeable;   frm.Position := poScreenCenter;   frm.align:=alBottom;   frm.Width:=700;   frm.Height:=200;   frm.FormStyle:=FsStayOnTop;   frm.Show;   memo :=TMemo.create(nil);   memo.parent:=frm;   memo.align:=alClient;   memo.WordWrap:=false;   memo.ScrollBars:=ssBoth;   initmode:= true;   packet:='';   stroka:='';   KeyConst[0]:= $84;   KeyConst[1]:= $73;   KeyConst[2]:= $66;   KeyConst[3]:= $E4;   KeyConst[4]:= $64;   KeyConst[5]:= $63;   KeyConst[6]:= $60;   KeyConst[7]:= $60; end; procedure Free; //Вызывается при выключении скрипта begin   memo.free;   frm.Free; end; function inttostrhex (number: byte) : string;  const   hexdigit = '0123456789ABCDEF';  var   i, d1, d2: integer;  begin   d1:=number shr 4;   d2:=number - (d1 shl 4);   result:= hexdigit[(d1 and $F)+1];   result:= result + hexdigit[(d2 and $F)+1];  end; function PackettoStr : string;  var   i, size: integer;   strochka: string;  begin   strochka:='';   size:=length(packet);   if size > 50 then size := 50;   for i:=1 to size do    begin     strochka:= strochka + inttostrhex(ord(packet[i])) + ' ';    end;   result:= strochka;  end; procedure KeyPacket;  var   i,n: byte;  begin   for i:=0 to 7 do    begin     key[i]:= ReadC(i+3) xor KeyConst[i];    end;  end; procedure DecryptPacket;  var   i, size: integer;  begin   size:=length(packet);   for i:=size downto 2 do                packet[i]:=chr(ord(packet[i]) xor Key[(i-1) and 7] xor ord(packet[i-1]));   if size<>0 then packet[1]:= chr(ord(packet[1]) xor Key[0]);   //ВОТ ТУТ ПРОБЛЕМА КАК ЭТО СДЕЛАТЬ?   //Inc(PLongWord(@Key[0])^,size);   // или   //IncasInteger(key, 0, size);  end; //основная часть скрипта //вызывается при приходе каждого пакета если скрипт включен begin  if pck = '' then exit;  if InitMode and FromServer then   begin    if pck[1] = #$2E then     begin      KeyPacket;      InitMode:= false;     end;    exit;    end;  if not InitMode and FromServer then   begin    packet:=pck;    DecryptPacket;    stroka:= PackettoStr;    memo.lines.add(stroka);   end; end.

Добавлено через 17 часов 6 минут
Тему АП!

Последний раз редактировалось nezabudkin, 02.10.2009 в 13:31. Причина: Добавлено сообщение
nezabudkin вне форума   Ответить с цитированием
Старый 02.10.2009, 14:06   #2
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

необходимо:
при инкременте представить array [0..7] of byte;
как строку длинной в 8 байтов.
юзать для инкремента pck/buff + readx/writex
возможно даже прийдеться вручную "эмулировать" преполнение переменной.

оригинальный пцк запоминать перед, и востанавливать после этой возни с ключем.
__________________
L2Ext - project closed.

Последний раз редактировалось alexteam, 02.10.2009 в 14:16.
alexteam вне форума   Ответить с цитированием
За это сообщение alexteam нажился спасибкой от:
Старый 02.10.2009, 16:09   #3
Местный
 
Аватар для nezabudkin
 
Регистрация: 06.03.2008
Сообщений: 154
Сказал Спасибо: 46
Имеет 130 спасибок в 38 сообщенях
nezabudkin
По умолчанию

Цитата:
Сообщение от alexteam Посмотреть сообщение
необходимо:
при инкременте представить array [0..7] of byte;
как строку длинной в 8 байтов.
юзать для инкремента pck/buff + readx/writex
возможно даже прийдеться вручную "эмулировать" преполнение переменной.

оригинальный пцк запоминать перед, и востанавливать после этой возни с ключем.

alexteam, это называется танцы с бубном
но, всеравно, спасибо!
nezabudkin вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



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

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


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

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

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