铁血丹心

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

[通用] 设置人物属性

[复制链接]
发表于 2010-1-11 17:19 | 显示全部楼层 |阅读模式

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

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

x
这是仿造金庸水浒传的队友加入时属性设置的代码。
制作这个代码时幸好有无色大大帮我请教kg大大,否则就没这么容易了。
heronum为需要设置的人物;
mode:0即设定和主角相同等级
       1即设定为和最高等级队友同等级
       2即设定为和最低等级队友同等级
addexp:设定人物为主角等级+1即填入1,0为不增加。
procedure hero(heronum, mode, addexp: integer);
var
  i, x, max, z, min, mubiao, j, s: integer;
begin
  max := 0;
  min := 30;
  for i := 0 to 5 do
  begin
    if Teamlist >= 0 then
    begin
      x := Rrole[Teamlist].level;
      if x > 30 then x := 30;
      if x > max then//找最高等级队友的等级
      begin
        max := x;//把最高的等级保存在变量max
      end;
      if x < min then//找最低等级队友的等级
      begin
        min := x;//把最低等级保存在min
      end;
    end;
  end;
  begin
    if mode = 0 then
      mubiao := Rrole[0].Level;
    if mode = 1 then
      mubiao := max;
    if mode = 2 then
      mubiao := min;//设定mode
    mubiao := mubiao + addexp;  
    s := Rrole[heronum].level;
    j := mubiao - s;
    for i := 0 to (j - 1) do
    begin
    Rrole[heronum].Level := Rrole[heronum].Level + 1;//增加人物等级
    lvlup(heronum);//调用升级事件
    end;
  end;
end;


[发帖际遇]: 轩辕夏禹大量收购血竭、田七、没药、熊胆,想转卖给赵王府,提前被郭靖黄蓉劫走,亏损银两11两。


[ 本帖最后由 轩辕夏禹 于 2010-1-11 17:53 编辑 ]

评分

参与人数 1声望 +4 收起 理由
黄顺坤 + 4 新人鼓励

查看全部评分

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-1-11 17:38 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-1-11 17:53 | 显示全部楼层
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-1-11 17:56 | 显示全部楼层
此为升级事件的代码,成长指数自己改吧。

procedure LvlUp(heronum: integer);
var
  i, rnum, add, ada: integer;
  str: widestring;
begin

  rnum := heronum;
  RRole[rnum].MaxHP := RRole[rnum].MaxHP + Rrole[rnum].IncLife * 3 + random(6);
  if RRole[rnum].MaxHP > MAX_HP then RRole[rnum].MaxHP := MAX_HP;
  RRole[rnum].CurrentHP := RRole[rnum].MaxHP;

  add := Rrole[rnum].Aptitude div 15 + 1;
  add := random(add) + 5;
  ada := Rrole[rnum].Ethics * 3 + random(6);

  RRole[rnum].MaxMP := RRole[rnum].MaxMP + ada;
  if RRole[rnum].MaxMP > MAX_MP then RRole[rnum].MaxMP := MAX_MP;
  RRole[rnum].CurrentMP := RRole[rnum].MaxMP;

  RRole[rnum].Attack := RRole[rnum].Attack + add;
  Rrole[rnum].Speed := Rrole[rnum].Speed + add;
  Rrole[rnum].Defence := Rrole[rnum].Defence + add;

  for i := 46 to 54 do
  begin
    if rrole[rnum].data > 0 then
      rrole[rnum].data := rrole[rnum].data + random(3) + 1;
  end;
  for i := 43 to 58 do
  begin
    if rrole[rnum].data > maxprolist then
      rrole[rnum].data := maxprolist;
  end;

  RRole[rnum].PhyPower := MAX_PHYSICAL_POWER;
  RRole[rnum].Hurt := 0;
  RRole[rnum].Poision := 0;


[发帖际遇]: 轩辕夏禹路遇香香公主,惊为天人,花费银两13买水喝以补充损失的口水。


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

回复 五当家 的帖子

