铁血丹心

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

[不算补丁的补丁]物品显示的代码

[复制链接]
发表于 2013-3-29 11:25 | 显示全部楼层 |阅读模式
本帖最后由 二宫和也 于 2013-3-29 11:35 编辑

其实是因为玩游戏的时候老是忘记武功效果,所以不得已补了几句代码,懒得边玩游戏边翻电子书的童鞋适用

补丁效果
1)装备栏会显示有威力加成的武功
新手温馨提示:武器武功搭配可以自己在CC.ExtraOffense里面添加


2)秘籍栏会显示内力性质需求(主要是以前的阴性从来都不显示...)以及10级无加成状态下的威力


代码如下,放在LDCR里面替换原函数,好吧我承认只是加了几行代码而已....

  1. function SelectThing(thing,thingnum, bg)
  2. local xnum=CC.MenuThingXnum;
  3. local ynum=CC.MenuThingYnum;

  4. local w=CC.ThingPicWidth*xnum+(xnum-1)*CC.ThingGapIn+2*CC.ThingGapOut; --总体宽度
  5. local h=CC.ThingPicHeight*ynum+(ynum-1)*CC.ThingGapIn+2*CC.ThingGapOut; --物品栏高度

  6. local dx=(CC.ScreenW-w)/2;
  7. local dy=(CC.ScreenH-h-2*(CC.ThingFontSize+2*CC.MenuBorderPixel+5))/2-50;


  8. local y1_1,y1_2,y2_1,y2_2,y3_1,y3_2; --名称,说明和图片的Y坐标

  9. local cur_line=0;
  10. local cur_x=0;
  11. local cur_y=0;
  12. local cur_thing=-1;

  13. while true do
  14. Cls();

  15. if bg ~= nil then
  16. lib.LoadPicture(bg, -1, -1)
  17. end

  18. y1_1=dy;
  19. y1_2=y1_1+CC.ThingFontSize+2*CC.MenuBorderPixel;
  20. DrawBox(dx,y1_1,dx+w,y1_2,C_WHITE);
  21. y2_1=y1_2+5
  22. y2_2=y2_1+CC.ThingFontSize+2*CC.MenuBorderPixel
  23. DrawBox(dx,y2_1,dx+w,y2_2,C_WHITE);
  24. y3_1=y2_2+5;
  25. y3_2=y3_1+h;
  26. DrawBox(dx,y3_1,dx+w,y3_2,C_WHITE);

  27. for y=0,ynum-1 do
  28. for x=0,xnum-1 do
  29. local id=y*xnum+x+xnum*cur_line --当前待选择物品
  30. local boxcolor;
  31. if x==cur_x and y==cur_y then
  32. boxcolor=C_WHITE;
  33. if thing[id]>=0 then
  34. cur_thing=thing[id];
  35. local str=JY.Thing[thing[id]]["名称"];
  36. if JY.Thing[thing[id]]["类型"]==1 or JY.Thing[thing[id]]["类型"]==2 then
  37. if JY.Thing[thing[id]]["使用人"] >=0 then
  38. str=str .. "(" .. JY.Person[JY.Thing[thing[id]]["使用人"]]["姓名"] .. ")";
  39. end
  40. end
  41. str=string.format("%s X %d",str,thingnum[id]);
  42. local str2=JY.Thing[thing[id]]["物品说明"];
  43. if thing[id]==182 then
  44. str2=str2..string.format('(人%3d,%3d)',JY.Base['人X'],JY.Base['人Y'])
  45. end

  46. DrawString(dx+CC.ThingGapOut,y1_1+CC.MenuBorderPixel,str,C_GOLD,CC.ThingFontSize);
  47. DrawString(dx+CC.ThingGapOut,y2_1+CC.MenuBorderPixel,str2,C_ORANGE,CC.ThingFontSize);
  48. local myfont=math.modf(CC.ThingFontSize*0.7)--20
  49. local mx, my = dx + 4 * myfont, y3_2 + 2
  50. local myflag=0
  51. local myThing=JY.Thing[thing[id]]

  52. --
  53. local function drawitem(ss,str,news)
  54. local mys
  55. if str==nil then
  56. mys=ss
  57. elseif myThing[ss]~=0 then
  58. if news==nil then
  59. if myflag==0 then
  60. mys=string.format(str..':%+d',myThing[ss])
  61. elseif myflag==1 then
  62. mys=string.format(str..':%d',myThing[ss])
  63. end
  64. else
  65. if myThing[ss]<0 then
  66. return
  67. end
  68. mys=string.format(str..':%s',news[myThing[ss]])
  69. end
  70. elseif myThing[ss]==0 and ss=="需内力性质" then
  71. mys=string.format(str..':%s',news[myThing[ss]])
  72. else
  73. return
  74. end

  75. local ccc=C_GOLD
  76. if ss=="需内力性质" then
  77. if myThing[ss]==0 then
  78. ccc=M_DeepSkyBlue
  79. elseif myThing[ss]==1 then
  80. ccc=C_ORANGE
  81. elseif myThing[ss]==2 then
  82. ccc=C_WHITE
  83. end
  84. end
  85. local mylen = myfont * string.len(mys) / 2 + 12
  86. if CC.ScreenW - dx < mx + mylen then
  87. my = my + myfont + 10
  88. mx = dx + 4 * myfont
  89. end
  90. DrawStrBox(mx,my,mys,ccc,myfont)
  91. mx=mx+mylen
  92. end

  93. if myThing["练出武功"] > 0 then
  94. local kfname = "习得:" .. JY.Wugong[myThing["练出武功"]]["名称"]
  95. DrawStrBox(mx, my, kfname, C_GOLD, myfont)
  96. mx = mx + myfont * string.len(kfname) / 2 + 12
  97. if JY.Wugong[myThing["练出武功"]]["攻击力10"] > 0 then
  98. local kfwl = "威力:" .. JY.Wugong[myThing["练出武功"]]["攻击力10"]
  99. DrawStrBox(mx, my, kfwl, C_GOLD, myfont)
  100. mx = mx + myfont * string.len(kfwl) / 2 + 12
  101. end
  102. end

  103. if myThing['类型']>0 then
  104. drawitem('加生命','生命')
  105. drawitem('加生命最大值','生命最大值')
  106. drawitem('加中毒解毒','中毒')
  107. drawitem('加体力','体力')
  108. if myThing['改变内力性质']==2 then
  109. drawitem('内力门路阴阳合一')
  110. elseif myThing['改变内力性质']==3 then
  111. drawitem('内力门路转为阴性')
  112. elseif myThing['改变内力性质']==4 then
  113. drawitem('内力门路转为阳性')
  114. end
  115. drawitem('加内力','内力')
  116. drawitem('加内力最大值','内力最大值')
  117. drawitem('加攻击力','攻击')
  118. drawitem('加轻功','轻功')
  119. drawitem('加防御力','防御')
  120. drawitem('加医疗能力','医疗')
  121. drawitem('加用毒能力','用毒')
  122. drawitem('加解毒能力','解毒')
  123. drawitem('加抗毒能力','抗毒')
  124. drawitem('加拳掌功夫','拳掌')
  125. drawitem('加御剑能力','御剑')
  126. drawitem('加耍刀技巧','耍刀')
  127. drawitem('加特殊兵器','特殊')
  128. drawitem('加暗器技巧','暗器')
  129. drawitem('加武学常识','武常')
  130. drawitem('加品德','品德')
  131. drawitem('加攻击次数','左右',{[0]='否','是'})
  132. drawitem('加攻击带毒','带毒')
  133. if myThing['类型'] == 1 and myThing['装备类型'] == 0 then
  134. local tmpvv = {}
  135. for v = 1, #CC.ExtraOffense do
  136. if CC.ExtraOffense[v][1] == thing[id] then
  137. tmpvv[#tmpvv + 1] = CC.ExtraOffense[v][2]
  138. end
  139. end
  140. if #tmpvv > 0 then
  141. local tmpss = "加成武功:"
  142. for v = 1, #tmpvv do
  143. tmpss = tmpss..JY.Wugong[tmpvv[v]]["名称"].." "
  144. end
  145. drawitem(tmpss)
  146. end
  147. end
  148. if mx~=dx or my~=y3_2+2 then
  149. DrawStrBox(dx, y3_2 + 2, " 效果:", C_RED, myfont)
  150. end
  151. end

  152. if myThing['类型']==1 or myThing['类型']==2 then
  153. if mx~=dx then
  154. mx=dx+4*myfont+12
  155. my=my+myfont+20
  156. end
  157. myflag=1
  158. local my2=my
  159. if myThing['仅修炼人物']>-1 then
  160. drawitem('仅限:'..JY.Person[myThing['仅修炼人物']]['姓名'])
  161. end
  162. drawitem('需内力性质','阴阳',{[0]='阴','阳','不限'})
  163. drawitem('需内力','内力')
  164. drawitem('需攻击力','攻击')
  165. drawitem('需轻功','轻功')
  166. drawitem('需用毒能力','用毒')
  167. drawitem('需医疗能力','医疗')
  168. drawitem('需解毒能力','解毒')
  169. drawitem('需拳掌功夫','拳掌')
  170. drawitem('需御剑能力','御剑')
  171. drawitem('需耍刀技巧','耍刀')
  172. drawitem('需特殊兵器','特殊')
  173. drawitem('需暗器技巧','暗器')
  174. drawitem('需资质','资质')
  175. drawitem('需经验','修炼经验')
  176. if mx~=dx or my~=my2 then
  177. DrawStrBox(dx,my2,' 需求:',C_RED,myfont)
  178. end
  179. end
  180. else
  181. cur_thing=-1;
  182. end
  183. else
  184. boxcolor=C_BLACK;
  185. end

  186. local boxx = dx + CC.ThingGapOut + x * (CC.ThingPicWidth + CC.ThingGapIn)
  187. local boxy = y3_1 + CC.ThingGapOut + y * (CC.ThingPicHeight + CC.ThingGapIn)
  188. lib.DrawRect(boxx, boxy, boxx + CC.ThingPicWidth + 1, boxy + CC.ThingPicHeight + 1, boxcolor)
  189. if thing[id] >= 0 then
  190. if CC.LoadThingPic == 1 then
  191. lib.PicLoadCache(2, thing[id] * 2, boxx + 1, boxy + 1, 1)
  192. else
  193. lib.PicLoadCache(0, (thing[id] + CC.StartThingPic) * 2, boxx + 1, boxy + 1, 1)
  194. end
  195. end
  196. end
  197. end

  198. ShowScreen();

  199. local keypress=WaitKey(1);
  200. lib.Delay(100);
  201. if keypress==VK_ESCAPE then
  202. cur_thing=-1;
  203. break;
  204. elseif keypress==VK_RETURN or keypress==VK_SPACE then
  205. break;
  206. elseif keypress==VK_UP then
  207. if cur_y == 0 then
  208. if cur_line > 0 then
  209. cur_line = cur_line - 1;
  210. end
  211. else
  212. cur_y = cur_y - 1;
  213. end
  214. elseif keypress==VK_DOWN then
  215. if cur_y ==ynum-1 then
  216. if cur_line < (math.modf(CC.MyThingNum/xnum)-ynum) then
  217. cur_line = cur_line + 1;
  218. end
  219. else
  220. cur_y = cur_y + 1;
  221. end
  222. elseif keypress==VK_LEFT then
  223. if cur_x > 0 then
  224. cur_x=cur_x-1;
  225. else
  226. cur_x=xnum-1;
  227. end
  228. elseif keypress==VK_RIGHT then
  229. if cur_x ==xnum-1 then
  230. cur_x=0;
  231. else
  232. cur_x=cur_x+1;
  233. end
  234. elseif keypress==888 and cur_line>0 then
  235. cur_line=cur_line-1
  236. elseif keypress==999 and cur_line<(math.modf(CC.MyThingNum/xnum)-ynum) then
  237. cur_line=cur_line+1
  238. elseif keypress>999999 then
  239. local k,mx,my
  240. k=math.modf(keypress/1000000)
  241. keypress=math.fmod(keypress,1000000)
  242. mx=math.modf(keypress/1000)
  243. my=math.fmod(keypress,1000)
  244. if mx>dx and my>dy and mx<CC.ScreenW-dx and my<CC.ScreenH-dy then
  245. cur_x=math.modf((mx-dx-CC.ThingGapOut/2)/(CC.ThingPicWidth+CC.ThingGapIn))
  246. cur_y=math.modf((my-y3_1-CC.ThingGapOut/2)/(CC.ThingPicHeight+CC.ThingGapIn))
  247. if k==2 then
  248. break
  249. end
  250. end
  251. end
  252. end
  253. Cls();
  254. return cur_thing;
  255. end
复制代码

本帖子中包含更多资源

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

x
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-3-29 11:28 | 显示全部楼层
好东西啊
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-3-29 21:53 | 显示全部楼层
支持教学贴
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-3-30 19:26 | 显示全部楼层
弱弱的说一句原函数是什么?顺便问下说好的出宫采买呢?

点评

啥时候说好的,出宫采买又是啥= =...原函数是SelectThing  发表于 2013-3-30 21:55
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-3-31 03:30 | 显示全部楼层
上那找加成武功数据啊,比如说加了多少。。

点评

CC.ExtraOffense这个表在哪啊,貌似不在Skript文件夹里。。  发表于 2013-3-31 05:47
在CC.ExtraOffense这个表里面  发表于 2013-3-31 03:53
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-5 22:53 | 显示全部楼层
是替换一个  还是全部替换啊

点评

就替换那个SelectThing函数就可以  发表于 2013-4-30 21:09
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-4-30 15:51 | 显示全部楼层
二宫老大,请问CC.ExtraOffense这个表在哪里面?似乎要用什么特别工具?

点评

就在LDCR里面啊,不用特别工具  发表于 2013-4-30 21:10
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-5-1 16:04 | 显示全部楼层
找到了,多谢二宫大
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-7-12 15:26 | 显示全部楼层
本帖最后由 dboyvd 于 2013-7-12 15:28 编辑

弄错了,编辑掉
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-7-12 22:24 | 显示全部楼层
想請問這是要放在LDCR的哪裡?

点评

找到SelectThing函数然后整个替换,嫌麻烦的话直接复制到LDCR最下面也可以  发表于 2013-7-12 22:27
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-7-12 22:30 | 显示全部楼层
搜尋SelectThing
會看到如下:function SelectThing(thing,thingnum).ThingGapIn))
cur_y=math.modf

