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

📄 objmon.pas

📁 继续更新AFT源代码 现在解决了无法登陆游戏的问题 用0504的dbserver就可以登陆了 去掉了绿字广告 降低内存占用HOO 去掉了大量的验证问题
💻 PAS
📖 第 1 页 / 共 5 页
字号:
unit ObjMon;

interface
uses
  Windows,Classes,Grobal2,ObjBase,sysutils,HUtil32,Envir;
type
  TMonster = class(TAnimalObject)
    n54C           :Integer;     //0x54C
    m_dwThinkTick  :LongWord;    //0x550
    bo554          :Boolean;     //0x554
    m_boDupMode    :Boolean; //0x555
 //   m_btusefire     :integer;
     m_btUsePoison    :integer;
 //   curpos:integer;
 //   setpcount:integer;

  private
    function Think: Boolean;
    function MakeClone(sMonName:String;OldMon:TBaseObject):TBaseObject;
//    function Makefire(nx,ny,btdir:integer):boolean;
  public
    constructor Create();override;
    destructor Destroy; override;
    function  Operate(ProcessMsg:pTProcessMessage):Boolean; override;//FFFC
    function AttackTarget():Boolean; virtual; //FFEB
    procedure Run; override;
  end;

  TMonster1 = class(TAnimalObject)
    n54C           :Integer;     //0x54C
    m_dwThinkTick  :LongWord;    //0x550
    bo554          :Boolean;     //0x554
    m_boDupMode    :Boolean; //0x555
    m_btusefire     :integer;
    m_btUsePoison    :integer;
    curpos:integer;
    setpcount:integer;
    m_canpickup: Boolean;
    bo_oldrelax: boolean;
  private
    function Think: Boolean;
    function MakeClone(sMonName:String;OldMon:TBaseObject):TBaseObject;
    function Makefire(nx,ny,btdir:integer):boolean;
  public
    constructor Create();override;
    destructor Destroy; override;
    function  Operate(ProcessMsg:pTProcessMessage):Boolean; override;//FFFC
    function AttackTarget():Boolean; virtual; //FFEB
    procedure Run; override;
  end;

  TAIMAN=class(TAnimalObject)
    n54C           :Integer;     //0x54C
    m_dwThinkTick  :LongWord;    //0x550
    bo554          :Boolean;     //0x554
    m_boDupMode    :Boolean; //0x555

    curpos:integer;
    setpcount:integer;
   private
    function Think: Boolean;
    function MakeClone(sMonName:String;OldMon:TBaseObject):TBaseObject;
  public
    constructor Create();override;
    destructor Destroy; override;
    function  Operate(ProcessMsg:pTProcessMessage):Boolean; override;//FFFC
    function AttackTarget():Boolean; virtual; //FFEB
    procedure SearchViewRange(); override;
    procedure Run; override;
  end;







  TChickenDeer = class(TMonster)

    private

    public
      constructor Create();override;
      destructor Destroy; override;
      procedure Run;override;
  end;


  TATMonster = class(TMonster)
  private
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run; override;
  end;

  TfireMonster = class(TMonster1)
  private
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run; override;
  end;


  TSlowATMonster = class(TATMonster)
    private
    public
      constructor Create();override;
      destructor Destroy; override;
  end;
  TScorpion = class(TATMonster)
    private
    public
      constructor Create();override;
      destructor Destroy; override;
  end;
  TSpitSpider = class(TATMonster)
    m_boUsePoison    :Boolean;
  private
    procedure SpitAttack(btDir:Byte);
  public
    constructor Create();override;
    destructor Destroy; override;
    function AttackTarget():Boolean;{virtual;//} override; //FFEB
  end;
  THighRiskSpider = class(TSpitSpider)
    private

    public
      constructor Create();override;
      destructor Destroy; override;  
  end;
  TBigPoisionSpider = class(TSpitSpider)
  private

  public
    constructor Create();override;
    destructor Destroy; override;
  end;
  TGasAttackMonster = class(TATMonster)
  private

  public
    constructor Create();override;
    destructor Destroy; override;
    function  AttackTarget:Boolean;override;
    function  sub_4A9C78(bt05:Byte):TBaseObject;virtual;//FFEA
  end;
  TCowMonster = class(TATMonster)
  private
  public
    constructor Create();override;
    destructor Destroy; override;
  end;
  TMagCowMonster = class(TATMonster)
  private
    procedure sub_4A9F6C(btDir:Byte);
  public
    constructor Create();override;
    destructor Destroy; override;
    function  AttackTarget:Boolean;override;
  end;
  TCowKingMonster = class(TATMonster)
    dw558    :LongWord;
    bo55C    :Boolean;
    bo55D    :Boolean;
    n560     :integer;
    dw564    :LongWord;
    dw568    :LongWord;
    dw56C    :LongWord;
    dw570    :LongWord;
  private

  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run;override;
    procedure Attack(TargeTBaseObject: TBaseObject; nDir: Integer);override;
    procedure Initialize();override;
  end;

  TElectronicScolpionMon  = class(TMonster)
  private
    m_boUseMagic:Boolean;
    procedure LightingAttack(nDir:Integer);

  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run;override;
  end;
  TLightingZombi = class(TMonster)
  private
    procedure LightingAttack(nDir:Integer);

  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run;override;
  end;
  TDigOutZombi = class(TMonster)
    private
    procedure sub_4AA8DC;

    public
      constructor Create();override;
      destructor Destroy; override;
      procedure Run;override;
  end;
  TZilKinZombi = class(TATMonster)
    dw558   :LongWord;
    nZilKillCount    :Integer;
    dw560    :LongWord;
  private

  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Die;override;
    procedure Run;override;
  end;
  TWhiteSkeleton = class(TATMonster)
    m_boIsFirst    :Boolean;
  private
    procedure sub_4AAD54;
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure RecalcAbilitys();override;
    procedure Run;override;
  end;

  TScultureMonster = class(TMonster)

  private
    procedure MeltStone;//
    procedure MeltStoneAll;

  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run;override;
  end;
  
  TNIMOKEMonster = class(TMonster)
    pm_wAppr:integer;
  private
    procedure MeltStone;//
    procedure MeltStoneAll;

  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run;override;
  end;


  TScultureKingMonster = class(TMonster)
    m_nDangerLevel       :Integer;
    m_SlaveObjectList  :TList;//0x55C
    pm_wAppr:integer;
  private
    procedure MeltStone;
    procedure CallSlave;
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Attack(TargeTBaseObject: TBaseObject; nDir: Integer);override; //0FFED    
    procedure Run;override;
  end;
 //铁血魔王类型    06.1.16
  Ttiexueking= class(TMonster)
    m_nDangerLevel       :Integer;
    m_SlaveObjectList  :TList;//0x55C
    dw558    :LongWord;
  private
    procedure MeltStone;
    procedure CallSlave;
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run;override;
    procedure Attack(TargeTBaseObject: TBaseObject; nDir: Integer);override;
   end;
 ////////////


  TGasMothMonster = class(TGasAttackMonster) //楔蛾
  private
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure Run;override;
    function  sub_4A9C78(bt05:Byte):TBaseObject;override;//FFEA
  end;
  TGasDungMonster = class(TGasAttackMonster)
    private
    public
      constructor Create();override;
      destructor Destroy; override;
  end;
  TElfMonster = class(TMonster)
    boIsFirst    :Boolean;  //0x558
  private
    procedure AppearNow;
    procedure ResetElfMon;
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure RecalcAbilitys(); override;
    procedure Run; override;
  end;
  TElfWarriorMonster = class(TSpitSpider)
    n55C:Integer;
    boIsFirst    :Boolean;    //0x560
    dwDigDownTick:LongWord;   //0x564
  private
    procedure AppearNow;
    procedure ResetElfMon;
  public
    constructor Create();override;
    destructor Destroy; override;
    procedure RecalcAbilitys(); override;
    procedure Run; override;
  end;
implementation

uses UsrEngn, M2Share, Event;
{ TMonster }
constructor TMonster.Create; //004A8B74
begin
  inherited;
  m_boDupMode:=False;
  bo554:=False;
  m_dwThinkTick:=GetTickCount();
  m_nViewRange:=5;
  m_nRunTime:=250;
  m_dwSearchTime:=3000 + Random(2000);
  m_dwSearchTick:=GetTickCount();
  m_btRaceServer:=80;
 // curpos:=0;
 // setpcount:=0;
  m_btUsePoison:=-1;
 // m_btusefire:=-1;
end;

destructor TMonster.Destroy; //004A8C24
begin
  inherited;
end;
{function TMonster.Makefire(nx,ny,btdir:integer):boolean;
 var
  FireBurnEvent:TFireBurnEvent;
  nHTime,nDamage:integer;
begin
  nHTime:=_max(3,loword( m_WAbil.sC));

  nDamage:=_max(5,loword( m_WAbil.mC));
  if m_PEnvir.GetEvent(nX,nY-1) = nil then begin
    FireBurnEvent:=TFireBurnEvent.Create(self,nX,nY-1,m_btusefire,nHTime * 1000 ,nDamage);
    g_EventManager.AddEvent(FireBurnEvent);
  end; //0492CFC   x
  if m_PEnvir.GetEvent(nX-1,nY) = nil then begin
    FireBurnEvent:=TFireBurnEvent.Create(self,nX-1,nY,m_btusefire,nHTime * 1000 ,nDamage);
    g_EventManager.AddEvent(FireBurnEvent);
  end; //0492D4D
  if  m_PEnvir.GetEvent(nX,nY) = nil then begin
    FireBurnEvent:=TFireBurnEvent.Create(self,nX,nY,m_btusefire,nHTime * 1000 ,nDamage);
    g_EventManager.AddEvent(FireBurnEvent);
  end; //00492D9C
  if  m_PEnvir.GetEvent(nX+1,nY) = nil then begin
    FireBurnEvent:=TFireBurnEvent.Create(self,nX+1,nY,m_btusefire,nHTime * 1000 ,nDamage);
    g_EventManager.AddEvent(FireBurnEvent);
  end; //00492DED
  if  m_PEnvir.GetEvent(nX,nY+1) = nil then begin
    FireBurnEvent:=TFireBurnEvent.Create(self,nX,nY+1,m_btusefire,nHTime * 1000 ,nDamage);
    g_EventManager.AddEvent(FireBurnEvent);
  end; //00492E3E
  Result:=true;
end;
}

function TMonster.MakeClone(sMonName: String;OldMon:TBaseObject): TBaseObject; //004A8C58
var
  ElfMon:TBaseObject;
begin
  Result:=nil;
  ElfMon:=UserEngine.RegenMonsterByName(m_PEnvir.sMapName,m_nCurrX,m_nCurrY,sMonName);
  if ElfMon <> nil then begin
    ElfMon.m_Master:=OldMon.m_Master;
    ElfMon.m_dwMasterRoyaltyTick:=OldMon.m_dwMasterRoyaltyTick;
    ElfMon.m_btSlaveMakeLevel:=OldMon.m_btSlaveMakeLevel;
    ElfMon.m_btSlaveExpLevel:=OldMon.m_btSlaveExpLevel;
    ElfMon.RecalcAbilitys;
    ElfMon.RefNameColor;
    if OldMon.m_Master <> nil then
      OldMon.m_Master.m_SlaveList.Add(ElfMon);
    ElfMon.m_WAbil:=OldMon.m_WAbil;
    ElfMon.m_wStatusTimeArr:=OldMon.m_wStatusTimeArr;
    ElfMon.m_TargetCret:=OldMon.m_TargetCret;
    ElfMon.m_dwTargetFocusTick:=OldMon.m_dwTargetFocusTick;
    ElfMon.m_LastHiter:=OldMon.m_LastHiter;
    ElfMon.m_LastHiterTick:=OldMon.m_LastHiterTick;
    ElfMon.m_btDirection:=OldMon.m_btDirection;
    Result:=ElfMon;
  end;
end;
function TMonster.Operate(ProcessMsg: pTProcessMessage):Boolean;
begin
  Result:=inherited Operate(ProcessMsg);

end;
function TMonster.Think():Boolean; //004A8E54
var
  nOldX,nOldY:integer;
begin
  Result:=False;

⌨️ 快捷键说明

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