代码来源于“易宁”大佬的分享,仅供学习,不要直接复制粘贴。

原帖链接:http://bbs.3dmgame.com/thread-3859071-1-1.html


  1
  2二九三.网上宠宠店(将鸟、兔子、昆虫、鼹鼠放入网店销售箱在线销售)
  3
  4	1.MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/rabbit.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
  5
  6	inst:AddComponent("stackable")
  7	inst.components.stackable.maxsize = 999
  8
  9
 10	2.MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/birds.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
 11
 12	inst:AddComponent("stackable")
 13	inst.components.stackable.maxsize = 999
 14
 15
 16	3.MT管理器打开游戏目录/assets/DLC0002/scripts/prefabs/mole.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
 17
 18	inst:AddComponent("stackable")
 19	inst.components.stackable.maxsize = 999
 20
 21
 22	4.MT管理器打开游戏目录/assets/scripts/prefabs/bugnet.lua文件,在inst:AddComponent("inspectable")的下一行插入以下内容:
 23
 24local function netsell(inst)
 25	inst.AnimState:SetBloomEffectHandle( "shaders/anim.ksh" )
 26	inst:DoTaskInTime(3, function() inst.AnimState:SetBloomEffectHandle( "" ) end )
 27	if inst.components.container:Has("goldnugget", 10) then
 28	   if inst.components.container:Has("bee", 3) then
 29		  local sellnum = math.random(1,3)
 30		  inst.components.container:ConsumeByName("bee", sellnum)
 31		  inst.components.container:ConsumeByName("goldnugget", -sellnum)
 32	   end
 33	   if inst.components.container:Has("killerbee", 3) then 
 34		  local sellnum = math.random(1,3)
 35		  inst.components.container:ConsumeByName("killerbee", sellnum)
 36		  inst.components.container:ConsumeByName("goldnugget", -sellnum*2)
 37	   end
 38	   if inst.components.container:Has("butterfly", 3) then 
 39		  local sellnum = math.random(1,3)
 40		  inst.components.container:ConsumeByName("butterfly", sellnum)
 41		  inst.components.container:ConsumeByName("goldnugget", -sellnum)
 42	   end
 43	   if inst.components.container:Has("fireflies", 3) then 
 44		  local sellnum = math.random(1,3)
 45		  inst.components.container:ConsumeByName("fireflies", sellnum)
 46		  inst.components.container:ConsumeByName("goldnugget", -sellnum*2)
 47	   end
 48	   if inst.components.container:Has("crow", 3) then 
 49		  local sellnum = math.random(1,3)
 50		  inst.components.container:ConsumeByName("crow", sellnum)
 51		  inst.components.container:ConsumeByName("goldnugget", -sellnum*3)
 52	   end
 53	   if inst.components.container:Has("robin", 3) then 
 54		  local sellnum = math.random(1,3)
 55		  inst.components.container:ConsumeByName("robin", sellnum)
 56		  inst.components.container:ConsumeByName("goldnugget", -sellnum*3)
 57	   end
 58	   if inst.components.container:Has("robin_winter", 3) then 
 59		  local sellnum = math.random(1,3)
 60		  inst.components.container:ConsumeByName("robin_winter", sellnum)
 61		  inst.components.container:ConsumeByName("goldnugget", -sellnum*3)
 62	   end
 63	   if inst.components.container:Has("rabbit", 3) then 
 64		  local sellnum = math.random(1,3)
 65		  inst.components.container:ConsumeByName("rabbit", sellnum)
 66		  inst.components.container:ConsumeByName("goldnugget", -sellnum*2)
 67	   end
 68	   if inst.components.container:Has("mole", 3) then 
 69		  local sellnum = math.random(1,3)
 70		  inst.components.container:ConsumeByName("mole", sellnum)
 71		  inst.components.container:ConsumeByName("goldnugget", -sellnum*5)
 72	   end
 73	end
 74end
 75local function OnDeploy (inst, pt)
 76	if GetPlayer().components.inventory:Has("goldnugget", 200) then 
 77	   GetPlayer().components.inventory:ConsumeByName("goldnugget", 200)
 78	   local sellbox = SpawnPrefab("bugnet")
 79	   sellbox.Transform:SetPosition(pt.x, pt.y, pt.z)
 80	   sellbox.AnimState:SetBank("bee_box")
 81	   sellbox.AnimState:SetBuild("bee_box")
 82	   sellbox.AnimState:PlayAnimation("idle")
 83	   sellbox.AnimState:SetMultColour(0/255,255/255,0/255,1)
 84	   sellbox.Transform:SetScale(1.2, 1.2, 1.2)
 85	   sellbox:AddTag("sellbox")
 86	   sellbox.components.container.canbeopened = true
 87	   sellbox:RemoveComponent("weapon")
 88	   sellbox:RemoveComponent("tool")
 89	   sellbox:RemoveComponent("finiteuses")
 90	   sellbox:RemoveComponent("inventoryitem")
 91	   sellbox:RemoveComponent("equippable")
 92	   sellbox:AddTag("fridge")
 93	   MakeLargeBurnable(sellbox)
 94	   inst:Remove()
 95	end
 96end
 97	inst:AddComponent("deployable")
 98	inst.components.deployable.ondeploy = OnDeploy
 99local function onsave(inst, data)