((my-y3_1-CC.ThingGapOut/2)/(CC.ThingPicHeight+CC.ThingGapIn))
if k==2 then
break
end
end
end
end
Cls();
return

cur_thing;
end
   

  local xnum=CC.MenuThingXnum;
  local ynum=CC.MenuThingYnum;

        local

w=CC.ThingPicWidth*xnum+(xnum-1)*CC.ThingGapIn+2*CC.ThingGapOut;  --总体宽度
        local

h=CC.ThingPicHeight*ynum+(ynum-1)*CC.ThingGapIn+2*CC.ThingGapOut; --物品栏高度

        local dx=

(CC.ScreenW-w)/2;
        local dy=(CC.ScreenH-h-2*(CC.ThingFontSize+2*CC.MenuBorderPixel+5))/2-50;


  local

y1_1,y1_2,y2_1,y2_2,y3_1,y3_2;                  --名称,说明和图片的Y坐标

  local cur_line=0;
  local cur_x=0;
  local

cur_y=0;
  local cur_thing=-1;

        while true do
          Cls();
                y1_1=dy;
   

y1_2=y1_1+CC.ThingFontSize+2*CC.MenuBorderPixel;
    DrawBox(dx,y1_1,dx+w,y1_2,C_WHITE);
               

y2_1=y1_2+5
                y2_2=y2_1+CC.ThingFontSize+2*CC.MenuBorderPixel
    DrawBox

