铁血丹心

 找回密码
 我要成为铁血侠客
搜索
查看: 4099|回复: 7

[pascal复刻] weyl新复刻版战斗动画错位的问题

[复制链接]
发表于 2013-9-4 09:50 | 显示全部楼层 |阅读模式

马上注册,结交更多侠友!

您需要 登录 才可以下载或查看,没有账号?我要成为铁血侠客

x
请教一下啊,weyl的那个新复刻版,在战斗画面人物一使用武功贴图就错乱,没有导入过新武功素材和人物素材,不知道怎么解决,比如用主角攻击后,再用第二个人使用武功,武功动画没有问题,但是人物动画会变成主角攻击的图像,有时是隐身的图像,就好像内存读取错位了一样
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-9-4 14:56 | 显示全部楼层
你的exe是最新的吗
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-9-4 17:15 | 显示全部楼层
用过weyl大的升级补丁,但是更新后exe就报错了

点评

报什么错  发表于 2013-9-4 20:12
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-9-5 13:41 | 显示全部楼层
weyl 发表于 2013-9-4 14:56
你的exe是最新的吗

   weyl大,已经解决了,原来是我设定的人物战斗图的帧数出错了,另外通过改battle文件已经实现对伤害公式的修改然后重新编译到kys里了,请问如果是修改攻击范围(三角、米字型等等)是需要改battle文件里的设定攻击范围的函数么,请问有现成的源码能够直接替换进去么?

   //设定攻击范围