100	if inst:HasTag("sellbox") then
101		data.sellbox = true
102	end
103end
104local function onload(inst, data)
105	if data and data.sellbox then
106	   inst.AnimState:SetBank("bee_box")
107	   inst.AnimState:SetBuild("bee_box")
108	   inst.AnimState:PlayAnimation("idle")
109	   inst.AnimState:SetMultColour(0/255,255/255,0/255,1)
110	   inst.Transform:SetScale(1.2, 1.2, 1.2)
111	   inst:AddTag("sellbox")
112	   inst.components.container.canbeopened = true
113	   inst:RemoveComponent("weapon")
114	   inst:RemoveComponent("tool")
115	   inst:RemoveComponent("finiteuses")
116	   inst:RemoveComponent("inventoryitem")
117	   inst:RemoveComponent("equippable")
118	   inst:AddTag("fridge")
119	   MakeLargeBurnable(inst)
120	end
121end
122local function itemtest(inst, item, slot)
123	if item.prefab == "goldnugget" or item.prefab == "bee" or item.prefab == "killerbee" or item.prefab == "butterfly" or item.prefab == "fireflies" or item.prefab == "crow" or item.prefab == "robin" or item.prefab == "robin_winter" or item.prefab == "rabbit" or item.prefab == "mole" then
124	   return true
125	end
126	return false
127end
128local slotpos = {Vector3(75,150,0)}
129for y = 2, 0, -1 do
130	for x = 0, 4 do
131		table.insert(slotpos, Vector3(75*x-75*2+75, 75*y-75*2+75,0))
132	end
133end
134	inst.OnSave = onsave
135	inst.OnLoad = onload
136	inst:AddComponent("container")
137	inst.components.container:SetNumSlots(#slotpos)
138	inst.components.container.widgetslotpos = slotpos
139	inst.components.container.widgetpos = Vector3(-100,200,0)
140	inst.components.container.side_align_tip = 160
141	inst.components.container.canbeopened = false
142	inst.components.container.itemtestfn = itemtest
143	inst:DoPeriodicTask(30, function() if inst:HasTag("sellbox") then netsell(inst) end end )
144
145	即可用捕虫网种网店销售箱,将花费200个黄金,身上黄金数不足时,不给网店销售箱。左键点网店销售箱会打开格子,在箱子最顶上的格子里放入10个黄金的保证金,并放入小宠物后(几个品种都可以,但一个品种至少3只),即可在线销售。网店销售箱亮灯时,是在联网结算,打开箱子可看到商品库存的减少、黄金数量的上升,可以取出黄金用于消费,但最顶上的格子里必须保留至少10个黄金的保证金。鼹鼠定价5个黄金,鸟定价3个黄金,杀人蜂、萤火虫、兔子定价2个黄金,蜜蜂、蝴蝶定价1个黄金,当某种商品库存不足3只时,该品种将无人购买,请及时检查并补货。千万不要将黄金放在下面的商品格中,而将最顶上的保证金格子空着,这代表所有商品定价0个黄金,小心被哄抢哦。从此经营自己的网上宠宠店,捕捉小宠物在线销售吧。不需要网店销售箱时,烧掉即可,记得取出黄金和商品哦