⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objbase.pas

📁 翎风世界..传奇服务端..DELPHI源代码 包括DBServer,LogDataServer,LoginGate,LoginSrv,M2Server等..内容齐全.
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    m_boAbilMagBubbleDefence  :Boolean;    //0x35C  //魔法盾
    m_btMagBubbleDefenceLevel :Byte;       //0x35D
    m_dwSearchTime            :LongWord;   //0x360
    m_dwSearchTick            :LongWord;   //0x364
    m_dwRunTick               :LongWord;   //0x368
    m_nRunTime                :Integer;    //0x36C
    m_nHealthTick             :Integer;    //0x370    //特别指定为 此类型  此处用到 004C7CF8
    m_nSpellTick              :Integer;    //0x374
    m_TargetCret              :TBaseObject;  //0x378
    m_dwTargetFocusTick       :LongWord;   //0x37C
    m_LastHiter               :TBaseObject;  //0x380  人物被对方杀害时对方指针(Dword)
    m_LastHiterTick           :LongWord;   //0x384
    m_ExpHitter               :TBaseObject;  //0x388
    m_ExpHitterTick           :LongWord;   //0x38C
    m_dwTeleportTick          :LongWord;   //0x390  传送戒指使用间隔(Dword)
    m_dwProbeTick             :LongWord;   //0x394  探测项链使用间隔(Dword)
    m_dwMapMoveTick           :LongWord;   //0x398
    m_boPKFlag                :Boolean;    //0x39C  人物攻击变色标志(Byte)
    m_dwPKTick                :LongWord;   //0x3A0  人物攻击变色时间长度(Dword)
    m_nMoXieSuite             :Integer;    //0x3A4  魔血一套(Dword)
    m_nHongMoSuite            :Integer;    //0x3A8 虹魔一套(Dword)
    m_n3AC                    :Integer;    //0x3AC
    m_db3B0                   :Double;     //0x3B0
    m_dwPoisoningTick         :LongWord;   //0x3B8 中毒处理间隔时间(Dword)
    m_dwDecPkPointTick        :LongWord;   //0x3BC  减PK值时间(Dword)
    m_DecLightItemDrugTick    :LongWord;   //0x3C0
    m_dwVerifyTick            :LongWord;   //0x3C4
    m_dwCheckRoyaltyTick      :LongWord;   //0x3C8
    m_dwDecHungerPointTick    :LongWord;   //0x3CC
    m_dwHPMPTick              :LongWord;   //0x3D0
    m_MsgList                 :TList;      //0x3D4
    m_VisibleHumanList        :TList;      //0x3D8
    m_VisibleItems            :TList;      //0x3DC
    m_VisibleEvents           :TList;      //0x3E0
    m_SendRefMsgTick          :LongWord;   //0x3E4
    m_boInFreePKArea          :Boolean;    //0x3E8  是否在开行会战(Byte)
      LIst_3EC                :TList;      //0x3EC
      dwTick3F0               :LongWord;   //0x3F0
      dwTick3F4               :LongWord;   //0x3F4
    m_dwHitTick               :LongWord;   //0x3F8
    m_dwWalkTick              :LongWord;   //0x3FC
    m_dwSearchEnemyTick       :LongWord;   //0x400
    m_boNameColorChanged      :Boolean;    //0x404
    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_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);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -