📄 plugofengine.~pas
字号:
unit PlugOfEngine;
interface
uses
Windows, Classes, SysUtils, Forms, Grobal2, SDK, ObjBase, Envir, Guild, ObjNpc,
Castle, UsrEngn, Magic, LocalDB, EDcode, Common, PlugIn, RunSock;
type
TShortString = packed record
btLen: Byte;
Strings: array[0..High(Byte) - 1] of Char;
end;
PTShortString = ^TShortString;
_TBANKPWD = string[6];
_LPTBANKPWD = ^_TBANKPWD;
_TMAPNAME = string[MAPNAMELEN];
_LPTMAPNAME = ^_TMAPNAME;
_TACTORNAME = string[ACTORNAMELEN];
_LPTACTORNAME = ^_TACTORNAME;
_TPATHNAME = string[MAXPATHLEN];
_LPTPATHNAME = ^_TPATHNAME;
_TDIRNAME = string[DIRPATHLEN];
_LPTDIRNAME = ^_TDIRNAME;
TObjectAction = procedure(PlayObject: TObject); stdcall;
TObjectActionEx = function(PlayObject: TObject): BOOL; stdcall;
TObjectActionXY = procedure(AObject, BObject: TObject; nX, nY: Integer); stdcall;
TObjectActionXYD = procedure(AObject, BObject: TObject; nX, nY: Integer; btDir: Byte); stdcall;
TObjectActionXYDM = procedure(AObject, BObject: TObject; nX, nY: Integer; btDir: Byte; nMode: Integer); stdcall;
TObjectActionXYDWS = procedure(AObject, BObject: TObject; wIdent: Word; nX, nY: Integer; btDir: Byte; pszMsg: PChar); stdcall;
TObjectActionObject = procedure(AObject, BObject, CObject: TObject; nInt: Integer); stdcall;
TObjectActionDetailGoods = procedure(Merchant: TObject; PlayObject: TObject; pszItemName: PChar; nInt: Integer); stdcall;
TObjectActionUserSelect = procedure(Merchant: TMerchant; PlayObject: TPlayObject; pszLabel, pszData: PChar); stdcall;
TObjectUserCmd = function(AObject: TObject; pszCmd, pszParam1, pszParam2, pszParam3, pszParam4, pszParam5, pszParam6, pszParam7: PChar): Boolean; stdcall;
TPlaySendSocket = function(AObject: TObject; DefMsg: pTDefaultMessage; pszMsg: PChar): Boolean; stdcall;
TObjectActionItem = function(AObject: TObject; pszItemName: PChar): Boolean; stdcall;
TObjectClientMsg = function(PlayObject: TObject; DefMsg: pTDefaultMessage; Buff: PChar; NewBuff: PChar): Integer; stdcall;
TObjectActionFeature = function(AObject, BObject: TObject): Integer; stdcall;
TObjectActionSendGoods = procedure(AObject: TObject; nNpcRecog, nCount, nPostion: Integer; pszData: PChar); stdcall;
TObjectActionCheckUserItem = function(nIdx: Integer; StdItem: pTStdItem): Boolean; stdcall;
TObjectActionEnterMap = function(AObject: TObject; Envir: TObject; nX, nY: Integer): Boolean; stdcall;
TObjectFilterMsg = procedure(PlayObject: TObject; pszSrcMsg: PChar; pszDestMsg: PChar; nDestLen: Integer); stdcall;
TObjectUserRunMsg = procedure(PlayObject: TPlayObject; var UseItems: THumanUseItems; var WAbil: TAbility); stdcall;
TEDCode = procedure(pszSource: PChar; pszDest: PChar; nSrcLen, nDestLen: Integer); stdcall;
TDoSpell = function(MagicManager: TMagicManager; PlayObject: TPlayObject; UserMagic: pTUserMagic; nTargetX, nTargetY: Integer; TargeTBaseObject: TBaseObject; var boSpellFail, boSpellFire: Boolean): Boolean; stdcall;
TScriptCmd = function(pszCmd: PChar): Integer; stdcall;
TRunSocketObject_Open = procedure(GateIdx, nSocket: Integer; sIPaddr: PChar); stdcall;
TRunSocketObject_Close = procedure(GateIdx, nSocket: Integer); stdcall;
TRunSocketObject_Eeceive_OK = procedure(); stdcall;
TRunSocketObject_Data = procedure(GateIdx, nSocket: Integer; MsgBuff: PChar); stdcall;
TScriptAction = procedure(Npc: TObject;
PlayObject: TObject;
nCmdCode: Integer;
pszParam1: PChar;
nParam1: Integer;
pszParam2: PChar;
nParam2: Integer;
pszParam3: PChar;
nParam3: Integer;
pszParam4: PChar;
nParam4: Integer;
pszParam5: PChar;
nParam5: Integer;
pszParam6: PChar;
nParam6: Integer); stdcall;
TScriptCondition = function(Npc: TObject;
PlayObject: TObject;
nCmdCode: Integer;
pszParam1: PChar;
nParam1: Integer;
pszParam2: PChar;
nParam2: Integer;
pszParam3: PChar;
nParam3: Integer;
pszParam4: PChar;
nParam4: Integer;
pszParam5: PChar;
nParam5: Integer;
pszParam6: PChar;
nParam6: Integer): Boolean; stdcall;
TObjectOperateMessage = function(BaseObject: TObject;
wIdent: Word;
wParam: Word;
nParam1: Integer;
nParam2: Integer;
nParam3: Integer;
MsgObject: TObject;
dwDeliveryTime: LongWord;
pszMsg: PChar;
var boReturn: Boolean): Boolean; stdcall;
TPlugOfEngine = class(TObject)
GetFeature: TObjectActionFeature;
ObjectEnterAnotherMap: TObjectActionEnterMap;
ObjectDie: TObjectActionEx;
ChangeCurrMap: TObjectActionEx;
ClientQueryBagItems: TObjectAction;
ClientQueryUserState: TObjectActionXY;
SendActionGood: TObjectAction;
SendActionFail: TObjectAction;
SendWalkMsg: TObjectActionXYD;
SendHorseRunMsg: TObjectActionXYD;
SendRunMsg: TObjectActionXYD;
SendDeathMsg: TObjectActionXYDM;
SendSkeletonMsg: TObjectActionXYD;
SendAliveMsg: TObjectActionXYD;
SendSpaceMoveMsg: TObjectActionXYDWS;
SendChangeFaceMsg: TObjectActionObject;
SendUseitemsMsg: TObjectAction;
SendUseMagicMsg: TObjectAction;
SendUserLevelUpMsg: TObjectAction;
SendUserAbilieyMsg: TObjectAction;
SendUserStruckMsg: TObjectActionObject;
SendSocket: TPlaySendSocket;
SendGoodsList: TObjectActionSendGoods;
SendUserStatusMsg: TObjectActionXYDWS;
CheckCanDropItem: TObjectActionItem;
CheckCanDealItem: TObjectActionItem;
CheckCanStorageItem: TObjectActionItem;
CheckCanRepairItem: TObjectActionItem;
CheckUserItems: TObjectActionCheckUserItem;
PlayObjectRun: TObjectAction;
PlayObjectFilterMsg: TObjectFilterMsg;
MerchantClientGetDetailGoodsList: TObjectActionDetailGoods;
UserEngineRun: TObjectAction;
ObjectClientMsg: TObjectClientMsg;
ObjectUserRunMsg: TObjectUserRunMsg;
SetHookDoSpell: TDoSpell;
PlayObjectUserLogin1: TObjectAction;
PlayObjectUserLogin2: TObjectAction;
PlayObjectUserLogin3: TObjectAction;
PlayObjectUserLogin4: TObjectAction;
RunSocketExecGateMsg_Open: TRunSocketObject_Open;
RunSocketExecGateMsg_Close: TRunSocketObject_Close;
RunSocketExecGateMsg_Eeceive_OK: TRunSocketObject_Eeceive_OK;
RunSocketExecGateMsg_Data: TRunSocketObject_Data;
PlayObjectCreate: TObjectAction;
PlayObjectDestroy: TObjectAction;
PlayObjectUserCmd: TObjectUserCmd;
ObjectOperateMessage: TObjectOperateMessage;
QuestActionScriptCmd: TScriptCmd;
QuestConditionScriptCmd: TScriptCmd;
ActionScriptProcess: TScriptAction;
ConditionScriptProcess: TScriptCondition;
PlayObjectUserSelect: TObjectActionUserSelect;
PlayObjectCreateArray: array[0..MAXPULGCOUNT - 1] of TObjectAction;
PlayObjectDestroyArray: array[0..MAXPULGCOUNT - 1] of TObjectAction;
PlayObjectUserCmdArray: array[0..MAXPULGCOUNT - 1] of TObjectUserCmd;
ObjectOperateMessageArray: array[0..MAXPULGCOUNT - 1] of TObjectOperateMessage;
QuestActionScriptCmdArray: array[0..MAXPULGCOUNT - 1] of TScriptCmd;
QuestConditionScriptCmdArray: array[0..MAXPULGCOUNT - 1] of TScriptCmd;
ActionScriptProcessArray: array[0..MAXPULGCOUNT - 1] of TScriptAction;
ConditionScriptProcessArray: array[0..MAXPULGCOUNT - 1] of TScriptCondition;
PlayObjectUserSelectArray: array[0..MAXPULGCOUNT - 1] of TObjectActionUserSelect;
UserEngineRunArray: array[0..MAXPULGCOUNT - 1] of TObjectAction;
nPlayObjectCreate: Integer;
nPlayObjectDestroy: Integer;
nPlayObjectUserCmd: Integer;
nObjectOperateMessage: Integer;
nQuestActionScriptCmd: Integer;
nQuestConditionScriptCmd: Integer;
nActionScriptProcess: Integer;
nConditionScriptProcess: Integer;
nPlayObjectUserSelect: Integer;
nUserEngineRun: Integer;
private
public
constructor Create();
destructor Destroy; override;
procedure InitPlugOfEngine;
function GetPlugByHandle(PlugHandle: THandle): Integer;
procedure SetHookPlayObjectCreate(PlugHandle: THandle; ObjectAction: TObjectAction);
procedure SetHookPlayObjectDestroy(PlugHandle: THandle; ObjectAction: TObjectAction);
procedure SetHookPlayObjectUserCmd(PlugHandle: THandle; ObjectUserCmd: TObjectUserCmd);
procedure SetHookObjectOperateMessage(PlugHandle: THandle; PlayObjectOperateMessage: TObjectOperateMessage);
procedure SetHookQuestActionScriptCmd(PlugHandle: THandle; ScriptCmd: TScriptCmd);
procedure SetHookQuestConditionScriptCmd(PlugHandle: THandle; ScriptCmd: TScriptCmd);
procedure SetHookActionScriptProcess(PlugHandle: THandle; ScriptAction: TScriptAction);
procedure SetHookConditionScriptProcess(PlugHandle: THandle; ScriptCondition: TScriptCondition);
procedure SetHookPlayObjectUserSelect(PlugHandle: THandle; ObjectActionUserSelect: TObjectActionUserSelect);
procedure SetHookUserEngineRun(PlugHandle: THandle; ObjectAction: TObjectAction);
function GetHookPlayObjectCreate(PlugHandle: THandle): TObjectAction;
function GetHookPlayObjectDestroy(PlugHandle: THandle): TObjectAction;
function GetHookPlayObjectUserCmd(PlugHandle: THandle): TObjectUserCmd;
function GetHookObjectOperateMessage(PlugHandle: THandle): TObjectOperateMessage;
function GetHookQuestActionScriptCmd(PlugHandle: THandle): TScriptCmd;
function GetHookQuestConditionScriptCmd(PlugHandle: THandle): TScriptCmd;
function GetHookActionScriptProcess(PlugHandle: THandle): TScriptAction;
function GetHookConditionScriptProcess(PlugHandle: THandle): TScriptCondition;
function GetHookPlayObjectUserSelect(PlugHandle: THandle): TObjectActionUserSelect;
end;
var
zPlugOfEngine: TPlugOfEngine;
function TList_Create(): TList; stdcall;
procedure TList_Free(List: TList); stdcall;
function TList_Count(List: TList): Integer; stdcall;
function TList_Add(List: TList; Item: Pointer): Integer; stdcall;
procedure TList_Insert(List: TList; nIndex: Integer; Item: Pointer); stdcall;
function TList_Get(List: TList; nIndex: Integer): Pointer; stdcall;
procedure TList_Put(List: TList; nIndex: Integer; Item: Pointer); stdcall;
procedure TList_Delete(List: TList; nIndex: Integer); stdcall;
procedure TList_Clear(List: TList); stdcall;
procedure TList_Exchange(List: TList; nIndex1, nIndex2: Integer); stdcall;
function TStringList_Create(): TStringList; stdcall;
procedure TStringList_Free(List: TStringList); stdcall;
function TStringList_Count(List: TStringList): Integer; stdcall;
function TStringList_Add(List: TStringList; S: PChar): Integer; stdcall;
function TStringList_AddObject(List: TStringList; S: PChar; AObject: TObject): Integer; stdcall;
procedure TStringList_Insert(List: TStringList; nIndex: Integer; S: PChar); stdcall;
function TStringList_Get(List: TStringList; nIndex: Integer): PChar; stdcall;
function TStringList_GetObject(List: TStringList; nIndex: Integer): TObject; stdcall;
procedure TStringList_Put(List: TStringList; nIndex: Integer; S: PChar); stdcall;
procedure TStringList_PutObject(List: TStringList; nIndex: Integer; AObject: TObject); stdcall;
procedure TStringList_Delete(List: TStringList; nIndex: Integer); stdcall;
procedure TStringList_Clear(List: TStringList); stdcall;
procedure TStringList_Exchange(List: TStringList; nIndex1, nIndex2: Integer); stdcall;
procedure TStringList_LoadFormFile(List: TStringList; pszFileName: PChar); stdcall;
procedure TStringList_SaveToFile(List: TStringList; pszFileName: PChar); stdcall;
procedure MainOutMessageAPI(pszMsg: PChar); stdcall;
procedure AddGameDataLogAPI(pszMsg: PChar); stdcall;
function GetGameGoldName(): PTShortString; stdcall;
procedure EDcode_Decode6BitBuf(pszSource: PChar; pszDest: PChar; nSrcLen, nDestLen: Integer); stdcall;
procedure EDcode_Encode6BitBuf(pszSource: PChar; pszDest: PChar; nSrcLen, nDestLen: Integer); stdcall;
procedure EDcode_SetDecode(Decode: TEDCode); stdcall;
procedure EDcode_SetEncode(Encode: TEDCode); stdcall;
procedure EDcode_DeCodeString(pszSource: PChar; var pszDest: array of Char); stdcall;
procedure EDcode_EncodeString(pszSource: PChar; var pszDest: array of Char); stdcall;
procedure EDcode_EncodeBuffer(Buf: PChar; bufsize: Integer; var pszDest: array of Char); stdcall;
procedure EDcode_DecodeBuffer(pszSource: PChar; pszDest: PChar; bufsize: Integer); stdcall;
function TConfig_sEnvirDir(): _LPTDIRNAME; stdcall;
function TConfig_AmyOunsulPoint: PInteger; stdcall;
function TBaseObject_Create(): TBaseObject; stdcall;
procedure TBaseObject_Free(BaseObject: TBaseObject); stdcall;
function TBaseObject_sMapFileName(BaseObject: TBaseObject): PTShortString; stdcall;
function TBaseObject_sMapName(BaseObject: TBaseObject): PTShortString; stdcall;
function TBaseObject_sMapNameA(BaseObject: TBaseObject): _LPTMAPNAME; stdcall;
function TBaseObject_sCharName(BaseObject: TBaseObject): PTShortString; stdcall;
function TBaseObject_sCharNameA(BaseObject: TBaseObject): _LPTACTORNAME; stdcall;
function TBaseObject_nCurrX(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_nCurrY(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_btDirection(BaseObject: TBaseObject): PByte; stdcall;
function TBaseObject_btGender(BaseObject: TBaseObject): PByte; stdcall;
function TBaseObject_btHair(BaseObject: TBaseObject): PByte; stdcall;
function TBaseObject_btJob(BaseObject: TBaseObject): PByte; stdcall;
function TBaseObject_nGold(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_Ability(BaseObject: TBaseObject): PTABILITY; stdcall;
function TBaseObject_WAbility(BaseObject: TBaseObject): PTABILITY; stdcall;
function TBaseObject_nCharStatus(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_sHomeMap(BaseObject: TBaseObject): PTShortString; stdcall;
function TBaseObject_nHomeX(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_nHomeY(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_boOnHorse(BaseObject: TBaseObject): PBoolean; stdcall;
function TBaseObject_btHorseType(BaseObject: TBaseObject): PByte; stdcall;
function TBaseObject_btDressEffType(BaseObject: TBaseObject): PByte; stdcall;
function TBaseObject_nPkPoint(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_boAllowGroup(BaseObject: TBaseObject): PBoolean; stdcall;
function TBaseObject_boAllowGuild(BaseObject: TBaseObject): PBoolean; stdcall;
function TBaseObject_nFightZoneDieCount(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_nBonusPoint(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_nHungerStatus(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_boAllowGuildReCall(BaseObject: TBaseObject): PBoolean; stdcall;
function TBaseObject_duBodyLuck(BaseObject: TBaseObject): PDouble; stdcall;
function TBaseObject_nBodyLuckLevel(BaseObject: TBaseObject): PInteger; stdcall;
function TBaseObject_wGroupRcallTime(BaseObject: TBaseObject): PWord; stdcall;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -