铁血丹心

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

【九阳极意】张无忌的春天

[复制链接]
发表于 2011-12-22 16:41 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 Czhe520 于 2011-12-22 16:42 编辑

在此感谢论坛友人deepinshit是你分享的DIY自制武功让我也有了学习DlY武功制作的兴趣,鄙人想做个张无忌的九阳极意,由于是第一次涉足DIY,起点不能太高,就想先从你的玄冥极意中直接改过来,具体修改附后,问题的关键是,改完了以后以战斗就自动跳出,求高手指教


function War_DIY_Fight(id, wugong, level, ng)
local pid = WAR.Person[id]["人物编号"];
local Ppoison = JY.Person[pid]["中毒程度"];  
local Phurt = JY.Person[pid]["受伤程度"];
local jipo =  GetS(5,1,6,5)-2;

if jipo>500 then jipo = 500
end

  WAR.tmp[1987]=Ppoison;
  WAR.tmp[1988]=Phurt;
  WAR.tmp[1989]=0; --杀死敌人数
  
if wugong ==106 and level==999 and pid==9  
then
  if  WAR.LQZ[0]==100 or Ppoison>=math.floor(50+(jipo/10)) then
   WAR.WS=1;
   WAR.tmp[1986]=106;
   JY.Person[pid]["中毒程度"]=0;
   --JY.Person[pid]["受伤程度"]=0;
   ng=(ng + 750)*(1+Ppoison/100);
   for i=0,5 do
    for j=0,5 do
     SetWarMap(WAR.Person[WAR.CurID]["坐标X"]+i,WAR.Person[WAR.CurID]["坐标Y"]+j,4,1)
     SetWarMap(WAR.Person[WAR.CurID]["坐标X"]-i,WAR.Person[WAR.CurID]["坐标Y"]+j,4,1)
     SetWarMap(WAR.Person[WAR.CurID]["坐标X"]+i,WAR.Person[WAR.CurID]["坐标Y"]-j,4,1)
     SetWarMap(WAR.Person[WAR.CurID]["坐标X"]-i,WAR.Person[WAR.CurID]["坐标Y"]-j,4,1)
    end
   end
   
   if WAR.Person[id]["特效文字1"]== nil
   then WAR.Person[id]["特效文字1"]="九阳极意——炎阳天翔"
   else WAR.Person[id]["特效文字1"]="九阳极意——炎阳天翔 + "..WAR.Person[id]["特效文字1"]
   end
  else
  
  JY.Person[pid]["中毒程度"]=JY.Person[pid]["中毒程度"]+math.floor((jipo+500)/40);
  WAR.tmp[1986]=9;
  end
  
end
return ng;
end
function War_DIY_WugongHurtLife(enemyid, wugong, hurt, ang, dng)
  local pid = WAR.Person[WAR.CurID]["人物编号"];
        local eid = WAR.Person[enemyid]["人物编号"];
  local Ppoison = WAR.tmp[1987];  
  local Phurt = WAR.tmp[1988];
  
  if eid==0 and WAR.tmp[1985]==true and math.random(10)<=3+math.floor(JY.Person[eid]["中毒程度"]/25) then
  dng=dng+500+20*JY.Person[eid]["中毒程度"];
  if WAR.LQZ[eid]==nil
  then
  WAR.LQZ[eid]=10;
  else
  WAR.LQZ[eid]=WAR.LQZ[eid]+10;
   if WAR.LQZ[eid]>100 then WAR.LQZ[eid]=100
   end
  end
  if WAR.Person[enemyid]["特效文字2"]== nil
   then WAR.Person[enemyid]["特效文字2"]="九阳极意——极阳归元"
   else WAR.Person[enemyid]["特效文字2"]="九阳极意——极阳归元 + "..WAR.Person[enemyid]["特效文字2"]
   end
  WAR.Person[enemyid]["特效动画"]=7;
  --WAR.tmp[1990]=enemyid;      --反击的实现
  --WAR.tmp[1991]=WAR.CurID;
  end
  
        if pid==9 and wugong==106 and WAR.tmp[1986]==106 then
  
  --WAR.WS=1;
  JY.Person[eid]["中毒程度"]=JY.Person[eid]["中毒程度"]+Ppoison;
  --JY.Person[eid]["受伤程度"]=JY.Person[eid]["受伤程度"]+Phurt;
  
  hurt = math.floor(hurt*(1+Ppoison/150)) + JY.Person[eid]["中毒程度"]*2;
  if hurt >=JY.Person[eid]["生命"] then
  
  WAR.tmp[1989]=WAR.tmp[1989]+1;
  JY.Person[9]["中毒程度"]=JY.Person[0]["中毒程度"]+20;
  for i=0,WAR.PersonNum-1 do
  if WAR.Person["死亡"]~=true and WAR.Person["我方"]~=true then
  if WAR.Person["Time"]>=-400 then WAR.Person["Time"]=WAR.Person["Time"]-100;
  else WAR.Person["Time"]=-500;
  end
  
  JY.Person[WAR.Person["人物编号"]]["中毒程度"]=JY.Person[WAR.Person["人物编号"]]["中毒程度"]+20;
  end
  end
