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

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


  1
  2二九二.野球拳赌场(用火腿短棍种野球拳赌场,与庄家玩剪刀、石头、布赢奖金)
  3
  4	MT管理器打开游戏目录/assets/scripts/prefabs/hambat.lua文件
  5
  6	1.Asset("ANIM", "anim/swap_ham_bat.zip"),的下一行插入以下内容:
  7
  8	Asset("ANIM", "anim/wolfgang.zip"),
  9	Asset("ANIM", "anim/wolfgang_skinny.zip"),
 10	Asset("ANIM", "anim/wolfgang_mighty.zip"),
 11	Asset("ANIM", "anim/player_wolfgang.zip"),
 12
 13
 14	2.inst.OnLoad = OnLoad替换为以下内容
 15
 16local function game(inst)
 17	local pt = inst:GetPosition()
 18	local makers = SpawnPrefab("hambat")
 19	makers.Transform:SetPosition(pt.x, pt.y, pt.z)
 20	makers.AnimState:SetBank("wilson")
 21	makers.AnimState:SetBuild("wolfgang")
 22	makers.AnimState:Hide("ARM_carry")
 23	makers.AnimState:Show("ARM_normal")
 24	makers.Transform:SetFourFaced()
 25	makers.AnimState:PlayAnimation("idle")
 26	makers:RemoveComponent("weapon")
 27	makers:RemoveComponent("edible")
 28	makers:RemoveComponent("perishable")
 29	makers:RemoveComponent("inventoryitem")
 30	makers:RemoveComponent("equippable")
 31	makers:RemoveTag("show_spoilage")
 32	makers:AddTag("makers")
 33	local light = makers.entity:AddLight()
 34	light:SetFalloff(1)
 35	light:SetIntensity(.8)
 36	light:SetRadius(10)
 37	light:SetColour(180/255, 195/255, 50/255)
 38	light:Enable(true)
 39	local chest1 = SpawnPrefab("hambat")
 40	chest1.Transform:SetPosition(pt.x-1+2, pt.y, pt.z-1-2)
 41	chest1.AnimState:SetBank("pandoras_chest_large")
 42	chest1.AnimState:SetBuild("pandoras_chest_large")
 43	chest1.AnimState:PlayAnimation("closed")
 44	chest1.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 45	chest1:RemoveComponent("weapon")
 46	chest1:RemoveComponent("edible")
 47	chest1:RemoveComponent("perishable")
 48	chest1:RemoveComponent("inventoryitem")
 49	chest1:RemoveComponent("equippable")
 50	chest1:RemoveTag("show_spoilage")
 51	chest1:AddTag("goodbye")
 52	local chest2 = SpawnPrefab("hambat")
 53	chest2.Transform:SetPosition(pt.x-1-2, pt.y, pt.z-1+2)
 54	chest2.AnimState:SetBank("pandoras_chest_large")
 55	chest2.AnimState:SetBuild("pandoras_chest_large")
 56	chest2.AnimState:PlayAnimation("closed")
 57	chest2.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 58	chest2:RemoveComponent("weapon")
 59	chest2:RemoveComponent("edible")
 60	chest2:RemoveComponent("perishable")
 61	chest2:RemoveComponent("inventoryitem")
 62	chest2:RemoveComponent("equippable")
 63	chest2:RemoveTag("show_spoilage")
 64	chest2:AddTag("goodbye")
 65	local carpet = SpawnPrefab("hambat")
 66	carpet.Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
 67	carpet.AnimState:SetBuild("staff_purple_base_ground")
 68	carpet.AnimState:SetBank("staff_purple_base_ground")
 69	carpet.AnimState:PlayAnimation("idle")
 70	carpet.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround )
 71	carpet.AnimState:SetLayer( LAYER_BACKGROUND )
 72	carpet.AnimState:SetSortOrder( 3 )
 73	carpet.Transform:SetRotation( 45 )
 74	carpet.AnimState:SetMultColour(255/255,0/255,0/255,1)
 75	carpet.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
 76	carpet:RemoveComponent("weapon")
 77	carpet:RemoveComponent("edible")
 78	carpet:RemoveComponent("perishable")
 79	carpet:RemoveComponent("inventoryitem")
 80	carpet:RemoveComponent("equippable")
 81	carpet:RemoveTag("show_spoilage")
 82	carpet:AddTag("goodbye")
 83	carpet:AddComponent("trader")
 84	carpet.components.trader:SetAcceptTest(function(carpet, item) 
 85		if GetPlayer().components.inventory:Has("goldnugget", 11) then
 86		   if item.prefab == "goldnugget" then
 87			  return true
 88		   end
 89		end
 90		return false
 91	end )
 92	carpet.components.trader.onaccept = function(carpet, giver, item)
 93		GetPlayer().components.inventory:ConsumeByName("goldnugget", 9)
 94		makers.AnimState:PlayAnimation("give")
 95		local gold = SpawnPrefab("hambat")
 96		gold.Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
 97		gold.AnimState:SetBank("goldnugget")
 98		gold.AnimState:SetBuild("gold_nugget")
 99		gold.AnimState:PlayAnimation("idle")
