Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Разработка
Войти через OpenID

Разработка Раздел для совместной разработки/доработки программы

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 09.04.2012, 14:35   #1
Новичок
 
Регистрация: 09.04.2012
Сообщений: 5
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
AltairAlentus пока неопределено
По умолчанию Проблема с плагином

Я хочу переделать пару своих скриптов под плагины но конечно в программировании не очень силен, сделал простенький плагин чтоб разобраться он скомпилился но при использовании вылетает ошибка "invalid pointer operation"
вот код плагина
Код:
library plugin;

{$define RELEASE} // ??? ????????????? ? ??????? ?????????, ??? ?????? ????? ???????????????

uses

  SysUtils,
  Windows,
  dialogs,
  Classes,
  strutils,
  usharedstructs in 'usharedstructs.pas';

var
  min_ver_a: array[0..3] of Byte = ( 3,5,23,      141   );
  min_ver: LongWord absolute min_ver_a; // ??????????? ?????????????? ?????? ?????????
  ps: TPluginStruct;
  idt:integer;





function GetPluginInfo(const ver: LongWord): PChar; stdcall;
begin
  if ver<min_ver then
    Result:='???????????????? Plugin ? ????????? l2phx'+sLineBreak+
            '??? ?????? 3.5.23.141+'+sLineBreak+
            '? ??? ?????? ?????? ?????????! ?????? ?? ?????? ????????? ? ??? ????????!'
  else
    Result:='???????????????? Plugin ? ????????? l2phx'+sLineBreak+
            '??? ?????? 3.5.23.141+'+sLineBreak+
            '????????????? ?? ???????';
end;



function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
  ps := struct^;
  Result:=True;
end;


procedure OnLoad; stdcall;
begin

end;

procedure doskill(ids:integer);
var
buf:string;
    begin
        buf:=#$D0#$00#$57#$6F#$FF;
        ps.writeh(buf,ids);
        buf:=buf+#$01#$00;
        ps.writed(buf,idt);
        buf:=buf+#$18#$01#$A5#$A3#$00#$00;
        ps.SendPacketStr(buf,0,True);
        

 end;

procedure OnPacket(const cnt: integer; const fromServer: Boolean; const connectionname:string; var pck: string); stdcall;

begin
if not fromServer then
    case pck[1] of
    #$ce: idt:=ps.readD(pck,6);
    #$b2: if ps.reads(pck,7)='.f1' then doskill(2002);
    end;
end;



exports
  GetPluginInfo,
  OnPacket,
  OnLoad,
  SetStruct;

begin
end.
Projects.rar
AltairAlentus вне форума   Ответить с цитированием
Старый 09.04.2012, 17:17   #2
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

Да вроде нужно указать соединение.
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/
goodvin1709 вне форума   Ответить с цитированием
Старый 09.04.2012, 20:32   #3
Новичок
 
Регистрация: 09.04.2012
Сообщений: 5
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
AltairAlentus пока неопределено
По умолчанию

Сделал так но ошибка таже
Код:
library plugin;

{$define RELEASE} // ??? ????????????? ? ??????? ?????????, ??? ?????? ????? ???????????????

uses
  SysUtils,
  Windows,
  dialogs,
  Classes,
  strutils,
  usharedstructs in 'usharedstructs.pas';

var
  min_ver_a: array[0..3] of Byte = ( 3,5,23,      141   );
  min_ver: LongWord absolute min_ver_a; // ??????????? ?????????????? ?????? ?????????
  ps: TPluginStruct;
  ///ppck: string;
  idt,id:integer;
//const ;
 /// pause=15000;




function GetPluginInfo(const ver: LongWord): PChar; stdcall;
begin
  if ver<min_ver then
    Result:='???????????????? Plugin ? ????????? l2phx'+sLineBreak+
            '??? ?????? 3.5.23.141+'+sLineBreak+
            '? ??? ?????? ?????? ?????????! ?????? ?? ?????? ????????? ? ??? ????????!'
  else
    Result:='???????????????? Plugin ? ????????? l2phx'+sLineBreak+
            '??? ?????? 3.5.23.141+'+sLineBreak+
            '????????????? ?? ???????';
end;



function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
  ps := struct^;
  Result:=True;
end;


procedure OnLoad; stdcall;
begin

end;

procedure doskill(ids:integer);
var
buf:string;
    begin
        buf:=#$D0#$00#$57#$6F#$FF;
        ps.writeh(buf,ids);
        buf:=buf+#$01#$00;
        ps.writed(buf,idt);
        buf:=buf+#$18#$01#$A5#$A3#$00#$00;
        ps.SendPacketStr(buf,id,True);


 end;

