📄 objbase.~pas
字号:
m_boIsVisibleActive :Boolean; //是否在可视范围内有人物,及宝宝
m_nProcessRunCount :ShortInt;
m_VisibleActors :TList; //0x408
m_ItemList :TList; //0x40C 人物背包(Dword)数量
m_DealItemList :TList; //0x410
m_nDealGolds :Integer; //0x414 交易的金币数量(Dword)
m_boDealOK :Boolean; //0x418 确认交易标志(Byte
m_MagicList :TList; //0x41C 技能表
m_UseItems :THumanUseItems; //0x420 + D8 -> 4F8
m_SayMsgList :TList;
m_StorageItemList :TList; //0x4F8
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_MagicFireSwordSkill :pTUserMagic; //0x528
m_MagicCrsSkill :pTUserMagic; //0x528
m_Magic41Skill :pTUserMagic; //0x528
m_Magic42Skill :pTUserMagic; //0x528
m_Magic43Skill :pTUserMagic; //0x528
m_boPowerHit :Boolean; //0x52C
m_boUseThrusting :Boolean; //0x52D
m_boUseHalfMoon :Boolean; //0x52E
m_boFireHitSkill :Boolean; //0x52F
m_boCrsHitkill :Boolean; //0x52F
m_bo41kill :Boolean; //0x52F
m_bo42kill :Boolean; //0x52F
m_bo43kill :Boolean; //0x52F
m_dwLatestFireHitTick :LongWord; //0x530
m_dwDoMotaeboTick :LongWord; //0x534
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; //快速麻痹,受攻击后麻痹立即消失
private
function GetLevelExp(nLevel: Integer): LongWord;
function InSafeArea: Boolean;
procedure UpdateVisibleGay(BaseObject:TBaseObject);
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);
procedure GetAccessory(Item:TUserItem;var AddAbility:TAddAbility);
function RecalcBagWeight():Integer;
procedure RecalcHitSpeed();
procedure AddItemSkill(nIndex:Integer);
procedure DelItemSkill(nIndex:Integer);
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 SendGroupText(sMsg:String);
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 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;
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
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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -