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

📄 objbase.pas

📁 乐都SQL版传奇全套代码,绝对可编译
💻 PAS
📖 第 1 页 / 共 5 页
字号:
    m_nPoisonRecover     : ShortInt;                             //0x24B
    m_nAntiMagic         : ShortInt;                                 //0x24C
    m_nHitSpeed          : ShortInt; //0x26E  //1-18 更改数据类型
    m_nProcessRunCount   : ShortInt;

    m_dBodyLuck          : Double;                                    //0x100
    m_db3B0              : Double;                                        //0x3B0
    m_rExpItem           : real;
    m_rPowerItem         : real;
    m_rAcItem            : real;
    m_rMacItem           : real;

    m_QuestUnitOpen      : TQuestUnit;                            //0x10F
    m_QuestUnit          : TQuestUnit;                                //0x11C
    m_QuestFlag          : TQuestFlag;                                //0x128 129
    m_WAbil              : TAbility;                                      //0x198
    m_AddAbil            : TAddAbility;                                 //0x1C0
    m_wStatusTimeArr     : TStatusTime;                          //0x60
    m_dwStatusArrTick    : array[0..MAX_STATUS_ATTRIBUTE - 1] of LongWord; //0x1E8
    m_wStatusArrValue    : array[0..5] of Word;                 //0x218
    m_dwStatusArrTimeOutTick: array[0..5] of LongWord;

    //各种倍率 2005-09-16
    m_wPowerRate         : array[0..6] of Word;                      //0x218
    m_wPowerRateTick     : array[0..6] of LongWord;


    // :Tarry220;           //0x220
    m_GroupMembers       : TStringList;                            //0x278  组成员
    m_BlockWhisperList   : TStringList; //0x280  禁止私聊人员列表
    m_Master             : TBaseObject; //0x288  是否被召唤(主人)
    m_MyGuild            : TObject;                                     //0x320
    m_Castle             : TObject;                                      //0x2AC //所属城堡
    m_PEnvir             : TEnvirnoment;                                 //0x2F8
    m_DealCreat          : TBaseObject;                               //0x31C
    m_TargetCret         : TBaseObject;                              //0x378
    m_GroupOwner         : TBaseObject;                              //0x274
    m_LastHiter          : TBaseObject; //0x380  人物被对方杀害时对方指针(Dword)
    m_ExpHitter          : TBaseObject;                               //0x388
    m_SlaveList          : TMyList;                                     //0x29C  下属列表
    m_MsgList            : TMyList;                                       //0x3D4
    m_VisibleHumanList   : TMyList;                              //0x3D8
    m_VisibleItems       : TMyList;                                  //0x3DC
    m_VisibleEvents      : TMyList;                                 //0x3E0
    m_VisibleActors      : TMyList;                                 //0x408
    m_ItemList           : TMyList; //0x40C  人物背包(Dword)数量
    m_DealItemList       : TMyList;                                  //0x410
    m_MagicList          : TMyList;                                     //0x41C  技能表
    m_SayMsgList         : TMyList;
    m_StorageItemList    : TMyList;                               //0x4F8
    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_BonusAbil          : TNakedAbility;                             //0x0CA TNakedAbility
    m_CurBonusAbil       : TNakedAbility;                          //0x0DE
    m_UseItems           : THumanUseItems;                             //0x420  + D8 -> 4F8
    m_sHomeMap           : string[16];                                 //0x78  //回城地图
    m_sMapFileName       : string[16];
    m_sMapName           : string[16];                                 //0x04
    m_sCharName          : string[14];                                //0x15
    m_sStatuName         : String;
    m_sGuildRankName     : string;                               //0x328
    m_sScriptLable       : string;                                 //0x32C
    m_boHasCharm         : Boolean;

  private
    function GetLevelExp(nLevel: Integer): LongWord;
    function InSafeArea: Boolean;

    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 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 SendGroupText(sMsg: string);
    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);
    procedure UpdateVisibleGay(BaseObject: TBaseObject); virtual;
    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 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 GetDamageWithItem(nDamage: Integer;btwhere:Byte):Integer;
    function GetAttackPower(nBasePower, nPower: Integer): Integer; virtual;
    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: TmyList): 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;
    function MagMakeScPowerUp(nSec: Integer): Boolean;
    procedure ApplyMeatQuality();
    function ButchMonBagItems(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;followMaster:Boolean=True; NameColor: Integer = 255; BodyColorIndex:
        Integer = -1): 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 GetRecallXY(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 CanWalkRage(): 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

⌨️ 快捷键说明

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