procedure OnPacket(const cnt: integer; const fromServer: Boolean; const connectionname:string; var pck: string); stdcall;

begin
if not fromServer then
    case pck[1] of
    #$ce: idt:=ps.readD(pck,6);
    #$b2: if ps.reads(pck,7)='.f1' then -при походе пакета ошибка
        begin
           id:=cnt;
           doskill(2002);
        end;
    end;
end;



exports
  GetPluginInfo,
  OnPacket,
  OnLoad,
  SetStruct;

begin
end.
ошибка вылетает именно при обработке пакета b2
AltairAlentus вне форума   Ответить с цитированием
Старый 10.04.2012, 10:15   #4
Местный
 
Аватар для goodvin1709
 
Регистрация: 13.02.2011
Сообщений: 506
Сказал Спасибо: 121
Имеет 100 спасибок в 83 сообщенях
goodvin1709 пока неопределено
По умолчанию

delphi Код:
begin            id:=cnt;            doskill(2002);         end;
Попробуй убрать посылку пакета,а сделать простое действие чтобы не отсылало пакет,например записать лог в стринг лист,а потом сохрани и так на каждое действие ищи ошибку,потом будет понятно где именно тупит плагин.
__________________
---------------------------__--------__-----
---____- ___--____--- ___/'- /__ ___-(__)-____
--/-___-/-__-\/-__--\ /-__--'/--|-/--//---//--__--\
-/-/_/ -/-/_/--/-/_/--/-/_/--/|--|/--'//---//--/-/--/
-\___-/\____/\____/\____/-|____//__'//_'/-/__/
/_-__/
goodvin1709 вне форума   Ответить с цитированием
Старый 08.07.2012, 22:24   #5
Новичок
 
Регистрация: 09.04.2012
Сообщений: 5
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
AltairAlentus пока неопределено
По умолчанию

Снова после застоя взялся за плагины и столкнулся с тем что при любой команде read write вылетает ошибка.



думал где то в коде ступил все вырезал и оставил в онлоад запись и все равно ошибка
Код:
library plugin;
{$define ShareMM}
{$define AttemptToUseSharedMM}
{$define RELEASE}
uses
  FastMM4 in '/fastmm/FastMM4.pas',
  FastMM4Messages in '/fastmm/FastMM4Messages.pas',
  usharedstructs in '/units/usharedstructs.pas',
  SysUtils,
  Windows,
  dialogs,
  Classes,
  strutils;

var
  min_ver_a: array[0..3] of Byte = ( 3,5,23,      141   );
  min_ver: LongWord absolute min_ver_a;
  ps: tPluginStruct;
  cid: Integer;

function GetPluginInfo(const ver: LongWord): PChar; stdcall;
begin
  if ver<min_ver then
    Result:='Òåñòîâûé ïëàãèí'+sLineBreak+
            'Âåðñèÿ íå êàòèò'
  else
    Result:='Òåñòîâûé ïëàãèí';
end;


function SetStruct(const struct: PPluginStruct): Boolean; stdcall;
begin
ps := struct^;
Result:=True;
end;

procedure OnLoad; stdcall;
var
  buf: string;
begin
ps.WriteS(buf,'qqqqq');
end;

exports
   OnLoad,
  GetPluginInfo,
  SetStruct;



begin
end.
AltairAlentus вне форума   Ответить с цитированием
Старый 11.07.2012, 12:00   #6
Местный
 
Аватар для Noise
 
Регистрация: 12.08.2010
Сообщений: 148
Сказал Спасибо: 24
Имеет 15 спасибок в 12 сообщенях
Noise пока неопределено
По умолчанию

Попробуй использовать др. версию l2phx у меня похожая проблема была, как версию поменял все сразу норм стало.
__________________
Если студенту отрезать хвост, то к следующей сессии у него вырастет новый.

Последний раз редактировалось Noise, 11.07.2012 в 20:49.
Noise вне форума   Ответить с цитированием
Старый 12.07.2012, 12:50   #7
Новичок
 
Регистрация: 09.04.2012
Сообщений: 5
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
AltairAlentus пока неопределено
По умолчанию

Взял старую версию та же история даже компилил с виртуалки на XP
Вопрос usharedstructs.pas надо брать с svn там все нормально сделано

Скопировал процедуру WriteS c uPluginData.pas в плагин все записывает норм ошибок нет.
походу проблема с tPluginStruct или fastmm

Последний раз редактировалось AltairAlentus, 12.07.2012 в 13:42.
AltairAlentus вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Разработка



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

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


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

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

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