end
end
  return hurt, ang, dng;
end

function drawname(x,y,name,size)
  x=x-math.modf(size/2)
  local namelen=string.len(name)/2
  local zi={}
  
  for i=1,namelen do
    zi=string.sub(name,i*2-1,i*2)
    DrawString(x,y,zi,C_WHITE,size)
    y=y+size
  end
  
  local f = true
  local zhangwuji=9;
  local Ppoison = JY.Person[9]["中毒程度"];  
  local Phurt = JY.Person[9]["受伤程度"];
  local jipo =  GetS(5,1,6,5)-2;
  local EnemyCount=0;
  if jipo>500 then jipo = 500
end  
  
  --找主角id,排除杀集气,为时序效果准备
for i=0,WAR.PersonNum-1 do
if JY.Person[WAR.Person["人物编号"]]["生命"]>0 and WAR.Person["我方"]~=true
then  EnemyCount=EnemyCount+1;
end
  if WAR.Person["人物编号"]==9 then
  zhangwuji=i;
  end
  if WAR.Person["TimeAdd"] <= 0 and WAR.Person["人物编号"]~=446 and WAR.Person["人物编号"]~= 445 and WAR.Person["死亡"]~=true
  then  
    f = false
  end
end
--[[九阳极意持续触发判定 暂不使用
  if  WAR.LQZ[0]==100 or (Ppoison+Phurt)>=math.floor(50+(jipo/10)) then
   WAR.tmp[1986]=106;
  elseif WAR.Person[zhangwuji]["Time"]<1000 then WAR.tmp[1986]=0;
  end]]
--九阳判断
  local jiuyang=false
for k=1,10 do
    if JY.Person[9]["武功"..k]==106  then
    if JY.Person[9]["武功等级" .. k]==999
    then jiuyang=true
    end
    break;
    end
end
  
WAR.tmp[1985]=jiuyang;

--九阳回内
if jiuyang==true and f==true and name==JY.Person[9]["姓名"] then
--九阳回血太淫霸 JY.Person[9]["生命"]=JY.Person[9]["生命"]+math.floor(JY.Person[9]["中毒程度"]/10);
if JY.Person[9]["内力"]<JY.Person[9]["内力最大值"]
then JY.Person[9]["内力"]=JY.Person[9]["内力"]+math.floor(JY.Person[9]["中毒程度"]/10);
elseif JY.Person[9]["内力"]>JY.Person[9]["内力最大值"]
then JY.Person[9]["内力"]=JY.Person[9]["内力最大值"];
end
--中毒加速 越毒越猛
if WAR.Person[zhangwuji]["Time"]<1000 and JY.Person[9]["中毒程度"]>0 then
WAR.Person[zhangwuji]["Time"]=WAR.Person[zhangwuji]["Time"]+math.floor(JY.Person[9]["中毒程度"]/10);
elseif WAR.Person[zhangwuji]["Time"]>1010 then
WAR.Person[zhangwuji]["Time"]=1010;
end
end


  
--特性 天炎焚身 敌人全灭后不触发
if jiyang==true and WAR.tmp[1989]~=nil and WAR.tmp[1989]>0 and EnemyCount>0 then
local yinbao="极意——天炎焚身"..tostring(WAR.tmp[1989]).."人";