(dx,y2_1,dx+w,y2_2,C_WHITE);
    y3_1=y2_2+5;
    y3_2=y3_1+h;
                DrawBox

(dx,y3_1,dx+w,y3_2,C_WHITE);

    for y=0,ynum-1 do
      for x=0,xnum-1 do
              local

id=y*xnum+x+xnum*cur_line         --当前待选择物品
                                local boxcolor;
       

      if x==cur_x and y==cur_y then
                            boxcolor=C_WHITE;
                if thing[id]>=0

then
                  cur_thing=thing[id];
                  local str=JY.Thing[thing[id]]["名称"];
                  if JY.Thing

[thing[id]]["类型"]==1 or JY.Thing[thing[id]]["类型"]==2 then
                    if JY.Thing[thing[id]]["使用人"] >=0 then
       

                    str=str .. "(" .. JY.Person[JY.Thing[thing[id]]["使用人"]]["姓名"] .. ")";
                    end
                      

  if i == 24 then
                          Cls()
                          NewDrawString(-1, -1, ZJTF[7] .. TFSSJ[7], C_GOLD, 25 + i)
       

                  ShowScreen()
                          lib.Delay(500)
                        else
                          lib.Delay(1)
       

                end
                      end
                      for j = 0, WAR.PersonNum - 1 do
                        WAR.Person

