---本模块存放对JYMain.lua 的修改和扩充。 --尽量把新增加模块放在这里,少修改原始JYMain.Lua文件。 --这里一般包括以下几个部分 --1. SetModify函数。 该函数在游戏开始时调用,可以在此修改原有的数据,以及重定义原有的函数,以实现对原有函数的修改、 -- 这样就可以基本不动原始的函数 --2. 原有函数的重载函数。 SetModify中重载的函数放在此处。尽量不修改JYMain.lua文件,对它的修改采用重定义函数的形式。 --3. 新的物品使用函数。 --4. 新的场景事件函数。 --对jymain的修改,以及增加新的物品函数和场景事件函数。 --注意这里可以定义全程变量。 function SetModify() --这是一个定义函数的例子。这里重新修改主菜单中的系统菜单,增加在游戏运行中控制音效的功能。 --原来只能在jyconst.lua中通过参数在运行前控制,不能做到实时控制。 Menu_System_old=Menu_System; --备份原始函数,如果新的函数需要,还可以调用原始函数。 Menu_System=Menu_System_new; --在此定义特殊物品。没有定义的均调用缺省物品函数 JY.ThingUseFunction[182]=Show_Position; --罗盘函数 JY.ThingUseFunction[0]=newThing_0; --改变原来康贝特的功能为醉生梦死酒忘记武功。 JY.ThingUseFunction[2]=newThing_2; --在此可以定义使用新事件函数的场景 JY.SceneNewEventFunction[1]=newSceneEvent_1; --新的河洛客栈事件处理函数 UseThing_Type3=UseThing_Type3_new; --自改,改变战斗物品系统 SelectThing=SelectThing_new; --强化菜单 Menu_Thing_old=Menu_Thing; --备份 Menu_Thing=Menu_Thing_new; --仿苍龙菜单 end --新的系统子菜单,增加控制音乐和音效 function Menu_System_new() local menu={ {"读取进度",Menu_ReadRecord,1}, {"保存进度",Menu_SaveRecord,1}, {"关闭音乐",Menu_SetMusic,1}, {"关闭音效",Menu_SetSound,1}, {"离开游戏",Menu_Exit,1}, }; if JY.EnableMusic==0 then menu[3][1]="打开音乐"; end if JY.EnableSound==0 then menu[4][1]="打开音效"; end local r=ShowMenu(menu,5,0,80,10,0,0,1,1,24,C_ORANGE, C_WHITE); if r == 0 then Cls(80,10,CC.ScreenW,CC.ScreenH); return 0; elseif r<0 then --要退出全部菜单, Cls(); return 1; end end function Menu_SetMusic() if JY.EnableMusic==0 then JY.EnableMusic=1; PlayMIDI(JY.CurrentMIDI); else JY.EnableMusic=0; lib.PlayMIDI(""); end return 1; end function Menu_SetSound() if JY.EnableSound==0 then JY.EnableSound=1; else JY.EnableSound=0; end return 1; end ---------------------------------------------------------------- ---------------------------物品使用函数-------------------------- --罗盘函数,显示主地图主角位置 function Show_Position() if JY.Status ~=GAME_MMAP then return 0; end DrawStrBoxWaitKey(string.format("当前位置(%d,%d)",JY.Base["人X"],JY.Base["人Y"]),C_ORANGE,24); return 1; end --醉生梦死酒。喝后可以忘掉一种武功 function newThing_0(id) if JY.Status ==GAME_WMAP then return 0; end Cls(); if DrawStrBoxYesNo(-1,-1,"喝后会忘记武功,但损害生命,是否继续(Y/N)?",C_WHITE,24,1) == false then return 0; end Cls(); DrawStrBox(100,10,string.format("谁要服用%s?",JY.Thing[id]["名称"]),C_WHITE,24,1); local r=SelectTeamMenu(100,45); if r<=0 then return 0; end local pid=JY.Base["队伍" .. r]; if JY.Person[pid]["生命最大值"]<=50 then return 0; end Cls(); local numwugong=0; local menu={}; for i=1,10 do local tmp=JY.Person[pid]["武功" .. i]; if tmp>0 then menu[i]={JY.Wugong[tmp]["名称"],nil,1}; numwugong=numwugong+1; end end if numwugong==0 then return 0; end DrawStrBox(100,10,string.format("请选择要忘记的武功"),C_WHITE,24,1); r=ShowMenu(menu,numwugong,0,100,45,0,0,1,1,24,C_ORANGE,C_WHITE); if r<=0 then return 0; else local s=string.format("%s 忘记武功 %s",JY.Person[pid]["姓名"],JY.Wugong[JY.Person[pid]["武功" .. r]]["名称"]); DrawStrBoxWaitKey(s,C_WHITE,24); for i=r+1,10 do JY.Person[pid]["武功" .. i-1]=JY.Person[pid]["武功" .. i]; JY.Person[pid]["武功等级" .. i-1]=JY.Person[pid]["武功等级" .. i]; end local v,str=AddPersonAttrib(pid,"生命最大值",-50); DrawStrBoxWaitKey(str,C_WHITE,24); AddPersonAttrib(pid,"生命",0); instruct_32(id,-1); end Cls(); return 1; end --还魂液,战斗时可以使一个死亡的队友复活,各项机能恢复50% function newThing_2(thingid) if JY.Status ~=GAME_WMAP then return 0; end local menu={}; local menunum=0; for i=0,WAR.PersonNum-1 do menu[i+1]={JY.Person[WAR.Person[i]["人物编号"]]["姓名"],nil,0} if WAR.Person[i]["我方"]==true and WAR.Person[i]["死亡"]==true then menu[i+1][3]=1; menunum=menunum+1; end end if menunum==0 then return 0; end Cls(); DrawStrBox(100,10,string.format("请选择要复活的队友"),C_WHITE,24); local r=ShowMenu(menu,WAR.PersonNum,0,100,45,0,0,1,1,24,C_ORANGE,C_WHITE); Cls(); if r>0 then r=r-1; --菜单返回值是从1开始编号的。 WAR.Person[r]["死亡"]=false; local pid=WAR.Person[r]["人物编号"]; JY.Person[pid]["生命"]=JY.Person[pid]["生命最大值"]; SetRevivePosition(r); instruct_32(thingid,-1); WarSetPerson(); --重新设定战斗位置 return 1; else return 0; end end --设置复活队友的位置为距离当前使用物品的战斗人物最近的空位 function SetRevivePosition(id) local minDest=math.huge; local x,y; War_CalMoveStep(WAR.CurID,100,0); --计算移动步数 假设最大100步 for i=0,CC.WarWidth-1 do for j=0,CC.WarHeight-1 do local dest=Byte.get16(WAR.Map3,(j*CC.WarWidth+i)*2); if dest>0 and dest <128 then if minDest>dest then minDest=dest; x=i; y=j; elseif minDest==dest then if Rnd(2)==0 then x=i; y=j; end end end end end if minDest0 then if instruct_31(ShopThing[r][2])==false then TalkEx("非常抱歉,你身上的钱似乎不够.",111,0); else instruct_32(CC.MoneyID,-ShopThing[r][2]); --银子减少 instruct_32(ShopThing[r][1],1); --物品增加 TalkEx("欢迎下次光临!",111,0); end end end function newSceneEvent_1_Task() TalkEx("欢迎光临佣兵行会,您可以选择任务",111,0); local menu={ {"去沙漠消灭蜘蛛怪",nil,1,61,50}, --最后两个数据为战斗编号和赢后得到的钱数 {"去南海杀大鳄鱼",nil,1,89,100}, {"去长白山打雪怪",nil,1,6,200}, }; local r=ShowMenu(menu,3,0,200,200,0,0,1,1,24,C_ORANGE, C_WHITE); if r>0 then TalkEx("祝你好运!",111,0); if WarMain(menu[r][4],1)==true then instruct_13(); DrawStrBoxWaitKey(string.format("您的战斗胜利,获得%d兩银子!",menu[r][5]),C_WHITE,24); instruct_32(CC.MoneyID,menu[r][5]); --银子减少 else DrawStrBoxWaitKey("战斗失败,抱歉没有银子可挣!",C_WHITE,24); end end Cls(); end --去其他客栈 function newSceneEvent_1_Go() TalkEx("您可以选择要去的客栈。",111,0); local Address={ {3,21,50}, --依次为场景id,出现在场景的XY坐标。注意这个坐标必须是空地。 {40,26,43}, {60,26,42}, {61,23,49}, }; local menu={}; for i=1,4 do menu[i]={ JY.Scene[Address[i][1]]["名称"],nil,1}; end local r=ShowMenu(menu,4,0,200,200,0,0,1,1,24,C_ORANGE, C_WHITE); if r>0 then lib.ShowSlow(50,1); ChangeSMap(Address[r][1],Address[r][2],Address[r][3],0); --设置新场景 --设置新的主地图坐标,以便从新场景正确出来。 ChangeMMap(JY.Scene[JY.SubScene]["外景入口X1"],JY.Scene[JY.SubScene]["外景入口Y1"]+1,0); lib.ShowSlow(50,0); end; Cls(); return 1; end --药品物品 function UseThing_Type3_new(id) --药品物品使用 local usepersonid=-1; if JY.Status==GAME_MMAP or JY.Status==GAME_SMAP then Cls(80,10,CC.ScreenW,CC.ScreenH); DrawStrBox(80,10,string.format("谁要使用%s?",JY.Thing[id]["名称"]),C_WHITE,24); local r=SelectTeamMenu(80,45); if r>0 then usepersonid=JY.Base["队伍" ..r] end elseif JY.Status==GAME_WMAP then ---战斗场景使用药品 local pid=WAR.Person[WAR.CurID]["人物编号"]; local step=2; War_CalMoveStep(WAR.CurID,step,1); local x1,y1=War_SelectMove(); if x1 ~=nil then local offset=(y1*CC.WarWidth+x1)*2; Byte.set16(WAR.Map4,offset,1); local emeny=Byte.get16(WAR.Map2,offset); if emeny<0 then --没人 Cls(80,10,CC.ScreenW,CC.ScreenH); ShowScreen(); return 0; elseif emeny>=0 then --有人 if WAR.Person[WAR.CurID]["我方"] == WAR.Person[emeny]["我方"] then usepersonid=WAR.Person[emeny]["人物编号"]; end end else Cls(80,10,CC.ScreenW,CC.ScreenH); ShowScreen(); return 0; end end if usepersonid>=0 then if UseThingEffect(id,usepersonid)==1 then --使用有效果 instruct_32(id,-1); --物品数量减少 WaitKey(); else Cls(80,10,CC.ScreenW,CC.ScreenH); ShowScreen(); return 0; end end Cls(80,10,CC.ScreenW,CC.ScreenH); ShowScreen(); return 1; end --强化物品菜单,仿苍龙逐日 function Menu_Thing_new() --物品菜单 local menu={ {"全部物品",Menu_Thing_old,1}, {"剧情物品",Menu_type0,1}, {"神兵宝甲",Menu_type1,1}, {"武功秘笈",Menu_type2,1}, {"灵丹妙药",Menu_type3,1}, {"伤人暗器",Menu_type4,1} }; local r=ShowMenu(menu,6,0,80,10,0,0,1,1,24,C_ORANGE, C_WHITE); if r == 0 then Cls(80,10,CC.ScreenW,CC.ScreenH); return 0; elseif r<0 then --要退出全部菜单, Cls(); return 1; end end function Menu_type0() local thing={}; local thingnum={}; local num=0; for i = 0,CC.MyThingNum-1 do thing[i]=-1; thingnum[i]=0; end for i = 0,CC.MyThingNum-1 do local id=JY.Base["物品" .. i+1]; if id>=0 then if JY.Thing[id]["类型"]==0 then thing[num]=id; thingnum[num]=JY.Base["物品数量" ..i+1]; num=num+1; end end end local rr=SelectThing(thing,thingnum); if rr>=0 then if UseThing(rr)==1 then --使用物品 return 1; else return 0; end else return 0; end end function Menu_type1() local thing={}; local thingnum={}; local num=0; for i = 0,CC.MyThingNum-1 do thing[i]=-1; thingnum[i]=0; end for i = 0,CC.MyThingNum-1 do local id=JY.Base["物品" .. i+1]; if id>=0 then if JY.Thing[id]["类型"]==1 then thing[num]=id; thingnum[num]=JY.Base["物品数量" ..i+1]; num=num+1; end end end local rr=SelectThing(thing,thingnum); if rr>=0 then if UseThing(rr)==1 then --使用物品 return 1; else return 0; end else return 0; end end function Menu_type2() local thing={}; local thingnum={}; local num=0; for i = 0,CC.MyThingNum-1 do thing[i]=-1; thingnum[i]=0; end for i = 0,CC.MyThingNum-1 do local id=JY.Base["物品" .. i+1]; if id>=0 then if JY.Thing[id]["类型"]==2 then thing[num]=id; thingnum[num]=JY.Base["物品数量" ..i+1]; num=num+1; end end end local rr=SelectThing(thing,thingnum); if rr>=0 then if UseThing(rr)==1 then --使用物品 return 1; else return 0; end else return 0; end end function Menu_type3() local thing={}; local thingnum={}; local num=0; for i = 0,CC.MyThingNum-1 do thing[i]=-1; thingnum[i]=0; end for i = 0,CC.MyThingNum-1 do local id=JY.Base["物品" .. i+1]; if id>=0 then if JY.Thing[id]["类型"]==3 then thing[num]=id; thingnum[num]=JY.Base["物品数量" ..i+1]; num=num+1; end end end local rr=SelectThing(thing,thingnum); if rr>=0 then if UseThing(rr)==1 then --使用物品 return 1; else return 0; end else return 0; end end function Menu_type4() local thing={}; local thingnum={}; local num=0; for i = 0,CC.MyThingNum-1 do thing[i]=-1; thingnum[i]=0; end for i = 0,CC.MyThingNum-1 do local id=JY.Base["物品" .. i+1]; if id>=0 then if JY.Thing[id]["类型"]==4 then thing[num]=id; thingnum[num]=JY.Base["物品数量" ..i+1]; num=num+1; end end end local rr=SelectThing(thing,thingnum); if rr>=0 then if UseThing(rr)==1 then --使用物品 return 1; else return 0; end else return 0; end end --显示物品菜单 --返回选择的物品编号, -1表示没有选择 function SelectThing_new(thing,thingnum) --显示物品供选择 local xnum,ynum=8,5; local dx,dy=90,20; local w,h=60,60; local cur_line=0; local cur_x=0; local cur_y=0; local cur_thing=-1; while true do Cls(80,10,CC.ScreenW,CC.ScreenH); for y=0,ynum-1 do for x=0,xnum-1 do local id=y*xnum+x+xnum*cur_line ; --当前待选择物品 if x==cur_x and y==cur_y then lib.Background(dx-10,dy,dx+(xnum)*w-10,dy+30,128); lib.DrawRect(dx-10,dy,dx+(xnum)*w-10,dy+30,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 end str=str .. " X " .. tostring(thingnum[id]) .. ": " .. JY.Thing[thing[id]]["物品说明"]; DrawString(dx-10+5,dy+5,str,C_GOLD,16); local str2=""; str2=str2 .. get_thing_detail1(cur_thing); DrawString(dx,dy+(ynum)*h+50,str2,C_GOLD,16); local str3=""; str3=str3 .. get_thing_detail2(cur_thing); DrawString(dx,dy+(ynum)*h+70,str3,C_GOLD,16); else cur_thing=-1; end lib.Background(dx+x*w-10,dy+y*h+30,dx+(x+1)*w-10,dy+(y+1)*h+30,64); lib.DrawRect(dx+x*w-1,dy+y*h+40-1,dx+(x)*w+40,dy+(y)*h+80,C_WHITE); else lib.Background(dx+x*w-10,dy+y*h+30,dx+(x+1)*w-10,dy+(y+1)*h+30,192); end lib.DrawRect(dx+x*w-10,dy+y*h+30,dx+(x+1)*w-10,dy+(y+1)*h+30,C_WHITE); if thing[id]>=0 then lib.PicLoadCache(2,thing[id]*2,dx+x*w,dy+y*h+40,1,1); end end end lib.Background(dx-10,dy+(ynum)*h+40,dx+(xnum)*w-10,dy+(ynum)*h+130,192); lib.DrawRect(dx-10,dy+(ynum)*h+40,dx+(xnum)*w-10,dy+(ynum)*h+130,C_WHITE); ShowScreen(); local keypress=WaitKey(); lib.Delay(100); if keypress==VK_ESCAPE then cur_thing=-1; break; elseif keypress==VK_RETURN or keypress==VK_SPACE then break; elseif keypress==VK_UP then if cur_y == 0 then if cur_line > 0 then cur_line = cur_line - 1; end else cur_y = cur_y - 1; end elseif keypress==VK_DOWN then if cur_y ==ynum-1 then if cur_line < (math.modf(200/xnum)-ynum) then cur_line = cur_line + 1; end else cur_y = cur_y + 1; end elseif keypress==VK_LEFT then if cur_x > 0 then cur_x=cur_x-1; else cur_x=xnum-1; end elseif keypress==VK_RIGHT then if cur_x ==xnum-1 then cur_x=0; else cur_x=cur_x+1; end end end Cls(80,10,CC.ScreenW,CC.ScreenH); ShowScreen(); return cur_thing; end function get_thing_detail1(thingid) local str=""; if JY.Thing[thingid]["类型"]==0 then str="剧情物品"; elseif JY.Thing[thingid]["类型"]>0 then str=get_thing_detail_type1(thingid); else return 0; end return str; end function get_thing_detail_type1(thingid) local str=""; if JY.Thing[thingid]["类型"]==1 then if JY.Thing[thingid]["加攻击力"]>0 then str=str .. "攻击 + " .. JY.Thing[thingid]["加攻击力"] .. " "; end if JY.Thing[thingid]["加防御力"]>0 then str=str .. "防御 + " .. JY.Thing[thingid]["加防御力"] .. " "; end if JY.Thing[thingid]["加轻功"]>0 then str=str .. "轻功 + " .. JY.Thing[thingid]["加轻功"] .. " "; end if JY.Thing[thingid]["加攻击带毒"]>0 then str=str .. "带毒 + " .. JY.Thing[thingid]["加攻击带毒"] .. " "; end elseif JY.Thing[thingid]["类型"]==2 then if JY.Thing[thingid]["改变内力性质"]==2 then str=str .. "阴阳调和" .. " "; end if JY.Thing[thingid]["加攻击力"]>0 then str=str .. "攻击 + " .. JY.Thing[thingid]["加攻击力"] .. " "; end if JY.Thing[thingid]["加防御力"]>0 then str=str .. "防御 + " .. JY.Thing[thingid]["加防御力"] .. " "; end if JY.Thing[thingid]["加轻功"]>0 then str=str .. "轻功 + " .. JY.Thing[thingid]["加轻功"] .. " "; end if JY.Thing[thingid]["加攻击带毒"]>0 then str=str .. "带毒 + " .. JY.Thing[thingid]["加攻击带毒"] .. " "; end if JY.Thing[thingid]["加生命最大值"]>0 then str=str .. "最大生命 + " .. JY.Thing[thingid]["加生命最大值"] .. " "; end if JY.Thing[thingid]["加内力最大值"]>0 then str=str .. "最大内力 + " .. JY.Thing[thingid]["加内力最大值"] .. " "; end if JY.Thing[thingid]["加医疗能力"]>0 then str=str .. "医疗 + " .. JY.Thing[thingid]["加医疗能力"] .. " "; end if JY.Thing[thingid]["加用毒能力"]>0 then str=str .. "用毒 + " .. JY.Thing[thingid]["加用毒能力"] .. " "; end if JY.Thing[thingid]["加解毒能力"]>0 then str=str .. "解毒 + " .. JY.Thing[thingid]["加解毒能力"] .. " "; end if JY.Thing[thingid]["加抗毒能力"]>0 then str=str .. "抗毒 + " .. JY.Thing[thingid]["加抗毒能力"] .. " "; end if JY.Thing[thingid]["加拳掌功夫"]>0 then str=str .. "拳掌 + " .. JY.Thing[thingid]["加拳掌功夫"] .. " "; end if JY.Thing[thingid]["加御剑能力"]>0 then str=str .. "御剑 + " .. JY.Thing[thingid]["加御剑能力"] .. " "; end if JY.Thing[thingid]["加耍刀技巧"]>0 then str=str .. "耍刀 + " .. JY.Thing[thingid]["加耍刀技巧"] .. " "; end if JY.Thing[thingid]["加特殊兵器"]>0 then str=str .. "特殊 + " .. JY.Thing[thingid]["加特殊兵器"] .. " "; end if JY.Thing[thingid]["加暗器技巧"]>0 then str=str .. "暗器 + " .. JY.Thing[thingid]["加暗器技巧"] .. " "; end if JY.Thing[thingid]["加武学常识"]>0 then str=str .. "武学常识 + " .. JY.Thing[thingid]["加武学常识"] .. " "; end elseif JY.Thing[thingid]["类型"]==3 then if JY.Thing[thingid]["加生命"]>0 then str=str .. "生命 + " .. JY.Thing[thingid]["加生命"] .. " "; end if JY.Thing[thingid]["加生命最大值"]>0 then str=str .. "最大生命 + " .. JY.Thing[thingid]["加生命最大值"] .. " "; end if JY.Thing[thingid]["加内力"]>0 then str=str .. "内力 + " .. JY.Thing[thingid]["加内力"] .. " "; end if JY.Thing[thingid]["加内力最大值"]>0 then str=str .. "最大内力 + " .. JY.Thing[thingid]["加内力最大值"] .. " "; end if JY.Thing[thingid]["加中毒解毒"]<0 then str=str .. "解毒 + " .. -JY.Thing[thingid]["加中毒解毒"] .. " "; end if JY.Thing[thingid]["加体力"]>0 then str=str .. "体力 + " .. JY.Thing[thingid]["加体力"] .. " "; end if JY.Thing[thingid]["加抗毒能力"]>0 then str=str .. "抗毒 + " .. JY.Thing[thingid]["加抗毒能力"] .. " "; end if JY.Thing[thingid]["加武学常识"]>0 then str=str .. "武学常识 + " .. JY.Thing[thingid]["加武学常识"] .. " "; end elseif JY.Thing[thingid]["类型"]==4 then if JY.Thing[thingid]["加生命"]<0 then str=str .. "杀伤力: " .. -JY.Thing[thingid]["加生命"] .. " "; end if JY.Thing[thingid]["加中毒解毒"]>0 then str=str .. "带毒: " .. JY.Thing[thingid]["加中毒解毒"] .. " "; end else return 0; end return str; end function get_thing_detail2(thingid) local str=""; if JY.Thing[thingid]["需内力"]>0 then str=str .. "内力需求:" .. JY.Thing[thingid]["需内力"] .. " "; end if JY.Thing[thingid]["需攻击力"]>0 then str=str .. "攻击需求:" .. JY.Thing[thingid]["需攻击力"] .. " "; end if JY.Thing[thingid]["需轻功"]>0 then str=str .. "轻功需求:" .. JY.Thing[thingid]["需轻功"] .. " "; end if JY.Thing[thingid]["需用毒能力"]>0 then str=str .. "用毒需求:" .. JY.Thing[thingid]["需用毒能力"] .. " "; end if JY.Thing[thingid]["需医疗能力"]>0 then str=str .. "医疗需求:" .. JY.Thing[thingid]["需医疗能力"] .. " "; end if JY.Thing[thingid]["需解毒能力"]>0 then str=str .. "解毒需求:" .. JY.Thing[thingid]["需解毒能力"] .. " "; end if JY.Thing[thingid]["需拳掌功夫"]>0 then str=str .. "拳掌需求:" .. JY.Thing[thingid]["需拳掌功夫"] .. " "; end if JY.Thing[thingid]["需御剑能力"]>0 then str=str .. "御剑需求:" .. JY.Thing[thingid]["需御剑能力"] .. " "; end if JY.Thing[thingid]["需耍刀技巧"]>0 then str=str .. "耍刀需求:" .. JY.Thing[thingid]["需耍刀技巧"] .. " "; end if JY.Thing[thingid]["需特殊兵器"]>0 then str=str .. "特殊需求:" .. JY.Thing[thingid]["需特殊兵器"] .. " "; end if JY.Thing[thingid]["需暗器技巧"]>0 then str=str .. "暗器需求:" .. JY.Thing[thingid]["需暗器技巧"] .. " "; end if JY.Thing[thingid]["需资质"]>0 then str=str .. "资质需求:" .. JY.Thing[thingid]["需资质"] .. " "; end if JY.Thing[thingid]["需经验"]>0 then str=str .. "经验需求:" .. JY.Thing[thingid]["需经验"] .. " "; end return str; end