DrawStrBoxWaitKey(yinbao,C_GOLD,CC.Fontbig);
                        
if WAR.Person[zhangwuji]["Time"]<1000 then
WAR.Person[zhangwuji]["Time"]=WAR.Person[zhangwuji]["Time"]+WAR.tmp[1989]*100;
WAR.tmp[1989]=0;
if WAR.Person[zhangwuji]["Time"]>1010 then WAR.Person[zhangwuji]["Time"]=1010;
end
end
end
end

【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-12-22 21:26 | 显示全部楼层
你有个jiuyang写成jiyang了,其他晚点帮你看看,另外你这样传代码会被论坛吃掉一些。。。

点评

点高级模式,里面有代码的选项  发表于 2011-12-23 08:22
是的看到了,另外请教下,怎么向你这样传代码?  发表于 2011-12-23 08:15
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-12-23 05:37 | 显示全部楼层
这样不会跳出一些基础效果也有,但是还差什么我也不知道
  1. --JY.Person[9]["轻功"] = 500;
  2. --instruct_35(9,3,108,999)
  3. --instruct_35(9,0,106,999)
  4. function War_DIY_Fight(id, wugong, level, ng)
  5. local pid = WAR.Person[id]["人物编号"];
  6. local Ppoison = JY.Person[pid]["中毒程度"];
  7. local Phurt = JY.Person[pid]["受伤程度"];
  8. local jipo =  GetS(5,5,6,5)-2;

  9. if jipo>500 then jipo = 500
  10. end

  11.   WAR.tmp[1987]=Ppoison;
  12.   WAR.tmp[1988]=Phurt;
  13.   WAR.tmp[1989]=0; --杀死敌人数

  14. if wugong ==106 and level==999 and pid==9
  15. then
  16.   if  WAR.LQZ[9]==100 or Ppoison>=math.floor(50+(jipo/10)) then
  17.    WAR.WS=1;
  18.    WAR.tmp[1986]=106;
  19.    JY.Person[pid]["中毒程度"]=0;
  20.    --JY.Person[pid]["受伤程度"]=0;
  21.    ng=(ng + 750)*(1+Ppoison/100);
  22.    for i=0,5 do
  23.     for j=0,5 do
  24.      SetWarMap(WAR.Person[WAR.CurID]["坐标X"]+i,WAR.Person[WAR.CurID]["坐标Y"]+j,4,1)
  25.      SetWarMap(WAR.Person[WAR.CurID]["坐标X"]-i,WAR.Person[WAR.CurID]["坐标Y"]+j,4,1)
  26.      SetWarMap(WAR.Person[WAR.CurID]["坐标X"]+i,WAR.Person[WAR.CurID]["坐标Y"]-j,4,1)
  27.      SetWarMap(WAR.Person[WAR.CurID]["坐标X"]-i,WAR.Person[WAR.CurID]["坐标Y"]-j,4,1)
  28.     end
  29.    end

  30.    if WAR.Person[id]["特效文字1"]== nil
  31.    then WAR.Person[id]["特效文字1"]="九阳极意——炎阳天翔"
  32.    else WAR.Person[id]["特效文字1"]="九阳极意——炎阳天翔 + "..WAR.Person[id]["特效文字1"]
  33.    end
  34.   else

  35.   JY.Person[pid]["中毒程度"]=JY.Person[pid]["中毒程度"]+math.floor((jipo+500)/40);
  36.   WAR.tmp[1986]=106;
  37.   end

  38. end
  39. return ng;
  40. end
  41. function War_DIY_WugongHurtLife(enemyid, wugong, hurt, ang, dng)
  42.   local pid = WAR.Person[WAR.CurID]["人物编号"];
  43.         local eid = WAR.Person[enemyid]["人物编号"];
  44.   local Ppoison = WAR.tmp[1987];
  45.   local Phurt = WAR.tmp[1988];

  46.   if eid==0 and WAR.tmp[1985]==true and math.random(10)<=3+math.floor(JY.Person[eid]["中毒程度"]/25) then
  47.   dng=dng+500+20*JY.Person[eid]["中毒程度"];
  48.   if WAR.LQZ[eid]==nil
  49.   then
  50.   WAR.LQZ[eid]=10;
  51.   else
  52.   WAR.LQZ[eid]=WAR.LQZ[eid]+10;
  53.    if WAR.LQZ[eid]>100 then WAR.LQZ[eid]=100
  54.    end
  55.   end
  56.   if WAR.Person[enemyid]["特效文字2"]== nil
  57.    then WAR.Person[enemyid]["特效文字2"]="九阳极意——极阳归元"
  58.    else WAR.Person[enemyid]["特效文字2"]="九阳极意——极阳归元 + "..WAR.Person[enemyid]["特效文字2"]
  59.    end
  60.   WAR.Person[enemyid]["特效动画"]=7;
  61.   --WAR.tmp[1990]=enemyid;      --反击的实现
  62.   --WAR.tmp[1991]=WAR.CurID;
  63.   end

  64.         if pid==9 and wugong==106 and WAR.tmp[1986]==106 then

  65.   --WAR.WS=1;
  66.   JY.Person[eid]["中毒程度"]=JY.Person[eid]["中毒程度"]+Ppoison;
  67.   --JY.Person[eid]["受伤程度"]=JY.Person[eid]["受伤程度"]+Phurt;

  68.   hurt = math.floor(hurt*(1+Ppoison/150)) + JY.Person[eid]["中毒程度"]*2;
  69.   if hurt >=JY.Person[eid]["生命"] then

  70.   WAR.tmp[1989]=WAR.tmp[1989]+1;
  71.   JY.Person[9]["中毒程度"]=JY.Person[9]["中毒程度"]+20;
  72.                 for i=0,WAR.PersonNum-1 do
  73.                 if WAR.Person[i]["死亡"]~=true and WAR.Person[i]["我方"]~=true then
  74.                 if WAR.Person[i]["Time"]>=-400 then WAR.Person[i]["Time"]=WAR.Person[i]["Time"]-100;
  75.                 else WAR.Person[i]["Time"]=-500;
  76.                 end

  77.   JY.Person[WAR.Person[i]["人物编号"]]["中毒程度"]=JY.Person[WAR.Person[i]["人物编号"]]["中毒程度"]+20;
  78.   end
  79.   end
  80. end
  81. end
  82.   return hurt, ang, dng;
  83. end

  84. function drawname(x,y,name,size)
  85.   x=x-math.modf(size/2)
  86.   local namelen=string.len(name)/2
  87.   local zi={}

  88.   for i=1,namelen do
  89.     zi=string.sub(name,i*2-1,i*2)
  90.     DrawString(x,y,zi,C_WHITE,size)
  91.     y=y+size
  92.   end

  93.   local f = true
  94.   local zhangwuji = 0
  95.   local Ppoison = JY.Person[9]["中毒程度"];
  96.   local Phurt = JY.Person[9]["受伤程度"];
  97.   local jipo =  GetS(5,5,6,5)-2;
  98.   local EnemyCount=0;
  99.         if jipo>500 then
  100.                 jipo = 500
  101.         end

  102.   --找主角id,排除杀集气,为时序效果准备
  103.         for i=0,WAR.PersonNum-1 do
  104.                 if JY.Person[WAR.Person[i]["人物编号"]]["生命"]>0 and WAR.Person[i]["我方"]~=true then
  105.                         EnemyCount=EnemyCount+1;
  106.                 end
  107.                 if WAR.Person[i]["人物编号"]==9 then
  108.                         zhangwuji=i;
  109.                 end
  110.                 if WAR.Person[i]["TimeAdd"] <= 0 and WAR.Person[i]["人物编号"]~=446 and WAR.Person[i]["人物编号"]~= 445 and WAR.Person[i]["死亡"]~=true then
  111.                         f = false
  112.                 end
  113.         end
  114. --[[九阳极意持续触发判定 暂不使用
  115.   if  WAR.LQZ[0]==100 or (Ppoison+Phurt)>=math.floor(50+(jipo/10)) then
  116.    WAR.tmp[1986]=106;
  117.   elseif WAR.Person[zhangwuji]["Time"]<1000 then WAR.tmp[1986]=0;
  118.   end]]
  119. --九阳判断
  120.   local jiuyang=false
  121.         for k=1,10 do
  122.                 if JY.Person[9]["武功"..k]==106  then
  123.                         if JY.Person[9]["武功等级" .. k]==999 then
  124.                                 jiuyang=true
  125.                         end
  126.                         break;
  127.                 end
  128.         end
  129. WAR.tmp[1985]=jiuyang;
  130. --九阳回内
  131.         if jiuyang==true and f==true and name==JY.Person[9]["姓名"] then
  132. --九阳回血太淫霸 JY.Person[9]["生命"]=JY.Person[9]["生命"]+math.floor(JY.Person[9]["中毒程度"]/10);
  133.                 if JY.Person[9]["内力"]<JY.Person[9]["内力最大值"] then
  134.                         JY.Person[9]["内力"]=JY.Person[9]["内力"]+math.floor(JY.Person[9]["中毒程度"]/10);
  135.                 elseif JY.Person[9]["内力"]>JY.Person[9]["内力最大值"] then
  136.                         JY.Person[9]["内力"]=JY.Person[9]["内力最大值"];
  137.                 end
  138. --中毒加速 越毒越猛
  139.                 if WAR.Person[zhangwuji]["Time"]<1000 and JY.Person[9]["中毒程度"]>0 then
  140.                         WAR.Person[zhangwuji]["Time"]=WAR.Person[zhangwuji]["Time"]+math.floor(JY.Person[9]["中毒程度"]/10);
  141.                 elseif WAR.Person[zhangwuji]["Time"]>1010 then
  142.                         WAR.Person[zhangwuji]["Time"]=1010;
  143.                 end
  144.         end

  145. --特性 天炎焚身 敌人全灭后不触发
  146.         if jiuyang and WAR.tmp[1989]~=nil and WAR.tmp[1989]>0 and EnemyCount>0 then
  147.         local yinbao="极意——天炎焚身"..tostring(WAR.tmp[1989]).."人";
  148.                 DrawStrBoxWaitKey(yinbao,C_GOLD,CC.Fontbig);
  149.                 if WAR.Person[zhangwuji]["Time"]<1000 then
  150.                         WAR.Person[zhangwuji]["Time"]=WAR.Person[zhangwuji]["Time"]+WAR.tmp[1989]*100;
  151.                         WAR.tmp[1989]=0;
  152.                         if WAR.Person[zhangwuji]["Time"]>1010 then
  153.                                 WAR.Person[zhangwuji]["Time"]=1010;
  154.                         end
  155.                 end
  156.         end
  157. end
