local systrannpcmetamo = 106152 --寄售Npc形象
local systrannpcmap = 60005 --寄售Npc所在地图
local systrannpcposx = 42 --寄售Npc x坐标
local systrannpcposy = 21 --寄售Npc y坐标
local systrannpcdir = 6 --寄售Npc方向
local systrannpcname = "矿箱寄售商人" --寄售Npc名字
local maxgold = 100000000 --服务器最大金币数量
local filetree = "./lua/luatxt/caiji/systran1.txt" --文件路径
local inta = { --可寄售的物品列表
--{物品名,物品id,基准收购价,收购数量上限,是否启动自动调价,是否允许NPC无库存销售,是否允许NPC满库存收购,单次售购数量}
{"装满『铜条』的盒子",39557,40000,100,1,0,0,1},
{"装满『铁条』的盒子",39558,45000,100,1,0,0,1},
{"装满『银条』的盒子",39559,55000,100,1,0,0,1},
{"装满『纯银条』的盒子",39561,80000,100,1,0,0,1},
{"装满『铝条』的盒子",39560,90000,100,1,0,0,1},
{"装满『金条』的盒子",39562,90000,100,1,0,0,1},
{"装满『白金条』的盒子",39563,120000,100,1,0,0,1},
{"装满『幻之钢条』的盒子",39564,256000,100,1,0,0,1},
{"装满『幻之银条』的盒子",39565,288000,100,1,0,0,1},
{"装满『达马斯矿条』的盒子",39570,288000,100,1,0,0,1},
{"装满『勒格耐席姆条』盒子",39566,800000,100,1,0,0,1},
{"装满『奥利哈钢条』的盒子",39567,1040000,100,1,0,0,1},
{"装满『喜马拉斯条』的盒子",39568,800000,100,1,0,0,1},
}
----------------------------------
Global_Reg.RegInit("systranvalue251A");--注册创建NPC事件
function systranvalue251A()
systranvalue251B();
return 0;
end
function systranvalue251B(npc)
if npc == nil or npc < 0 then
npc = NL.CreateNpc(nil,"systranvalue251C")
end
Char.SetData(npc,%对象_形象%,systrannpcmetamo)
Char.SetData(npc,%对象_原形%,systrannpcmetamo)
Char.SetData(npc,%对象_地图%,systrannpcmap)
Char.SetData(npc,%对象_X%,systrannpcposx)
Char.SetData(npc,%对象_Y%,systrannpcposy)
Char.SetData(npc,%对象_方向%,systrannpcdir)
Char.SetData(npc,%对象_原名%,systrannpcname)
NLG.UpChar(npc)
LuaNpcIndex["systranvalue251"]=npc;--GA无需填写,GP需要填写
InstallNpc("systranvalue251",npc);--GA无需填写,GP需要填写(注意:旧版GP迁移到新版本InstallNpc会报错,函数名可能不同,存放在lua\include\Global.lua内)
Char.SetTalkedEvent(nil, "systranvalue171",npc)
Char.SetWindowTalkedEvent(nil,"systranvalue191",npc)
return true
end
function systranvalue251C(index)
return true;
end
function systranvalue1(player,gold)
--print("\nLuaState %x %X systran1 1")
local systranvalue2 = Char.GetData(player,%对象_金币%)
local systranvalue3 = systranvalue2 + gold
if systranvalue3 > maxgold then
systranvalue3 = maxgold
elseif systranvalue3 < 0 then
systranvalue3 = 0
end
Char.SetData(player,%对象_金币%,systranvalue3)
if gold > 0 then
NLG.SystemMessage(player,"得到了 "..gold.." 金币。")
else
NLG.SystemMessage(player,"失去了 "..(-gold).." 金币。")
end
AddGoldLog(player,"systran1 可堆叠道具寄售 收入"..gold.."魔币")
NLG.UpChar(player)
--print("\nLuaState %x %X systran1 2")
end
function systranvalue4(itemid)
--print("\nLuaState %x %X systran1 3")
local systranvalue5 = io.open(filetree,"r")
local systranvalue6 = {}
local systranvalue7 = 1
if systranvalue5 ~= nil then
for line in systranvalue5:lines() do
systranvalue6[systranvalue7] = splitplus(line,",")
systranvalue7 = systranvalue7 + 1
end
systranvalue5:close()
end
local systranvalue8 = 0
for k,v in pairs(systranvalue6) do
if tonumber(v[1]) == tonumber(itemid) then
systranvalue8 = tonumber(v[2])
break
end
end
--print("\nLuaState %x %X systran1 4")
return systranvalue8
end
function systranvalue9(itemid,value)
--print("\nLuaState %x %X systran1 5")
local systranvalue5 = io.open(filetree,"r")
local systranvalue6 = {}
local systranvalue7 = 1
if systranvalue5 ~= nil then
for line in systranvalue5:lines() do
systranvalue6[systranvalue7] = splitplus(line,",")
systranvalue7 = systranvalue7 + 1
end
systranvalue5:close()
end
local systranvalue8 = -1
for k,v in pairs(systranvalue6) do
if tonumber(v[1]) == tonumber(itemid) then
systranvalue6[k][2] = value
systranvalue8 = value
break
end
end
if systranvalue8 == -1 then
local systranvalue10 = io.open(filetree,"a")
local systranvalue11 = itemid..","..value.."\n"
systranvalue10:write(systranvalue11)
systranvalue10:close()
--print("\nLuaState %x %X systran1 6")
return value
else
local systranvalue10 = io.open(filetree,"w")
for k,v in pairs(systranvalue6) do
local systranvalue11 = v[1]..","..v[2].."\n"
systranvalue10:write(systranvalue11)
end
systranvalue10:close()
--print("\nLuaState %x %X systran1 6")
return systranvalue8
end
end
function systranvalue12(player,value)
--print("\nLuaState %x %X systran1 7")
local systranvalue13 = Char.GetData(player,%对象_金币%) + value
if systranvalue13 >= 0 and systranvalue13 <= maxgold then
--print("\nLuaState %x %X systran1 8")
return systranvalue13
else
--print("\nLuaState %x %X systran1 8")
return -1
end
end
function systranvalue15(nownum,maxnum)
--print("\nLuaState %x %X systran1 9")
local systranvalue14 = (nownum/maxnum)*100
if systranvalue14 >= 50 then
return 1+((50-systranvalue14)/50)*0.1
else
return 1+((50-systranvalue14)/50)*0.2
end
--print("\nLuaState %x %X systran1 10")
end
function systranvalue16(nownum,maxnum)
--print("\nLuaState %x %X systran1 11")
local systranvalue14 = (nownum/maxnum)*100
if systranvalue14 >= 50 then
return 1+((50-systranvalue14)/50)*0.2
else
return 1+((50-systranvalue14)/50)*0.1
end
--print("\nLuaState %x %X systran1 12")
end
function systranvalue171(npc,player)
if NLG.CanTalk(npc,player) == false then
return
end
local systranvalue18 = "2\n这些是从玩家手中采购到的矿产,便宜卖了~\n"
for i = 1,6 do
if type(inta[i]) == "table" then
systranvalue18 = systranvalue18.."\n"..i..". "..inta[i][1].."("..systranvalue4(inta[i][2]).."/"..inta[i][4]..")"
else
systranvalue18 = systranvalue18.."\n"..i..". 无"
end
end
NLG.ShowWindowTalked(player,2,34,1000,systranvalue18,npc)
end
function systranvalue191(npc,player,Seqno,Select,Data)
if NLG.CanTalk(npc,player) == false then
return
end
if Select ~= 2 then
if Seqno < 1000 then
local systranvalue20 = Seqno
if type(inta[systranvalue20]) == "table" then
if tonumber(Data) ~= nil then
local systranvalue21 = systranvalue4(inta[systranvalue20][2])
local systranvalue22
local systranvalue23
if inta[systranvalue20][5] == 1 then
systranvalue22 = math.floor(systranvalue15(systranvalue21,inta[systranvalue20][4])*inta[systranvalue20][3])
systranvalue23 = math.floor(systranvalue16(systranvalue21,inta[systranvalue20][4])*inta[systranvalue20][3])
else
systranvalue22 = inta[systranvalue20][3]
systranvalue23 = inta[systranvalue20][3]
end
if tonumber(Data) == 1 then
if systranvalue12(player,systranvalue23) >= 0 then
if Char.ItemNum(player,inta[systranvalue20][2]) >= inta[systranvalue20][8] then
if systranvalue21 < inta[systranvalue20][4] then
systranvalue9(inta[systranvalue20][2],systranvalue21+1)
elseif inta[systranvalue20][7] ~= 1 then
NLG.SystemMessage(player,"此道具不支持满库存收购。")
return
end
Char.DelItem(player,inta[systranvalue20][2],inta[systranvalue20][8])
systranvalue1(player,systranvalue23)
else
NLG.SystemMessage(player,"你没有可出售的道具。")
end
else
NLG.SystemMessage(player,"你的钱太多了。")
end
elseif tonumber(Data) == 2 then
if systranvalue12(player,-systranvalue22) >= 0 then
if Char.FindEmptyItemBox(player) > 0 then
if systranvalue21 > 0 then
systranvalue9(inta[systranvalue20][2],systranvalue21-1)
elseif inta[systranvalue20][6] ~= 1 then
NLG.SystemMessage(player,"此道具不支持无库存出售。")
return
end
systranvalue1(player,-systranvalue22)
Char.GiveItem(player,inta[systranvalue20][2],inta[systranvalue20][8])
else
NLG.SystemMessage(player,"你的东西太多了。")
end
else
NLG.SystemMessage(player,"你的钱不够。")
end
end
end
else
NLG.SystemMessage(player,"请您重新选择正确的内容。")
end
else
if tonumber(Data) == -2 then
local systranvalue18 = "2\n这些是从玩家手中采购到的矿产,便宜卖了~\n"
local systranvalue20 = math.floor(Seqno/1000)
local systranvalue24 = 50
if Select == 32 then
systranvalue20 = systranvalue20+1
if systranvalue20*6 >= #inta then
systranvalue24 = 18
end
elseif Select == 16 then
systranvalue20 = systranvalue20-1
if systranvalue20 == 1 then
systranvalue24 = 34
end
end
for i = 1,6 do
if type(inta[(i+(systranvalue20-1)*6)]) == "table" then
systranvalue18 = systranvalue18.."\n"..(i+(systranvalue20-1)*6)..". "..inta[(i+(systranvalue20-1)*6)][1].."("..systranvalue4(inta[(i+(systranvalue20-1)*6)][2]).."/"..inta[(i+(systranvalue20-1)*6)][4]..")"
else
systranvalue18 = systranvalue18.."\n"..(i+(systranvalue20-1)*6)..". 无"
end
end
NLG.ShowWindowTalked(player,2,systranvalue24,systranvalue20*1000,systranvalue18,npc)
else
if tonumber(Data) ~= nil and tonumber(Data) > 0 then
local systranvalue20 = (math.floor(Seqno/1000)-1)*6 + tonumber(Data)
if type(inta[systranvalue20]) == "table" then
local systranvalue21 = systranvalue4(inta[systranvalue20][2])
local systranvalue22
local systranvalue23
if inta[systranvalue20][5] == 1 then
systranvalue22 = math.floor(systranvalue15(systranvalue21,inta[systranvalue20][4])*inta[systranvalue20][3])
systranvalue23 = math.floor(systranvalue16(systranvalue21,inta[systranvalue20][4])*inta[systranvalue20][3])
else
systranvalue22 = inta[systranvalue20][3]
systranvalue23 = inta[systranvalue20][3]
end
local systranvalue18 = "6\n您选择了:"..inta[systranvalue20][1].."(每份"..inta[systranvalue20][8].."个) \n当前库存:"..systranvalue21.."份(上限"..inta[systranvalue20][4].."份)\n系统收购价:"..systranvalue23.." 系统售价:"..systranvalue22.."\n"
if inta[systranvalue20][6] == 1 then
systranvalue18 = systranvalue18.."本物品无库存也可以购买,"
else
systranvalue18 = systranvalue18.."本物品只在有库存时销售,"
end
if inta[systranvalue20][7] == 1 then
systranvalue18 = systranvalue18.."满库存也继续收购。\n"
else
systranvalue18 = systranvalue18.."满库存时停止收购。\n"
end
if inta[systranvalue20][5] == 1 then
systranvalue18 = systranvalue18.."*价格随存货数量自动调整。"
else
systranvalue18 = systranvalue18.."*价格固定不变。"
end
systranvalue18 = systranvalue18.."\n\n我确认将其出售给系统\n我确认购买此物品"
NLG.ShowWindowTalked(player,2,2,systranvalue20,systranvalue18,npc)
else
NLG.SystemMessage(player,"请您重新选择正确的内容。")
end
end
end
end
end
end
|
|