procedure SetAminationPosition(mode, step1: integer; step2: integer = 0);
{var
  i, i1, i2: integer;
begin
  for i1 := 0 to 63 do
    for i2 := 0 to 63 do
    begin
      Bfield[4, i1, i2] := 0;
      //按攻击类型判断是否在范围内
      case mode of
        0:
          begin
            if (i1 = Ax) and (i2 = Ay) then Bfield[4, i1, i2] := 1;
          end;
        3:
          begin
            if (abs(i1 - Ax) <= step) and (abs(i2 - Ay) <= step) then Bfield[4, i1, i2] := 1;
          end;
        1:
          begin
            if ((i1 = Bx) or (i2 = By)) and (sign(Ax - Bx) = sign(i1 - Bx)) and (abs(i1 - Bx) <= step) and (sign(Ay - By) = sign(i2 - By)) and (abs(i2 - By) <= step) then
              Bfield[4, i1, i2] := 1;
          end;
        2:
          begin
            if ((i1 = Bx) and (abs(i2 - By) <= step)) or ((i2 = By) and (abs(i1 - Bx) <= step)) then
              Bfield[4, i1, i2] := 1;
            if ((i1 = Bx) and (i2 = By)) then Bfield[4, i1, i2] := 0;
          end;
      end;
    end;



【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-9-5 14:39 | 显示全部楼层
本帖最后由 weyl 于 2013-9-5 14:41 编辑

这是水浒中的。

需要注意AI的判定也要保持一致。

另外我看你用的代码版本比较旧,应从google code的页面上更新一下。
  1. //设定攻击范围
  2. //使用比较复杂但是高效的方式重写,主要是为AI计算也可使用

  3. procedure SetAminationPosition(mode, step, range: integer); overload;
  4. begin
  5.   SetAminationPosition(Bx, By, Ax, Ay, mode, step, range);
  6. end;
  7.      
  8. procedure SetAminationPosition(Bx, By, Ax, Ay, mode, step, range: integer; play: integer = 0); overload;
  9. var
  10.   i, i1, i2, dis0, dis, Ax1, Ay1, step1: integer;
  11. begin
  12.   FillChar(Bfield[4, 0, 0], 4096 * 2, 0);

  13.   //按攻击类型判断是否在范围内
  14.   case mode of
  15.     0, 6: //目标系点型、目标系十型、目标系菱型、原地系菱型、远程
  16.     begin
  17.       dis := range;
  18.       for i1 := max(Ax - dis, 0) to min(Ax + dis, 63) do
  19.       begin
  20.         dis0 := abs(i1 - Ax);
  21.         for i2 := max(Ay - dis + dis0, 0) to min(Ay + dis - dis0, 63) do
  22.         begin
  23.           Bfield[4, i1, i2] := abs(i1 - Bx) + abs(i2 - By) * 2 + 1;
  24.         end;
  25.       end;
  26.       //if (abs(i1 - Ax) + abs(i2 - Ay)) <= range then
  27.       //Bfield[4, i1, i2] := 1;
  28.     end;
  29.     3: //目标系方型、原地系方型
  30.     begin
  31.       for i1 := max(Ax - range, 0) to min(Ax + range, 63) do
  32.         for i2 := max(Ay - range, 0) to min(Ay + range, 63) do
  33.           Bfield[4, i1, i2] := abs(i1 - Bx) + abs(i2 - By) * 2 + random(24) + 1;
  34.     end;
  35.     1: //方向系线型
  36.     begin
  37.       i := 1;
  38.       i1 := sign(Ax - Bx);
  39.       i2 := sign(Ay - By);
  40.       if i1 > 0 then
  41.         step := min(63 - Bx, step);
  42.       if i2 > 0 then
  43.         step := min(63 - By, step);
  44.       if i1 < 0 then
  45.         step := min(Bx, step);
  46.       if i2 < 0 then
  47.         step := min(By, step);
  48.       if (i1 = 0) and (i2 = 0) then
  49.         step := 0;
  50.       while i <= step do
  51.       begin
  52.         Bfield[4, Bx + i1 * i, By + i2 * i] := i * 2 + 1;
  53.         i := i + 1;
  54.       end;
  55.     end;
  56.     2: //原地系十型、原地系叉型、原地系米型
  57.     begin
  58.       for i1 := max(Bx - step, 0) to min(Bx + step, 63) do
  59.         Bfield[4, i1, By] := abs(i1 - Bx) * 4;
  60.       for i2 := max(By - step, 0) to min(By + step, 63) do
  61.         Bfield[4, Bx, i2] := abs(i2 - By) * 4;
  62.       for i := 1 to range do
  63.       begin
  64.         i1 := -i;
  65.         while i1 <= i do
  66.         begin
  67.           i2 := -i;
  68.           while i2 <= i do
  69.           begin
  70.             if (Bx + i1 in [0..63]) and (By + i2 in [0..63]) then
  71.               Bfield[4, Bx + i1, By + i2] := 2 * i * 2 + 1;
  72.             i2 := i2 + 2 * i;
  73.           end;
  74.           i1 := i1 + 2 * i;
  75.         end;
  76.       end;
  77.     end;
  78.     4: //方向系菱型
  79.     begin
  80.       step1 := (step + 1) div 2;
  81.       Ax1 := Bx + sign(Ax - Bx) * step1;
  82.       Ay1 := By + sign(Ay - By) * step1;
  83.       dis := step div 2;
  84.       for i1 := max(Ax1 - dis, 0) to min(Ax1 + dis, 63) do
  85.       begin
  86.         dis0 := abs(i1 - Ax1);
  87.         for i2 := max(Ay1 - dis + dis0, 0) to min(Ay1 + dis - dis0, 63) do
  88.         begin
  89.           if abs(i1 - Bx) <> abs(i2 - By) then
  90.             Bfield[4, i1, i2] := abs(i1 - Bx) + abs(i2 - By) * 2 + 1;
  91.         end;
  92.       end;
  93.       //Bfield[4, Bx, By] := 0;
  94.     end;
  95.     5: //方向系角型
  96.     begin
  97.       Ax1 := Bx + sign(Ax - Bx) * step;
  98.       Ay1 := By + sign(Ay - By) * step;
  99.       dis := step;
  100.       for i1 := max(Ax1 - dis, 0) to min(Ax1 + dis, 63) do
  101.       begin
  102.         dis0 := abs(i1 - Ax1);
  103.         for i2 := max(Ay1 - dis + dis0, 0) to min(Ay1 + dis - dis0, 63) do
  104.         begin
  105.           if (i1 in [0..63]) and (i2 in [0..63]) and (abs(i1 - Bx) <= step) and (abs(i2 - By) <= step) then
  106.             Bfield[4, i1, i2] := abs(i1 - Bx) + abs(i2 - By) * 2 + 1;
  107.         end;
  108.       end;
  109.       //Bfield[4, Bx, By] := 0;
  110.     end;
  111.     7: //啥东西?
  112.     begin
  113.       if ((Ax = Bx) and (i2 = Ay) and (abs(i1 - Ax) <= step)) or ((Ay = By) and (i1 = Ax) and
  114.         (abs(i2 - Ay) <= step)) then
  115.         Bfield[4, i1, i2] := 1;
  116.     end;
  117.   end;
  118.   {if play = 1 then
  119.   begin
  120.     for i1:=0 to 63 do
  121.     for i2:=0 to 63 do
  122.     if Bfield[4, i1, i2] = 1 then
  123.   begin
  124.     Bfield[4, i1, i2] := abs(i1 - Bx) + abs(i2 - By) * 4;
  125.   end;
  126.   end;}

  127. end;
复制代码
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2013-9-5 18:21 | 显示全部楼层
weyl 发表于 2013-9-5 14:39
这是水浒中的。

需要注意AI的判定也要保持一致。

我用的就是weyl大发布的源码版的啊,请问我将这段水浒的代码复制进去替换后就可以了么,那如何赋值给各种武功呢,例如给某一武功设定为倒三角,原先的upedit只能修改直线,十字,面和点啊

点评

应该是不能直接用,你加43736515这个qq群讨论吧。  发表于 2013-9-5 18:33
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

小黑屋|手机版|铁血丹心

GMT+8, 2024-12-22 13:35

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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