复制代码



【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2011-12-23 08:59 | 显示全部楼层
40 JY.Person[pid]["中毒程度"]=JY.Person[pid]["中毒程度"]+math.floor((jipo+500)/40);
41 WAR.tmp[1986]=106;
应改为
41  WAR.tmp[1986]=0;

不过九阳和毒实在是木有关系啊。你要改可以试着改个九阳+7伤的极意。我以前做了一点。你用的代码里的Phurt就是残留。玄冥是没有用到内伤值的。因为想法和玄冥比较相似,代码也比较雷同,就懒得做了,跑去做双剑了。

大概想法是,7伤打人自己加内伤。然后自己越内伤,气防越高(让别人杀不动气,不然内伤减速了就动不了了),时序涨怒气。满怒或者内伤满时,再用七伤,把内伤全部打出变成伤害给敌人。那个毒尸引爆这么阴毒的武功,就不要给9阳啊、7伤加了。

你有兴趣可以自己试试。和玄冥的代码非常相似。


点评

是的,我想先简单的修改下你的代码,然后再逐步改成,张无忌九阳到极后,时序内伤,一个九阳烧身的效果,然后自己越内伤,气防越高现在,现在只是简单改成九阳,等没什么BUG了在完善  发表于 2011-12-23 09:36
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-11-23 10:53

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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