依星源码资源网,依星资源网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

【好消息,好消息,好消息】VIP会员可以发表文章赚积分啦 !
查看: 65|回复: 0

[游戏架设教程] [传奇技术]传奇引擎结构

[复制链接] 主动推送

1万

主题

1万

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
14130
发表于 2025-1-24 13:03:20 | 显示全部楼层 |阅读模式
[传奇技术]传奇引擎结构
  1. unit HerbActor; //herb:不能移动的怪物

  2. interface

  3. uses
  4.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5.   Grobal2, DxDraws, CliUtil, magiceff, Actor, WIl;


  6. const
  7.    BEEQUEENBASE = 600; //角蝇
  8.    DOORDEATHEFFECTBASE = 120; //沙皇宫门还是城门
  9.    WALLLEFTBROKENEFFECTBASE = 224; // 看来是城门
  10.    WALLRIGHTBROKENEFFECTBASE = 240; //。。

  11. type
  12.    TDoorState = (dsOpen, dsClose, dsBroken);

  13.    TKillingHerb = class (TActor)
  14.    private
  15.    public
  16.       constructor Create; override;
  17.       destructor Destroy; override;
  18.       procedure CalcActorFrame; override;
  19.       function  GetDefaultFrame (wmode: Boolean): integer; override;
  20.    end;

  21.    TBeeQueen = class (TActor)
  22.    private
  23.    public
  24.       procedure CalcActorFrame; override;
  25.       function  GetDefaultFrame (wmode: Boolean): integer; override;
  26.    end;

  27.    TCentipedeKingMon = class (TKillingHerb) //触龙神
  28.    public
  29.       procedure CalcActorFrame; override;
  30.    end;

  31.    TCastleDoor = class (TActor) //很明显是城门
  32.    private
  33.       EffectSurface: TDirectDrawSurface;
  34.       ax, ay: integer;
  35.       oldunitx, oldunity: integer;
  36.       procedure ApplyDoorState (dstate: TDoorState);
  37.    public
  38.       BoDoorOpen: Boolean; //Bo,,be on,,是否处于什么什么的状态
  39.       constructor Create; override;
  40.       procedure CalcActorFrame; override;
  41.       procedure  LoadSurface; override;
  42.       function  GetDefaultFrame (wmode: Boolean): integer; override;
  43.       procedure  ActionEnded; override;
  44.       procedure  Run; override;
  45.       procedure  DrawChr (dsurface: TDirectDrawSurface; dx, dy: integer; blend: Boolean); override;
  46.    end;

  47.    TWallStructure = class (TActor)
  48.    private
  49.       EffectSurface: TDirectDrawSurface;
  50.       BrokenSurface: TDirectDrawSurface;
  51.       ax, ay, bx, by: integer;
  52.       deathframe: integer;
  53.       bomarkpos: Boolean;  //
  54.    public
  55.       constructor Create; override;
  56.       procedure CalcActorFrame; override;
  57.       procedure  LoadSurface; override;
  58.       function  GetDefaultFrame (wmode: Boolean): integer; override;
  59.       procedure  DrawChr (dsurface: TDirectDrawSurface; dx, dy: integer; blend: Boolean); override;
  60.       procedure  Run; override;
  61.    end;


  62. implementation

  63. uses
  64.    ClMain;


  65. {============================== TKillingHerb =============================}

  66. //        

  67. {--------------------------}


  68. constructor TKillingHerb.Create;
  69. begin
  70.    inherited Create;
  71. end;

  72. destructor TKillingHerb.Destroy;
  73. begin
  74.    inherited Destroy;
  75. end;

  76. procedure TKillingHerb.CalcActorFrame;
  77. var
  78.    pm: PTMonsterAction;
  79.    haircount: integer;
  80. begin
  81.    BoUseMagic := FALSE;
  82.    currentframe := -1;

  83.    BodyOffset := GetOffset (Appearance);
  84.    pm := RaceByPM (Race);
  85.    if pm = nil then exit;

  86.    case CurrentAction of
  87.       SM_TURN: //规氢捞 绝澜...
  88.          begin
  89.             startframe := pm.ActStand.start; // + Dir * (pm.ActStand.frame + pm.ActStand.skip);
  90.             endframe := startframe + pm.ActStand.frame - 1;
  91.             frametime := pm.ActStand.ftime;
  92.             starttime := GetTickCount;
  93.             defframecount := pm.ActStand.frame;
  94.             Shift (Dir, 0, 0, 1);
  95.          end;
  96.       SM_DIGUP: //叭扁 绝澜, SM_DIGUP, 规氢 绝澜.
  97.          begin
  98.             startframe := pm.ActWalk.start; // + Dir * (pm.ActWalk.frame + pm.ActWalk.skip);
  99.             endframe := startframe + pm.ActWalk.frame - 1;
  100.             frametime := pm.ActWalk.ftime;
  101.             starttime := GetTickCount;
  102.             maxtick := pm.ActWalk.UseTick;
  103.             curtick := 0;
  104.             //WarMode := FALSE;
  105.             movestep := 1;
  106.             Shift (Dir, 0, 0, 1); //movestep, 0, endframe-startframe+1);
  107.          end;
  108.       SM_HIT:
  109.          begin
  110.             startframe := pm.ActAttack.start + Dir * (pm.ActAttack.frame + pm.ActAttack.skip);
  111.             endframe := startframe + pm.ActAttack.frame - 1;
  112.             frametime := pm.ActAttack.ftime;
  113.             starttime := GetTickCount;
  114.             //WarMode := TRUE;
  115.             WarModeTime := GetTickCount;
  116.             Shift (Dir, 0, 0, 1);
  117.          end;
  118.       SM_STRUCK:
  119.          begin
  120.             startframe := pm.ActStruck.start + Dir * (pm.ActStruck.frame + pm.ActStruck.skip);
  121.             endframe := startframe + pm.ActStruck.frame - 1;
  122.             frametime := struckframetime; //pm.ActStruck.ftime;
  123.             starttime := GetTickCount;
  124.          end;
  125.       SM_DEATH:
  126.          begin
  127.             startframe := pm.ActDie.start + Dir * (pm.ActDie.frame + pm.ActDie.skip);
  128.             endframe := startframe + pm.ActDie.frame - 1;
  129.             startframe := endframe; //
  130.             frametime := pm.ActDie.ftime;
  131.             starttime := GetTickCount;
  132.          end;
  133.       SM_NOWDEATH:
  134.          begin
  135.             startframe := pm.ActDie.start + Dir * (pm.ActDie.frame + pm.ActDie.skip);
  136.             endframe := startframe + pm.ActDie.frame - 1;
  137.             frametime := pm.ActDie.ftime;
  138.             starttime := GetTickCount;
  139.          end;
  140.       SM_DIGDOWN:
  141.          begin
  142.             startframe := pm.ActDeath.start;
  143.             endframe := startframe + pm.ActDeath.frame - 1;
  144.             frametime := pm.ActDeath.ftime;
  145.             starttime := GetTickCount;
  146.             BoDelActionAfterFinished := TRUE;  //捞悼累捞 场唱搁 咀磐 瘤澜
  147.          end;
  148.    end;
  149. end;


  150. function  TKillingHerb.GetDefaultFrame (wmode: Boolean): integer;
  151. var
  152.    cf, dr: integer;
  153.    pm: PTMonsterAction;
  154. begin
  155.    pm := RaceByPM (Race);
  156.    if pm = nil then exit;

  157.    if Death then begin
  158.       if Skeleton then
  159.          Result := pm.ActDeath.start
  160.       else Result := pm.ActDie.start + Dir * (pm.ActDie.frame + pm.ActDie.skip) + (pm.ActDie.frame - 1);
  161.    end else begin
  162.       defframecount := pm.ActStand.frame;
  163.       if currentdefframe < 0 then cf := 0
  164.       else if currentdefframe >= pm.ActStand.frame then cf := 0
  165.       else cf := currentdefframe;
  166.       Result := pm.ActStand.start + cf; //规氢捞 绝澜..
  167.    end;
  168. end;


  169. {----------------------------------------------------------------------}
  170. //厚阜盔面


  171. procedure TBeeQueen.CalcActorFrame;
  172. var
  173.    pm: PTMonsterAction;
  174. begin
  175.    BoUseMagic := FALSE;
  176.    currentframe := -1;

  177.    BodyOffset := GetOffset (Appearance);
  178.    pm := RaceByPM (Race);
  179.    if pm = nil then exit;

  180.    case CurrentAction of
  181.       SM_TURN: //规氢捞 绝澜...
  182.          begin
  183.             startframe := pm.ActStand.start; // + Dir * (pm.ActStand.frame + pm.ActStand.skip);
  184.             endframe := startframe + pm.ActStand.frame - 1;
  185.             frametime := pm.ActStand.ftime;
  186.             starttime := GetTickCount;
  187.             defframecount := pm.ActStand.frame;
  188.             Shift (Dir, 0, 0, 1);
  189.          end;
  190.       SM_HIT:
  191.          begin
  192.             startframe := pm.ActAttack.start; // + Dir * (pm.ActAttack.frame + pm.ActAttack.skip);
  193.             endframe := startframe + pm.ActAttack.frame - 1;
  194.             frametime := pm.ActAttack.ftime;
  195.             starttime := GetTickCount;
  196.             //WarMode := TRUE;
  197.             WarModeTime := GetTickCount;
  198.             Shift (Dir, 0, 0, 1);
  199.          end;
  200.       SM_STRUCK:
  201.          begin
  202.             startframe := pm.ActStruck.start; // + Dir * (pm.ActStruck.frame + pm.ActStruck.skip);
  203.             endframe := startframe + pm.ActStruck.frame - 1;
  204.             frametime := struckframetime; //pm.ActStruck.ftime;
  205.             starttime := GetTickCount;
  206.          end;
  207.       SM_DEATH:
  208.          begin
  209.             startframe := pm.ActDie.start; // + Dir * (pm.ActDie.frame + pm.ActDie.skip);
  210.             endframe := startframe + pm.ActDie.frame - 1;
  211.             startframe := endframe; //
  212.             frametime := pm.ActDie.ftime;
  213.             starttime := GetTickCount;
  214.          end;
  215.       SM_NOWDEATH:
  216.          begin
  217.             startframe := pm.ActDie.start; // + Dir * (pm.ActDie.frame + pm.ActDie.skip);
  218.             endframe := startframe + pm.ActDie.frame - 1;
  219.             frametime := pm.ActDie.ftime;
  220.             starttime := GetTickCount;
  221.          end;
  222.    end;
  223. end;

  224. function  TBeeQueen.GetDefaultFrame (wmode: Boolean): integer;
  225. var
  226.    pm: PTMonsterAction;
  227.    cf: integer;
  228. begin
  229.    pm := RaceByPM (Race);
  230.    if pm = nil then exit;

  231.    if Death then begin
  232.       Result := pm.ActDie.start + (pm.ActDie.frame - 1);
  233.    end else begin
  234.       defframecount := pm.ActStand.frame;
  235.       if currentdefframe < 0 then cf := 0
  236.       else if currentdefframe >= pm.ActStand.frame then cf := 0
  237.       else cf := currentdefframe;
  238.       Result := pm.ActStand.start + cf; //规氢捞 绝澜..
  239.    end;
  240. end;


  241. {----------------------------------------------------------------------}
  242. //瘤匙空


  243. procedure TCentipedeKingMon.CalcActorFrame;
  244. var
  245.    pm: PTMonsterAction;
  246. begin
  247.    BoUseMagic := FALSE;
  248.    currentframe := -1;

  249.    BodyOffset := GetOffset (Appearance);
  250.    pm := RaceByPM (Race);
  251.    if pm = nil then exit;

  252.    case CurrentAction of
  253.       SM_TURN: //规氢捞 绝澜...
  254.          begin
  255.             Dir := 0;
  256.             inherited CalcActorFrame;
  257.          end;
  258.       SM_HIT:
  259.          begin
  260.             case Dir of
  261.                7, 6: Dir := 0;
  262.                0, 1, 2, 5: Dir := 1;
  263.                else Dir := 2;
  264.             end;   
  265.             inherited CalcActorFrame;
  266.          end;
  267.       //SM_SPITPOISON:
  268.       //   begin
  269.       //   end;
  270.       else begin
  271.          Dir := 0;
  272.          inherited CalcActorFrame;
  273.       end;
  274.    end;
  275. end;


  276. {----------------------------------------------------------------------}
  277. //己寒, 己巩

  278. constructor TCastleDoor.Create;
  279. begin
  280.    inherited Create;
  281.    Dir := 0;
  282.    EffectSurface := nil;
  283.    DownDrawLevel := 1;  //1伎 刚历 弊覆. (荤恩 赣府啊 己巩 关栏肺 甸绢啊绰 巴阑 阜澜)
  284. end;

  285. procedure TCastleDoor.ApplyDoorState (dstate: TDoorState);
  286. var
  287.    bowalk: Boolean;
  288. begin
  289.    Map.MarkCanWalk (XX, YY-2, TRUE);
  290.    Map.MarkCanWalk (XX+1, YY-1, TRUE);
  291.    Map.MarkCanWalk (XX+1, YY-2, TRUE);
  292.    if dstate = dsClose then bowalk := FALSE
  293.    else bowalk := TRUE;

  294.    Map.MarkCanWalk (XX, YY, bowalk);
  295.    Map.MarkCanWalk (XX, YY-1, bowalk);
  296.    Map.MarkCanWalk (XX, YY-2, bowalk);
  297.    Map.MarkCanWalk (XX+1, YY-1, bowalk);
  298.    Map.MarkCanWalk (XX+1, YY-2, bowalk);
  299.    Map.MarkCanWalk (XX-1, YY-1, bowalk);
  300.    Map.MarkCanWalk (XX-1, YY, bowalk);
  301.    Map.MarkCanWalk (XX-1, YY+1, bowalk);
  302.    Map.MarkCanWalk (XX-2, YY, bowalk);

  303.    if dstate = dsOpen then begin
  304.       Map.MarkCanWalk (XX, YY-2, FALSE);
  305.       Map.MarkCanWalk (XX+1, YY-1, FALSE);
  306.       Map.MarkCanWalk (XX+1, YY-2, FALSE);
  307.    end;
  308. end;

  309. procedure  TCastleDoor.LoadSurface;
  310. var
  311.    mimg: TWMImages;
  312. begin
  313.    inherited LoadSurface;
  314.    mimg := GetMonImg (Appearance);
  315.    if BoUseEffect then
  316.       EffectSurface := mimg.GetCachedImage (DOORDEATHEFFECTBASE + (currentframe - startframe), ax, ay);
  317. end;

  318. procedure TCastleDoor.CalcActorFrame;
  319. var
  320.    pm: PTMonsterAction;
  321.    haircount: integer;
  322. begin
  323.    BoUseEffect := FALSE;
  324.    currentframe := -1;

  325.    BodyOffset := GetOffset (Appearance);
  326.    pm := RaceByPM (Race);
  327.    if pm = nil then exit;
  328.    UserName := ' ';

  329.    case CurrentAction of
  330.       SM_NOWDEATH:
  331.          begin
  332.             startframe := pm.ActDie.start;
  333.             endframe := startframe + pm.ActDie.frame - 1;
  334.             frametime := pm.ActDie.ftime;
  335.             starttime := GetTickCount;
  336.             Shift (Dir, 0, 0, 1);
  337.             BoUseEffect := TRUE;
  338.             ApplyDoorState (dsBroken);  //框流老 荐 乐霸
  339.          end;
  340.       SM_STRUCK:
  341.          begin
  342.             startframe := pm.ActStruck.start + Dir * (pm.ActStruck.frame + pm.ActStruck.skip);
  343.             endframe := startframe + pm.ActStruck.frame - 1;
  344.             frametime := pm.ActStand.ftime;
  345.             starttime := GetTickCount;
  346.             Shift (Dir, 0, 0, 1);
  347.          end;
  348.       SM_DIGUP:  //巩 凯覆
  349.          begin
  350.             startframe := pm.ActAttack.start;
  351.             endframe := startframe + pm.ActAttack.frame - 1;
  352.             frametime := pm.ActAttack.ftime;
  353.             starttime := GetTickCount;
  354.             ApplyDoorState (dsOpen);  //框流老 荐 乐霸
  355.          end;
  356.       SM_DIGDOWN:  //巩 摧塞
  357.          begin
  358.             startframe := pm.ActCritical.start;
  359.             endframe := startframe + pm.ActCritical.frame - 1;
  360.             frametime := pm.ActCritical.ftime;
  361.             starttime := GetTickCount;
  362.             BoDoorOpen := FALSE;
  363.             BoHoldPlace := TRUE;
  364.             ApplyDoorState (dsClose);  //给框流烙
  365.          end;
  366.       SM_DEATH:
  367.          begin
  368.             startframe := pm.ActDie.start + pm.ActDie.frame - 1;
  369.             endframe := startframe;
  370.             defframecount := 0;
  371.             ApplyDoorState (dsBroken);  //框流老 荐 乐霸
  372.          end;
  373.       else  //规氢捞 绝澜...
  374.          begin
  375.             if Dir < 3 then begin
  376.                startframe := pm.ActStand.start + Dir * (pm.ActStand.frame + pm.ActStand.skip);
  377.                endframe := startframe; // + pm.ActStand.frame - 1;
  378.                frametime := pm.ActStand.ftime;
  379.                starttime := GetTickCount;
  380.                defframecount := 0; //pm.ActStand.frame;
  381.                Shift (Dir, 0, 0, 1);
  382.                BoDoorOpen := FALSE;
  383.                BoHoldPlace := TRUE;
  384.                ApplyDoorState (dsClose);  //给框流捞霸
  385.             end else begin
  386.                startframe := pm.ActCritical.start;  //凯妨乐绰 惑怕
  387.                endframe := startframe;
  388.                defframecount := 0;

  389.                BoDoorOpen := TRUE;
  390.                BoHoldPlace := FALSE;
  391.                ApplyDoorState (dsOpen);  //吧阑 荐 乐澜
  392.             end;
  393.          end;
  394.    end;
  395. end;

  396. function  TCastleDoor.GetDefaultFrame (wmode: Boolean): integer;
  397. var
  398.    pm: PTMonsterAction;
  399. begin
  400.    BodyOffset := GetOffset (Appearance);
  401.    pm := RaceByPM (Race);
  402.    if pm = nil then exit;
  403.    if Death then begin
  404.       Result := pm.ActDie.start + pm.ActDie.frame - 1;
  405.       DownDrawLevel := 2;
  406.    end else begin
  407.       if BoDoorOpen then begin
  408.          DownDrawLevel := 2;
  409.          Result := pm.ActCritical.start; // + Dir * (pm.ActStand.frame + pm.ActStand.skip);
  410.       end else begin
  411.          DownDrawLevel := 1;
  412.          Result := pm.ActStand.start + Dir * (pm.ActStand.frame + pm.ActStand.skip);
  413.       end;
  414.    end;
  415. end;

  416. procedure  TCastleDoor.ActionEnded;
  417. begin
  418.    if CurrentAction = SM_DIGUP then begin  //巩凯覆
  419.       BoDoorOpen := TRUE;
  420.       BoHoldPlace := FALSE;
  421.    end;
  422. //   if CurrentAction = SM_DIGDOWN then
  423. //      DefaultMotion;
  424. end;

  425. procedure  TCastleDoor.Run;
  426. begin
  427.    if (Map.CurUnitX <> oldunitx) or (Map.CurUnitY <> oldunity) then begin
  428.       if Death then ApplyDoorState (dsBroken)
  429.       else if BoDoorOpen then ApplyDoorState (dsOpen)
  430.       else ApplyDoorState (dsClose);
  431.    end;
  432.    oldunitx := Map.CurUnitX;
  433.    oldunity := Map.CurUnitY;
  434.    inherited Run;
  435. end;

  436. procedure  TCastleDoor.DrawChr (dsurface: TDirectDrawSurface; dx, dy: integer; blend: Boolean);
  437. begin
  438.    inherited DrawChr (dsurface, dx, dy, blend);
  439.    if BoUseEffect and not blend then
  440.       if EffectSurface <> nil then begin
  441.          DrawBlend (dsurface,
  442.                     dx + ax + ShiftX,
  443.                     dy + ay + ShiftY,
  444.                     EffectSurface, 1);
  445.       end;
  446. end;


  447. {----------------------------------------------------------------------}
  448. //己寒


  449. constructor TWallStructure.Create;
  450. begin
  451.    inherited Create;
  452.    Dir := 0;
  453.    EffectSurface := nil;
  454.    BrokenSurface := nil;
  455.    bomarkpos := FALSE;
  456.    //DownDrawLevel := 1;
  457. end;

  458. procedure TWallStructure.CalcActorFrame;
  459. var
  460.    pm: PTMonsterAction;
  461.    haircount: integer;
  462. begin
  463.    BoUseEffect := FALSE;
  464.    currentframe := -1;

  465.    BodyOffset := GetOffset (Appearance);
  466.    pm := RaceByPM (Race);
  467.    if pm = nil then exit;
  468.    UserName := ' ';
  469.    deathframe := 0;
  470.    BoUseEffect := FALSE;

  471.    case CurrentAction of
  472.       SM_NOWDEATH:
  473.          begin
  474.             startframe := pm.ActDie.start;
  475.             endframe := startframe + pm.ActDie.frame - 1;
  476.             frametime := pm.ActDie.ftime;
  477.             starttime := GetTickCount;
  478.             deathframe := pm.ActStand.start + Dir;
  479.             Shift (Dir, 0, 0, 1);
  480.             BoUseEffect := TRUE;
  481.          end;
  482.       SM_DEATH:
  483.          begin
  484.             startframe := pm.ActDie.start + pm.ActDie.frame - 1;
  485.             endframe := startframe;
  486.             defframecount := 0;
  487.          end;
  488.       SM_DIGUP:  //葛嚼捞 函版瞪锭 付促
  489.          begin
  490.             startframe := pm.ActDie.start;
  491.             endframe := startframe + pm.ActDie.frame - 1;
  492.             frametime := pm.ActDie.ftime;
  493.             starttime := GetTickCount;
  494.             deathframe := pm.ActStand.start + Dir;
  495.             BoUseEffect := TRUE;
  496.          end;
  497.       else  //规氢捞 绝澜...
  498.          begin
  499.             startframe := pm.ActStand.start + Dir; // * (pm.ActStand.frame + pm.ActStand.skip);
  500.             endframe := startframe; // + pm.ActStand.frame - 1;
  501.             frametime := pm.ActStand.ftime;
  502.             starttime := GetTickCount;
  503.             defframecount := 0; //pm.ActStand.frame;
  504.             Shift (Dir, 0, 0, 1);
  505.             BoHoldPlace := TRUE;
  506.          end;
  507.    end;
  508. end;

  509. procedure  TWallStructure.LoadSurface;
  510. var
  511.    mimg: TWMImages;
  512. begin
  513.    mimg := GetMonImg (Appearance);
  514.    if deathframe > 0 then begin //(CurrentAction = SM_NOWDEATH) or (CurrentAction = SM_DEATH) then begin
  515.       BodySurface := mimg.GetCachedImage (GetOffset (Appearance) + deathframe, px, py);
  516.    end else begin
  517.       inherited LoadSurface;
  518.    end;
  519.    BrokenSurface := mimg.GetCachedImage (GetOffset (Appearance) + 8 + Dir, bx, by);

  520.    if BoUseEffect then begin
  521.       if Appearance = 901 then
  522.          EffectSurface := mimg.GetCachedImage (WALLLEFTBROKENEFFECTBASE + (currentframe - startframe), ax, ay)
  523.       else
  524.          EffectSurface := mimg.GetCachedImage (WALLRIGHTBROKENEFFECTBASE + (currentframe - startframe), ax, ay);
  525.    end;
  526. end;

  527. function  TWallStructure.GetDefaultFrame (wmode: Boolean): integer;
  528. var
  529.    pm: PTMonsterAction;
  530. begin
  531.    BodyOffset := GetOffset (Appearance);
  532.    pm := RaceByPM (Race);
  533.    if pm = nil then exit;
  534.     Result := pm.ActStand.start + Dir; // * (pm.ActStand.frame + pm.ActStand.skip);
  535. end;

  536. procedure TWallStructure.DrawChr (dsurface: TDirectDrawSurface; dx, dy: integer; blend: Boolean);
  537. begin
  538.    inherited DrawChr (dsurface, dx, dy, blend);
  539.    if (BrokenSurface <> nil) and (not blend) then begin
  540.       dsurface.Draw (dx + bx + ShiftX,
  541.                      dy + by + ShiftY,
  542.                      BrokenSurface.ClientRect,
  543.                      BrokenSurface, TRUE);
  544.    end;
  545.    if BoUseEffect and (not blend) then begin
  546.       if EffectSurface <> nil then begin
  547.          DrawBlend (dsurface,
  548.                     dx + ax + ShiftX,
  549.                     dy + ay + ShiftY,
  550.                     EffectSurface, 1);
  551.       end;
  552.    end;
  553. end;

  554. procedure  TWallStructure.Run;
  555. begin
  556.    if Death then begin
  557.       if bomarkpos then begin
  558.          Map.MarkCanWalk (XX, YY, TRUE);
  559.          bomarkpos := FALSE;
  560.       end;
  561.    end else begin
  562.       if not bomarkpos then begin
  563.          Map.MarkCanWalk (XX, YY, FALSE);
  564.          bomarkpos := TRUE;
  565.       end;
  566.    end;
  567.    PlayScene.SetActorDrawLevel (self, 0);
  568.    inherited Run;
  569. end;


  570. end.