100		gold.AnimState:PlayAnimation("sparkle")
101		gold.AnimState:PushAnimation("idle")
102		gold:RemoveComponent("weapon")
103		gold:RemoveComponent("edible")
104		gold:RemoveComponent("perishable")
105		gold:RemoveComponent("inventoryitem")
106		gold:RemoveComponent("equippable")
107		gold:RemoveTag("show_spoilage")
108		gold:AddTag("goodbye")
109		local rock = SpawnPrefab("hambat")
110		rock.Transform:SetPosition(pt.x+4+1.8, 0, pt.z+4-1.8)
111		rock.AnimState:SetBank("rocks")
112		rock.AnimState:SetBuild("rocks")
113		rock.AnimState:PlayAnimation("f1")
114		rock:RemoveComponent("weapon")
115		rock:RemoveComponent("edible")
116		rock:RemoveComponent("perishable")
117		rock:RemoveComponent("inventoryitem")
118		rock:RemoveComponent("equippable")
119		rock:RemoveTag("show_spoilage")
120		rock:AddTag("goodbye")
121		rock.Transform:SetScale(1.2, 1.2, 1.2)
122		rock.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
123		local shears = SpawnPrefab("hambat")
124		shears.Transform:SetPosition(pt.x+4, 0, pt.z+4)
125		shears.AnimState:SetBank("razor")
126		shears.AnimState:SetBuild("razor")
127		shears.AnimState:PlayAnimation("idle")
128		shears:RemoveComponent("weapon")
129		shears:RemoveComponent("edible")
130		shears:RemoveComponent("perishable")
131		shears:RemoveComponent("inventoryitem")
132		shears:RemoveComponent("equippable")
133		shears:RemoveTag("show_spoilage")
134		shears:AddTag("goodbye")
135		shears.Transform:SetScale(1.2, 1.2, 1.2)
136		shears.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
137		local colth = SpawnPrefab("hambat")
138		colth.Transform:SetPosition(pt.x+3.8-1.9, 0, pt.z+3.8+1.9)
139		colth.AnimState:SetBank("blueprint")
140		colth.AnimState:SetBuild("blueprint")
141		colth.AnimState:PlayAnimation("idle")
142		colth:RemoveComponent("weapon")
143		colth:RemoveComponent("edible")
144		colth:RemoveComponent("perishable")
145		colth:RemoveComponent("inventoryitem")
146		colth:RemoveComponent("equippable")
147		colth:RemoveTag("show_spoilage")
148		colth:AddTag("goodbye")
149		colth.Transform:SetScale(1.2, 1.2, 1.2)
150		colth.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
151		local names = {"rocks","razor","blueprint"}
152		local goldnugget = SpawnPrefab("goldnugget")
153		rock.components.inspectable.getstatus = function(rock)
154			makers.AnimState:PlayAnimation("give")
155			local name = names[math.random(#names)]
156			local fist = SpawnPrefab(name)
157			fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7)
158			fist:AddTag("goodbye")
159			fist.Transform:SetScale(1.2, 1.2, 1.2)
160			fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
161			fist.components.inventoryitem.canbepickedup = false
162			shears:Remove() colth:Remove()
163			GetPlayer():DoTaskInTime(3, function() rock:Remove() fist:Remove() gold:Remove() end )
164			if fist.prefab == "rocks" then
165			   makers.AnimState:SetBuild("wolfgang")
166			   GetPlayer():DoTaskInTime(3, function() 
167				  for k = 1, 10 do
168					  GetPlayer().components.inventory:GiveItem(goldnugget)
169				  end
170			   end )
171			end
172			if fist.prefab == "razor" then
173			   makers.AnimState:SetBuild("wolfgang_skinny")
174			   makers.AnimState:PlayAnimation("hit")
175			   GetPlayer():DoTaskInTime(3, function() 
176				  for k = 1, 20 do
177					  GetPlayer().components.inventory:GiveItem(goldnugget)
178					  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
179				  end
180			   end )
181			end
182			if fist.prefab == "blueprint" then
183			   makers.AnimState:SetBuild("wolfgang_mighty")
184			   makers.AnimState:PlayAnimation("idle_onemanband1_loop",true)
185			   GetPlayer():DoTaskInTime(3, function() 
186				  makers.AnimState:PlayAnimation("idle")
187				  SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
188				  GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
189			   end )
190			end
191		end
192		shears.components.inspectable.getstatus = function(shears)
193			makers.AnimState:PlayAnimation("give")
194			local name = names[math.random(#names)]
195			local fist = SpawnPrefab(name)
196			fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7)
197			fist:AddTag("goodbye")
198			fist.Transform:SetScale(1.2, 1.2, 1.2)
199			fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
200			fist.components.inventoryitem.canbepickedup = false
201			rock:Remove() colth:Remove()
202			GetPlayer():DoTaskInTime(3, function() shears:Remove() fist:Remove() gold:Remove() end )
203			if fist.prefab == "razor" then
204			   makers.AnimState:SetBuild("wolfgang")
205			   GetPlayer():DoTaskInTime(3, function() 
206				  for k = 1, 10 do
207					  GetPlayer().components.inventory:GiveItem(goldnugget)
208				  end
209			   end )
210			end
211			if fist.prefab == "blueprint" then
212			   makers.AnimState:SetBuild("wolfgang_skinny")
213			   makers.AnimState:PlayAnimation("hit")
214			   GetPlayer():DoTaskInTime(3, function() 
215				  for k = 1, 20 do
216					  GetPlayer().components.inventory:GiveItem(goldnugget)
217					  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
218				  end
219			   end )
220			end
221			if fist.prefab == "rocks" then
222			   makers.AnimState:SetBuild("wolfgang_mighty")
223			   makers.AnimState:PlayAnimation("idle_onemanband1_loop",true)
224			   GetPlayer():DoTaskInTime(3, function() 
225				  makers.AnimState:PlayAnimation("idle")
226				  SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
227				  GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
228			   end )
229			end
230		end
231		colth.components.inspectable.getstatus = function(colth)
232			makers.AnimState:PlayAnimation("give")
233			local name = names[math.random(#names)]
234			local fist = SpawnPrefab(name)
235			fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7)
236			fist:AddTag("goodbye")
237			fist.Transform:SetScale(1.2, 1.2, 1.2)
238			fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
239			fist.components.inventoryitem.canbepickedup = false
240			shears:Remove() rock:Remove()
241			GetPlayer():DoTaskInTime(3, function() colth:Remove() fist:Remove() gold:Remove() end )
242			if fist.prefab == "blueprint" then
243			   makers.AnimState:SetBuild("wolfgang")
244			   GetPlayer():DoTaskInTime(3, function() 
245				  for k = 1, 10 do
246					  GetPlayer().components.inventory:GiveItem(goldnugget)
247				  end
248			   end )
249			end
250			if fist.prefab == "rocks" then
251			   makers.AnimState:SetBuild("wolfgang_skinny")
252			   makers.AnimState:PlayAnimation("hit")
253			   GetPlayer():DoTaskInTime(3, function() 
254				  for k = 1, 20 do
255					  GetPlayer().components.inventory:GiveItem(goldnugget)
256					  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
257				  end
258			   end )
259			end
260			if fist.prefab == "razor" then
261			   makers.AnimState:SetBuild("wolfgang_mighty")
262			   makers.AnimState:PlayAnimation("idle_onemanband1_loop",true)
263			   GetPlayer():DoTaskInTime(3, function() 
264				  makers.AnimState:PlayAnimation("idle")
265				  SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
266				  GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
267			   end )
268			end
269		end
270	end
271end
272local function OnDeploy (inst, pt)
273	game(inst)
274	inst:Remove()
275end
276	inst:AddComponent("deployable")
277	inst.components.deployable.ondeploy = OnDeploy
278local function onsave(inst, data)
279	if inst:HasTag("makers") then
280		data.makers = true
281	end
282	if inst:HasTag("goodbye") then
283		data.goodbye = true
284	end
285end
286local function onload(inst, data)
287	if data and data.makers then
288	   game(inst)
289	   inst:Remove()
290	end
291	if data and data.goodbye then
292	   inst:Remove()
293	end
294end
295	inst.OnSave = onsave
296	inst.OnLoad = onload
297MakeLargeBurnable(inst)
298MakeLargePropagator(inst)
299
300	即可用火腿短棍种野球拳赌场,给红色三角10个黄金(拿着黄金对红色三角点鼠标左键),会出现石头、剪子、布选项,用鼠标左键点击要出的选项(比如点石头),庄家会同时出拳。野球拳的规则是,石头赢剪子输布、剪子赢布输石头、布赢石头输剪子。如果胜利则获得本金加10个黄金(共20个黄金),打平退还本金,输了就输掉本金。庄家不会与穷光蛋对赌,在付了10个黄金的本金后,身上至少须保有1个黄金。不想要野球拳赌场时,烧掉即可。火腿短棍在战斗选项(画着两把剑)下,用1个猪皮、2个树枝、2个大肉制造