[j].Time = WAR.Person[j].Time - 10
                        if 995 < WAR.Person[j].Time then
                         

WAR.Person[j].Time = 995
                        end
                      end
                      WAR.Person

[WAR.CurID].Time = 1005
                      JY.Person[610]["体力"] = JY.Person[610]["体力"] - 10
                      if JLSD

(45, 50, 0) then
                        WAR.HTSS = 0        
                      else
                        WAR.HTSS = 1
                      

end
                    end






是從哪裡替換?

点评

整个函数替换...或者你还是直接把顶楼的部分直接黏贴到LDCR最底部好了..= =  发表于 2013-7-12 22:32
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-7-12 22:36 | 显示全部楼层
我剛才整串替換,遊戲就崩潰了

点评

把顶楼的内容直接复制到LDCR最底端,原来的函数不要碰,如果还跳出那就是版本不兼容了  发表于 2013-7-13 14:47
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。
发表于 2013-7-13 14:16 | 显示全部楼层
。。。果断崩溃

点评

见楼上点评  发表于 2013-7-13 14:48
【武侠.中国】铁血丹心论坛(大武侠):致力于推广和发展武侠文化,让我们一起努力,做全球最大的武侠社区。
可能是目前为止最好的金庸群侠传MOD游戏交流论坛,各种经典武侠游戏等你来玩,各种开源制作工具等你来实现你的游戏开发之梦。

本版积分规则

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

GMT+8, 2024-12-23 01:21

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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