复制代码


扫码关注微信公众号,及时获取最新资源信息!下载附件优惠VIP会员6折;永久VIP4折
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明:
1、本站提供的所有资源仅供参考学习使用,版权归原著所有,禁止下载本站资源参与商业和非法行为,请在24小时之内自行删除!
2、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,请勿任何商业目的与商业用途。
3、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
4、论坛的所有内容都不保证其准确性,完整性,有效性,由于源码具有复制性,一经售出,概不退换。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
5、用户使用本网站必须遵守适用的法律法规,对于用户违法使用本站非法运营而引起的一切责任,由用户自行承担
6、本站所有资源来自互联网转载,版权归原著所有,用户访问和使用本站的条件是必须接受本站“免责声明”,如果不遵守,请勿访问或使用本网站
7、本站使用者因为违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
8、凡以任何方式登陆本网站或直接、间接使用本网站资料者,视为自愿接受本网站声明的约束。
9、本站以《2013 中华人民共和国计算机软件保护条例》第二章 “软件著作权” 第十七条为原则:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。若有学员需要商用本站资源,请务必联系版权方购买正版授权!
10、本网站如无意中侵犯了某个企业或个人的知识产权,请来信【站长信箱312337667@qq.com】告之,本站将立即删除。
郑重声明:
本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!
本站所有资源、教程来自互联网转载,仅供学习交流,不得商业运营资源,不确保资源完整性,图片和资源仅供参考,不提供任何技术服务。
本站资源仅供本地编辑研究学习参考,禁止未经资源商正版授权参与任何商业行为,违法行为!如需商业请购买各资源商正版授权
本站仅收集资源,提供用户自学研究使用,本站不存在私自接受协助用户架设游戏或资源,非法运营资源行为。
 
在线客服
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息
售前咨询热线
312337667

微信扫一扫,私享最新原创实用干货

QQ|免责声明|小黑屋|依星资源网 ( 鲁ICP备2021043233号-3 )|网站地图

GMT+8, 2025-3-12 12:38

Powered by Net188.com X3.4

邮箱:312337667@qq.com 客服QQ:312337667(工作时间:9:00~21:00)

快速回复 返回顶部 返回列表