你说的是lvlup指令?
敝人是直接复制原版的,刚刚忘了改,抱歉。
敝人自己的lvlup有做过一些修改,所以没贴上来。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-1-11 18:50 | 显示全部楼层
  1. for i := 0 to 5 do
  2.   begin
  3.     if Teamlist >= 0 then
  4.     begin
  5.       x := Rrole[Teamlist].level;
  6.       if x > 30 then x := 30;
  7.       if x > max then//找最高等级队友的等级
  8.       begin
  9.         max := x;//把最高的等级保存在变量max
  10.       end;
  11.       if x < min then//找最低等级队友的等级
  12.       begin
  13.         min := x;//把最低等级保存在min
  14.       end;
  15.     end;
  16.   end;
复制代码
以上这个有点问题,循环内部竟然没有i
似乎应该改为
  1. for i := 0 to 5 do
  2.   begin
  3.     if Teamlist >= i then
  4.     begin
  5.       x := Rrole[i].level;
  6.       if x > 30 then x := 30;
  7.       if x > max then//找最高等级队友的等级
  8.       begin
  9.         max := x;//把最高的等级保存在变量max
  10.       end;
  11.       if x < min then//找最低等级队友的等级
  12.       begin
  13.         min := x;//把最低等级保存在min
  14.       end;
  15.     end;
  16.   end;
复制代码
或者再优化一下
  1. for i := 0 to teamlist do
  2.   begin
  3.       x := Rrole[i].level;
  4.       if x > 30 then x := 30;
  5.       if x > max then//找最高等级队友的等级
  6.       begin
  7.         max := x;//把最高的等级保存在变量max
  8.       end;
  9.       if x < min then//找最低等级队友的等级
  10.       begin
  11.         min := x;//把最低等级保存在min
  12.       end;
  13.   end;
复制代码
[发帖际遇]: 真正的强强躲在无量山洞的玉像后面,待段誉磕完一千个头后说了句“免礼”,被段誉发现,立刻赔礼道歉一番花掉银两14。


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

回复 七当家 的帖子

您的代码有问题。
[quote]for i := 0 to 5 do   begin    if Teamlist >= i then    begin      x := Rrole[i].level;      if x > 30 then x := 30;      if x > max then//找最高等级队友的等级      begin        max := x;//把最高的等级保存在变量max      end;      if x < min then//找最低等级队友的等级      begin        min := x;//把最低等级保存在min      end;    end;  end;[/quote]
若是使用 x := Reole[i].level;
那么就变成只会读取0到5号人物的等级了哦。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-1-11 19:38 | 显示全部楼层
关于I的缺失似乎是和discuz代码的冲突
【i】

[发帖际遇]: 黄顺坤偷得祖千秋八杯卖与丹青生,卖得银两27两。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-1-11 19:42 | 显示全部楼层
汗啊!好长时间不写代码,都有点忘了……
我错了……
看了一下pascal复刻版的代码,原来teamlist是个数组,而Rrole是所有人的属性……
那就是这样的
  1. for i := 0 to 5 do
  2.   begin
  3.     if Teamlist[i] >= 0 then
  4.     begin
  5.       x := Rrole[Teamlist[i]].level;
  6.       if x > 30 then x := 30;
  7.       if x > max then//找最高等级队友的等级
  8.       begin
  9.         max := x;//把最高的等级保存在变量max
  10.       end;
  11.       if x < min then//找最低等级队友的等级
  12.       begin
  13.         min := x;//把最低等级保存在min
  14.       end;
  15.     end;
  16.   end;
复制代码
这样就好了,看你那个有问题主要是没看到i,在teamlist后面加上就好了,呵呵。

PS:其实我发贴主要是想看看刚换的签名的……

对,我也想到了是黄大说的那个问题

[ 本帖最后由 真正的强强 于 2010-1-11 19:45 编辑 ]
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2010-1-11 19:55 | 显示全部楼层
其实,把“引用”换成“代码”就好了……
我今天真是多此一举……

[发帖际遇]: 真正的强强吃烧饼的时候,发现烧饼里藏着一枚“玄铁令”,转手卖掉后,赚到银两2。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
 楼主| 发表于 2010-1-11 22:17 | 显示全部楼层
强强大大,谢谢您的指导,这是无色大大帮我请教kg大大,然后kg大大指点的。
我之前也是用您的方案,结果只能设置和主角同等级,设置别的就会出错。。
也不知道是哪里出问题。
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-5-19 10:43

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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