📄 objbase.pas
字号:
m_nWalkSpeed: Integer; //0x4FC
m_nWalkStep: Integer; //0x500
m_nWalkCount: Integer; //0x504
m_dwWalkWait: LongWord; //0x508
m_dwWalkWaitTick: LongWord; //0x50C
m_boWalkWaitLocked: Boolean; //0x510
m_nNextHitTime: Integer; //0x514
m_MagicOneSwordSkill: pTUserMagic; //0x518
m_MagicPowerHitSkill: pTUserMagic; //0x51C
m_MagicErgumSkill: pTUserMagic; //0x520 刺杀剑法
m_MagicBanwolSkill: pTUserMagic; //0x524 半月弯刀
m_MagicRedBanwolSkill: pTUserMagic;
m_MagicFireSwordSkill: pTUserMagic; //0x528
m_MagicCrsSkill: pTUserMagic; //0x528
m_Magic41Skill: pTUserMagic; //0x528
m_MagicTwnHitSkill: pTUserMagic; //0x528
m_Magic43Skill: pTUserMagic; //0x528
m_boPowerHit: Boolean; //0x52C
m_boUseThrusting: Boolean; //0x52D
m_boUseHalfMoon: Boolean; //0x52E
m_boRedUseHalfMoon: Boolean;
m_boFireHitSkill: Boolean; //0x52F
m_boCrsHitkill: Boolean;
m_bo41kill: Boolean;
m_boTwinHitSkill: Boolean;
m_bo43kill: Boolean;
m_dwLatestFireHitTick: LongWord; //0x530
m_dwDoMotaeboTick: LongWord; //0x534
m_dwLatestTwinHitTick: LongWord;
m_boDenyRefStatus: Boolean; //是否刷新在地图上信息;
m_boAddToMaped: Boolean; //是否增加地图计数
m_boDelFormMaped: Boolean; //是否从地图中删除计数
m_boAutoChangeColor: Boolean;
m_dwAutoChangeColorTick: LongWord;
m_nAutoChangeIdx: Integer;
m_boFixColor: Boolean; //固定颜色
m_nFixColorIdx: Integer;
m_nFixStatus: Integer;
m_boFastParalysis: Boolean; //快速麻痹,受攻击后麻痹立即消失
m_boSmashSet: Boolean;
m_boHwanDevilSet: Boolean;
m_boPuritySet: Boolean;
m_boMundaneSet: Boolean;
m_boNokChiSet: Boolean;
m_boTaoBuSet: Boolean;
m_boFiveStringSet: Boolean;
m_boNastyMode: Boolean;
private
function GetLevelExp(nLevel: Integer): LongWord;
function InSafeArea: Boolean;
procedure UpdateVisibleGay(BaseObject: TBaseObject); virtual;
function Walk(nIdent: Integer): Boolean;
function AddToMap(): Boolean;
procedure UseLamp();
procedure CheckPKStatus();
procedure UpdateVisibleItem(wX, wY: Integer; MapItem: pTMapItem);
procedure UpdateVisibleEvent(wX, wY: Integer; MapEvent: TObject);
function RecalcBagWeight(): Integer;
procedure RecalcHitSpeed();
procedure DecPKPoint(nPoint: Integer);
function GetCharColor(BaseObject: TBaseObject): Byte;
function GetNamecolor: Byte;
procedure SendUpdateDelayMsg(BaseObject: TBaseObject; wIdent, wParam: Word;
lParam1, lParam2, lParam3: Integer; sMsg: string; dwDelay: LongWord);
procedure LeaveGroup();
procedure DelMember(BaseObject: TBaseObject);
procedure HearMsg(sMsg: string);
procedure AttackDir(TargeTBaseObject: TBaseObject; wHitMode: Word; nDir: Integer); virtual;
procedure DamageSpell(nSpellPoint: Integer);
procedure DoDamageWeapon(nWeaponDamage: Integer);
function GetFeatureEx: Word;
public
constructor Create(); virtual;
destructor Destroy; override;
procedure SendMsg(BaseObject: TBaseObject; wIdent, wParam: Word; nParam1, nParam2, nParam3: Integer; sMsg: string);
procedure SendFirstMsg(BaseObject: TBaseObject; wIdent, wParam: Word; lParam1, lParam2, lParam3: Integer; sMsg: string);
procedure SendDelayMsg(BaseObject: TBaseObject; wIdent, wParam: Word; lParam1, lParam2, lParam3: Integer; sMsg: string; dwDelay: LongWord);
procedure SendRefMsg(wIdent, wParam: Word; nParam1, nParam2, nParam3: Integer; sMsg: string);
procedure SendUpdateMsg(BaseObject: TBaseObject; wIdent, wParam: Word; lParam1, lParam2, lParam3: Integer; sMsg: string);
procedure SendActionMsg(BaseObject: TBaseObject; wIdent, wParam: Word;
lParam1, lParam2, lParam3: Integer; sMsg: string);
procedure SendAttackMsg(wIdent: Word; btDir: Byte; nX, nY: Integer);
procedure SysMsg(sMsg: string; MsgColor: TMsgColor; MsgType: TMsgType);
procedure SendGroupText(sMsg: string);
procedure MonsterSayMsg(AttackBaseObject: TBaseObject; MonStatus: TMonStatus);
function IsVisibleHuman(): Boolean;
procedure RecalcLevelAbilitys;
function PKLevel(): Integer;
function InSafeZone(): Boolean; overload;
function InSafeZone(Envir: TEnvirnoment; nX, nY: Integer): Boolean; overload;
procedure OpenHolySeizeMode(dwInterval: LongWord);
procedure BreakHolySeizeMode;
procedure OpenCrazyMode(nTime: Integer);
procedure BreakCrazyMode();
procedure HealthSpellChanged();
function _Attack(var wHitMode: Word; AttackTarget: TBaseObject): Boolean;
function GetHitStruckDamage(Target: TBaseObject; nDamage: Integer): Integer;
procedure HasLevelUp(nLevel: Integer);
procedure sub_4BC87C();
procedure GoldChanged();
procedure GameGoldChanged;
function GetGuildRelation(cert1: TBaseObject; cert2: TBaseObject): Integer;
function IsGoodKilling(Cert: TBaseObject): Boolean;
procedure IncPkPoint(nPoint: Integer);
procedure AddBodyLuck(dLuck: Double);
procedure MakeWeaponUnlock();
procedure ScatterGolds(GoldOfCreat: TBaseObject);
function DropGoldDown(nGold: Integer; boFalg: Boolean; GoldOfCreat, DropGoldCreat: TBaseObject): Boolean;
function DropItemDown(UserItem: pTUserItem; nScatterRange: Integer; boDieDrop: Boolean; ItemOfCreat, DropCreat: TBaseObject): Boolean;
procedure DamageHealth(nDamage: Integer);
function GetAttackPower(nBasePower, nPower: Integer): Integer;
function CharPushed(nDir, nPushCount: Integer): Integer;
function GetDropPosition(nOrgX, nOrgY, nRange: Integer; var nDX: Integer; var nDY: Integer): Boolean;
function GetBackDir(nDir: Integer): Integer;
function GetMapBaseObjects(tEnvir: TEnvirnoment; nX, nY: Integer; nRage: Integer; rList: TList): Boolean;
function MagPassThroughMagic(sX, sY, tx, ty, nDir, magpwr: Integer;
undeadattack: Boolean): Integer;
procedure KickException;
function GetMagStruckDamage(BaseObject: TBaseObject; nDamage: Integer): Integer;
procedure DamageBubbleDefence(nInt: Integer);
procedure BreakOpenHealth;
function GetCharStatus: Integer;
procedure MakeOpenHealth;
procedure IncHealthSpell(nHP, nMP: Integer);
procedure ItemDamageRevivalRing;
function CalcGetExp(nLevel: Integer; nExp: Integer): Integer;
procedure GainSlaveExp(nLevel: Integer);
procedure MapRandomMove(sMapName: string; nInt: Integer);
procedure TurnTo(nDir: Integer);
procedure FeatureChanged();
function GetFeatureToLong(): Integer;
function GetPoseCreate(): TBaseObject;
function GetFeature(BaseObject: TBaseObject): Integer;
function IsGroupMember(Target: TBaseObject): Boolean;
procedure AbilCopyToWAbil();
procedure ChangePKStatus(boWarFlag: Boolean);
procedure StruckDamage(nDamage: Integer);
function sub_4C4CD4(sItemName: string; var nCount: Integer): pTUserItem;
procedure StatusChanged;
function GeTBaseObjectInfo(): string;
procedure TrainSkill(UserMagic: pTUserMagic; nTranPoint: Integer);
function CheckMagicLevelup(UserMagic: pTUserMagic): Boolean;
function MagCanHitTarget(nX, nY: Integer; TargeTBaseObject: TBaseObject): Boolean;
procedure sub_4C713C(Magic: pTUserMagic);
function MagBubbleDefenceUp(nLevel, nSec: Integer): Boolean;
procedure ApplyMeatQuality();
function TakeBagItems(BaseObject: TBaseObject): Boolean;
function AddItemToBag(UserItem: pTUserItem): Boolean;
function DelBagItem(nIndex: Integer): Boolean; overload;
function DelBagItem(nItemIndex: Integer; sItemName: string): Boolean; overload;
procedure WeightChanged();
function IsTrainingSkill(nIndex: Integer): Boolean;
procedure SetQuestFlagStatus(nFlag: Integer; nValue: Integer);
function GetQuestFalgStatus(nFlag: Integer): Integer;
procedure SetQuestUnitOpenStatus(nFlag: Integer; nValue: Integer);
function GetQuestUnitOpenStatus(nFlag: Integer): Integer;
procedure SetQuestUnitStatus(nFlag: Integer; nValue: Integer);
function GetQuestUnitStatus(nFlag: Integer): Integer;
function GetAttackDir(BaseObject: TBaseObject; var btDir: Byte): Boolean;
function TargetInSpitRange(BaseObject: TBaseObject; var btDir: Byte): Boolean;
procedure MonsterRecalcAbilitys();
procedure RefNameColor;
procedure SetPKFlag(BaseObject: TBaseObject);
procedure SetLastHiter(BaseObject: TBaseObject);
function EnterAnotherMap(Envir: TEnvirnoment; nDMapX, nDMapY: Integer): Boolean;
function sub_4DD704(): Boolean;
function DefenceUp(nSec: Integer): Boolean;
function MagDefenceUp(nSec: Integer): Boolean;
function AttPowerUp(nPower, nTime: Integer): Boolean;
function SCPowerUp(nSec: Integer): Boolean;
procedure RefShowName;
function MakeSlave(sMonName: string; nMakeLevel, nExpLevel, nMaxMob: Integer; dwRoyaltySec: LongWord): TBaseObject;
function MakePosion(nType, nTime, nPoint: Integer): Boolean;
function GetFrontPosition(var nX: Integer; var nY: Integer): Boolean;
function GetBackPosition(var nX: Integer; var nY: Integer): Boolean;
function WalkTo(btDir: Byte; boFlag: Boolean): Boolean;
procedure SpaceMove(sMap: string; nX, nY: Integer; nInt: Integer);
function sub_4C5370(nX, nY: Integer; nRange: Integer; var nDX, nDY: Integer): Boolean;
function CheckItems(sItemName: string): pTUserItem;
function MagMakeDefenceArea(nX, nY, nRange, nSec: Integer; btState: Byte): Integer;
function sub_4C3538(): Integer;
function IsGuildMaster(): Boolean;
procedure LoadSayMsg();
procedure DisappearA();
function GetShowName(): string; virtual;
procedure DropUseItems(BaseObject: TBaseObject); virtual;
procedure ScatterBagItems(ItemOfCreat: TBaseObject); virtual;
function GetMessage(Msg: pTProcessMessage): Boolean; virtual; //FFFF
procedure Initialize(); virtual; //FFFE
procedure Disappear(); virtual; //FFFD
function Operate(ProcessMsg: pTProcessMessage): Boolean; virtual; //FFFC
procedure SearchViewRange(); virtual; //dynamic;
procedure Run(); virtual; //dynamic;//FFFB
procedure ProcessSayMsg(sMsg: string); virtual; //FFFA
procedure MakeGhost; virtual;
procedure Die(); virtual; //FFF9;
procedure ReAlive(); virtual; //FFF8;
procedure RecalcAbilitys(); virtual; //FFF7
function IsProtectTarget(BaseObject: TBaseObject): Boolean; virtual; //FFF6
function IsAttackTarget(BaseObject: TBaseObject): Boolean; virtual; //FFF5
function IsProperTarget(BaseObject: TBaseObject): Boolean; virtual; //FFF4
function IsProperFriend(BaseObject: TBaseObject): Boolean; virtual; //FFF3
procedure SetTargetCreat(BaseObject: TBaseObject); virtual; //FFF2
procedure DelTargetCreat(); virtual; //FFF1
procedure RecallSlave(sSlaveName: string);
function GetMagicInfo(nMagicID: Integer): pTUserMagic;
procedure AddItemSkill(nIndex: Integer);
procedure DelItemSkill(nIndex: Integer);
end;
TAnimalObject = class(TBaseObject)
m_nNotProcessCount: Integer; //未被处理次数,用于怪物处理循环
m_nTargetX: Integer; //0x538
m_nTargetY: Integer; //0x53C
m_boRunAwayMode: Boolean; //0x540
m_dwRunAwayStart: LongWord; //0x544
m_dwRunAwayTime: LongWord; //0x548
private
public
constructor Create(); override;
procedure SearchTarget();
procedure sub_4C959C;
function Operate(ProcessMsg: pTProcessMessage): Boolean; override; //FFFC
procedure Run; override; //FFFB
procedure DelTargetCreat(); override; //FFF1
procedure SetTargetXY(nX, nY: Integer); virtual; //FFF0
procedure GotoTargetXY(); virtual; //0FFEF
procedure Wondering(); virtual; //0FFEE
procedure Attack(TargeTBaseObject: TBaseObject; nDir: Integer); virtual; //0FFED
procedure Struck(hiter: TBaseObject); virtual; //FFEC
procedure HitMagAttackTarget(TargeTBaseObject: TBaseObject; nHitPower: Integer; nMagPower: Integer; boFlag: Boolean);
end;
TPlayObject = class(TAnimalObject)
m_DefMsg: TDefaultMessage; //0x550
TList55C: TList; //0x55C
m_sOldSayMsg: string; //0x560
m_nSayMsgCount: Integer; //0x560
m_dwSayMsgTick: LongWord; //0x568
m_boDisableSayMsg: Boolean; //0x56C
m_dwDisableSayMsgTick: LongWord; //0x570
m_dwCheckDupObjTick: LongWord; //0x574
dwTick578: LongWord; //0x578
dwTick57C: LongWord; //0x57C
m_boInSafeArea: Boolean; //0x580
n584: Integer; //0x584
n588: Integer; //0x584
m_sUserID: string[11]; //0x58C 登录帐号名
m_sIPaddr: string; //0x598 人物IP地址
m_sIPLocal: string;
m_nSocket: Integer; //0x59C nSocket
m_nGSocketIdx: Integer; //0x5A0 wGateIndex 人物连接到游戏网关SOCKET ID
m_nGateIdx: Integer; //0x5A8 nGateIdx 人物所在网关号
m_nSoftVersionDate: Integer; //0x5AC
m_dLogonTime: TDateTime; //0x5B0 //登录时间
m_dwLogonTick: LongWord; //0x5B8 战领沙城时间(Dword)
m_boReadyRun: Boolean; //0x5BC //是否进入游戏完成
m_nSessionID: Integer; //0x5C0
m_nPayMent: Integer; //0x5C4 人物当前模式(测试/付费模式)(Dword)
m_nPayMode: Integer; //0x5C8
m_SessInfo: pTSessInfo; //全局会话信息
m_dwLoadTick: LongWord; //0x5CC
m_nServerIndex: Integer; //0x5D0 人物当前所在服务器序号
m_boEmergencyClose: Boolean; //0x5D4 掉线标志
m_boSoftClose: Boolean; //0x5D5
m_boKickFlag: Boolean; //0x5D6 断线标志(Byte)(@kick 命令)
m_boReconnection: Boolean; //0x5D7
m_boRcdSaved: Boolean; //0x5D8
m_boSwitchData: Boolean; //0x5D9
m_nWriteChgDataErrCount: Integer; //0x5DC
m_sSwitchMapName: string; //0x5E0
m_nSwitchMapX: Integer; //0x5E4
m_nSwitchMapY: Integer; //0x5E8
m_boSwitchDataSended: Boolean; //0x5EC
m_dwChgDataWritedTick: LongWord; //0x5F0
m_dw5D4: LongWord; //0x5F4
n5F8: Integer; //0x5F8
n5FC: Integer; //0x5FC
m_dwHitIntervalTime: LongWord; //攻击间隔
m_dwMagicHitIntervalTime: LongWord; //魔法间隔
m_dwRunIntervalTime: LongWord; //走路间隔
m_dwWalkIntervalTime: LongWord; //走路间隔
m_dwTurnIntervalTime: LongWord; //换方向间隔
m_dwActionIntervalTime: LongWord; //组合操作间隔
m_dwRunLongHitIntervalTime: LongWord; //移动刺杀间隔
m_dwRunHitIntervalTime: LongWord; //跑位攻击间隔
m_dwWalkHitIntervalTime: LongWord; //走位攻击间隔
m_dwRunMagicIntervalTime: LongWord; //跑位魔法间隔
m_dwMagicAttackTick: LongWord; //0x600 魔法攻击时间(Dword)
m_dwMagicAttackInterval: LongWord; //0x604 魔法攻击间隔时间(Dword)
m_dwAttackTick: LongWord; //0x608 攻击时间(Dword)
m_dwMoveTick: LongWord; //0x60C 人物跑动时间(Dword)
m_dwAttackCount: LongWord; //0x610 人物攻击计数(Dword)
m_dwAttackCountA: LongWord; //0x614 人物攻击计数(Dword)
m_dwMagicAttackCount: LongWord; //0x618 魔法攻击计数(Dword)
m_dwMoveCount: LongWord; //0x61C 人物跑计数(Dword)
m_dwMoveCountA: LongWord; //0x620 人物跑计数(Dword)
m_nOverSpeedCount: Integer; //0x624 超速计数(Dword)
m_boDieInFight3Zone: Boolean; //0x628
m_Script: pTScript; //0x62C
m_NPC: TBaseObject; //0x630
m_nVal: array[0..9] of Integer; //0x634 - 658
m_nMval: array[0..99] of Integer;
m_DyVal: array[0..9] of Integer; //0x65C - 680
m_sPlayDiceLabel: string;
m_boTimeRecall: Boolean; //0x684
m_dwTimeRecallTick: LongWord; //0x688
m_sMoveMap: string; //0x68C
m_nMoveX: Integer; //0x690
m_nMoveY: Integer; //0x694
bo698: Boolean; //0x698
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -