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

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



二九二.野球拳赌场(用火腿短棍种野球拳赌场,与庄家玩剪刀、石头、布赢奖金)

	用MT管理器打开游戏目录/assets/scripts/prefabs/hambat.lua文件,

	1.在Asset("ANIM", "anim/swap_ham_bat.zip"),的下一行插入以下内容:

	Asset("ANIM", "anim/wolfgang.zip"),
	Asset("ANIM", "anim/wolfgang_skinny.zip"),
	Asset("ANIM", "anim/wolfgang_mighty.zip"),
	Asset("ANIM", "anim/player_wolfgang.zip"),


	2.将inst.OnLoad = OnLoad替换为以下内容:

local function game(inst)
	local pt = inst:GetPosition()
	local makers = SpawnPrefab("hambat")
	makers.Transform:SetPosition(pt.x, pt.y, pt.z)
	makers.AnimState:SetBank("wilson")
	makers.AnimState:SetBuild("wolfgang")
	makers.AnimState:Hide("ARM_carry")
	makers.AnimState:Show("ARM_normal")
	makers.Transform:SetFourFaced()
	makers.AnimState:PlayAnimation("idle")
	makers:RemoveComponent("weapon")
	makers:RemoveComponent("edible")
	makers:RemoveComponent("perishable")
	makers:RemoveComponent("inventoryitem")
	makers:RemoveComponent("equippable")
	makers:RemoveTag("show_spoilage")
	makers:AddTag("makers")
	local light = makers.entity:AddLight()
	light:SetFalloff(1)
	light:SetIntensity(.8)
	light:SetRadius(10)
	light:SetColour(180/255, 195/255, 50/255)
	light:Enable(true)
	local chest1 = SpawnPrefab("hambat")
	chest1.Transform:SetPosition(pt.x-1+2, pt.y, pt.z-1-2)
	chest1.AnimState:SetBank("pandoras_chest_large")
	chest1.AnimState:SetBuild("pandoras_chest_large")
	chest1.AnimState:PlayAnimation("closed")
	chest1.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
	chest1:RemoveComponent("weapon")
	chest1:RemoveComponent("edible")
	chest1:RemoveComponent("perishable")
	chest1:RemoveComponent("inventoryitem")
	chest1:RemoveComponent("equippable")
	chest1:RemoveTag("show_spoilage")
	chest1:AddTag("goodbye")
	local chest2 = SpawnPrefab("hambat")
	chest2.Transform:SetPosition(pt.x-1-2, pt.y, pt.z-1+2)
	chest2.AnimState:SetBank("pandoras_chest_large")
	chest2.AnimState:SetBuild("pandoras_chest_large")
	chest2.AnimState:PlayAnimation("closed")
	chest2.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
	chest2:RemoveComponent("weapon")
	chest2:RemoveComponent("edible")
	chest2:RemoveComponent("perishable")
	chest2:RemoveComponent("inventoryitem")
	chest2:RemoveComponent("equippable")
	chest2:RemoveTag("show_spoilage")
	chest2:AddTag("goodbye")
	local carpet = SpawnPrefab("hambat")
	carpet.Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
	carpet.AnimState:SetBuild("staff_purple_base_ground")
	carpet.AnimState:SetBank("staff_purple_base_ground")
	carpet.AnimState:PlayAnimation("idle")
	carpet.AnimState:SetOrientation( ANIM_ORIENTATION.OnGround )
	carpet.AnimState:SetLayer( LAYER_BACKGROUND )
	carpet.AnimState:SetSortOrder( 3 )
	carpet.Transform:SetRotation( 45 )
	carpet.AnimState:SetMultColour(255/255,0/255,0/255,1)
	carpet.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
	carpet:RemoveComponent("weapon")
	carpet:RemoveComponent("edible")
	carpet:RemoveComponent("perishable")
	carpet:RemoveComponent("inventoryitem")
	carpet:RemoveComponent("equippable")
	carpet:RemoveTag("show_spoilage")
	carpet:AddTag("goodbye")
	carpet:AddComponent("trader")
	carpet.components.trader:SetAcceptTest(function(carpet, item) 
		if GetPlayer().components.inventory:Has("goldnugget", 11) then
		   if item.prefab == "goldnugget" then
			  return true
		   end
		end
		return false
	end )
	carpet.components.trader.onaccept = function(carpet, giver, item)
		GetPlayer().components.inventory:ConsumeByName("goldnugget", 9)
		makers.AnimState:PlayAnimation("give")
		local gold = SpawnPrefab("hambat")
		gold.Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
		gold.AnimState:SetBank("goldnugget")
		gold.AnimState:SetBuild("gold_nugget")
		gold.AnimState:PlayAnimation("idle")
		gold.AnimState:PlayAnimation("sparkle")
		gold.AnimState:PushAnimation("idle")
		gold:RemoveComponent("weapon")
		gold:RemoveComponent("edible")
		gold:RemoveComponent("perishable")
		gold:RemoveComponent("inventoryitem")
		gold:RemoveComponent("equippable")
		gold:RemoveTag("show_spoilage")
		gold:AddTag("goodbye")
		local rock = SpawnPrefab("hambat")
		rock.Transform:SetPosition(pt.x+4+1.8, 0, pt.z+4-1.8)
		rock.AnimState:SetBank("rocks")
		rock.AnimState:SetBuild("rocks")
		rock.AnimState:PlayAnimation("f1")
		rock:RemoveComponent("weapon")
		rock:RemoveComponent("edible")
		rock:RemoveComponent("perishable")
		rock:RemoveComponent("inventoryitem")
		rock:RemoveComponent("equippable")
		rock:RemoveTag("show_spoilage")
		rock:AddTag("goodbye")
		rock.Transform:SetScale(1.2, 1.2, 1.2)
		rock.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		local shears = SpawnPrefab("hambat")
		shears.Transform:SetPosition(pt.x+4, 0, pt.z+4)
		shears.AnimState:SetBank("razor")
		shears.AnimState:SetBuild("razor")
		shears.AnimState:PlayAnimation("idle")
		shears:RemoveComponent("weapon")
		shears:RemoveComponent("edible")
		shears:RemoveComponent("perishable")
		shears:RemoveComponent("inventoryitem")
		shears:RemoveComponent("equippable")
		shears:RemoveTag("show_spoilage")
		shears:AddTag("goodbye")
		shears.Transform:SetScale(1.2, 1.2, 1.2)
		shears.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		local colth = SpawnPrefab("hambat")
		colth.Transform:SetPosition(pt.x+3.8-1.9, 0, pt.z+3.8+1.9)
		colth.AnimState:SetBank("blueprint")
		colth.AnimState:SetBuild("blueprint")
		colth.AnimState:PlayAnimation("idle")
		colth:RemoveComponent("weapon")
		colth:RemoveComponent("edible")
		colth:RemoveComponent("perishable")
		colth:RemoveComponent("inventoryitem")
		colth:RemoveComponent("equippable")
		colth:RemoveTag("show_spoilage")
		colth:AddTag("goodbye")
		colth.Transform:SetScale(1.2, 1.2, 1.2)
		colth.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
		local names = {"rocks","razor","blueprint"}
		local goldnugget = SpawnPrefab("goldnugget")
		rock.components.inspectable.getstatus = function(rock)
			makers.AnimState:PlayAnimation("give")
			local name = names[math.random(#names)]
			local fist = SpawnPrefab(name)
			fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7)
			fist:AddTag("goodbye")
			fist.Transform:SetScale(1.2, 1.2, 1.2)
			fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
			fist.components.inventoryitem.canbepickedup = false
			shears:Remove() colth:Remove()
			GetPlayer():DoTaskInTime(3, function() rock:Remove() fist:Remove() gold:Remove() end )
			if fist.prefab == "rocks" then
			   makers.AnimState:SetBuild("wolfgang")
			   GetPlayer():DoTaskInTime(3, function() 
				  for k = 1, 10 do
					  GetPlayer().components.inventory:GiveItem(goldnugget)
				  end
			   end )
			end
			if fist.prefab == "razor" then
			   makers.AnimState:SetBuild("wolfgang_skinny")
			   makers.AnimState:PlayAnimation("hit")
			   GetPlayer():DoTaskInTime(3, function() 
				  for k = 1, 20 do
					  GetPlayer().components.inventory:GiveItem(goldnugget)
					  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
				  end
			   end )
			end
			if fist.prefab == "blueprint" then
			   makers.AnimState:SetBuild("wolfgang_mighty")
			   makers.AnimState:PlayAnimation("idle_onemanband1_loop",true)
			   GetPlayer():DoTaskInTime(3, function() 
				  makers.AnimState:PlayAnimation("idle")
				  SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
			   end )
			end
		end
		shears.components.inspectable.getstatus = function(shears)
			makers.AnimState:PlayAnimation("give")
			local name = names[math.random(#names)]
			local fist = SpawnPrefab(name)
			fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7)
			fist:AddTag("goodbye")
			fist.Transform:SetScale(1.2, 1.2, 1.2)
			fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
			fist.components.inventoryitem.canbepickedup = false
			rock:Remove() colth:Remove()
			GetPlayer():DoTaskInTime(3, function() shears:Remove() fist:Remove() gold:Remove() end )
			if fist.prefab == "razor" then
			   makers.AnimState:SetBuild("wolfgang")
			   GetPlayer():DoTaskInTime(3, function() 
				  for k = 1, 10 do
					  GetPlayer().components.inventory:GiveItem(goldnugget)
				  end
			   end )
			end
			if fist.prefab == "blueprint" then
			   makers.AnimState:SetBuild("wolfgang_skinny")
			   makers.AnimState:PlayAnimation("hit")
			   GetPlayer():DoTaskInTime(3, function() 
				  for k = 1, 20 do
					  GetPlayer().components.inventory:GiveItem(goldnugget)
					  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
				  end
			   end )
			end
			if fist.prefab == "rocks" then
			   makers.AnimState:SetBuild("wolfgang_mighty")
			   makers.AnimState:PlayAnimation("idle_onemanband1_loop",true)
			   GetPlayer():DoTaskInTime(3, function() 
				  makers.AnimState:PlayAnimation("idle")
				  SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
			   end )
			end
		end
		colth.components.inspectable.getstatus = function(colth)
			makers.AnimState:PlayAnimation("give")
			local name = names[math.random(#names)]
			local fist = SpawnPrefab(name)
			fist.Transform:SetPosition(pt.x+0.7, 0, pt.z+0.7)
			fist:AddTag("goodbye")
			fist.Transform:SetScale(1.2, 1.2, 1.2)
			fist.AnimState:SetBloomEffectHandle("shaders/anim.ksh")
			fist.components.inventoryitem.canbepickedup = false
			shears:Remove() rock:Remove()
			GetPlayer():DoTaskInTime(3, function() colth:Remove() fist:Remove() gold:Remove() end )
			if fist.prefab == "blueprint" then
			   makers.AnimState:SetBuild("wolfgang")
			   GetPlayer():DoTaskInTime(3, function() 
				  for k = 1, 10 do
					  GetPlayer().components.inventory:GiveItem(goldnugget)
				  end
			   end )
			end
			if fist.prefab == "rocks" then
			   makers.AnimState:SetBuild("wolfgang_skinny")
			   makers.AnimState:PlayAnimation("hit")
			   GetPlayer():DoTaskInTime(3, function() 
				  for k = 1, 20 do
					  GetPlayer().components.inventory:GiveItem(goldnugget)
					  GetPlayer().SoundEmitter:PlaySound("dontstarve/HUD/get_gold")
				  end
			   end )
			end
			if fist.prefab == "razor" then
			   makers.AnimState:SetBuild("wolfgang_mighty")
			   makers.AnimState:PlayAnimation("idle_onemanband1_loop",true)
			   GetPlayer():DoTaskInTime(3, function() 
				  makers.AnimState:PlayAnimation("idle")
				  SpawnPrefab("collapse_small").Transform:SetPosition(pt.x+2.5, 0, pt.z+2.5)
				  GetPlayer().SoundEmitter:PlaySound("dontstarve/creatures/eyeballturret/shotexplo")
			   end )
			end
		end
	end
end
local function OnDeploy (inst, pt)
	game(inst)
	inst:Remove()
end
	inst:AddComponent("deployable")
	inst.components.deployable.ondeploy = OnDeploy
local function onsave(inst, data)
	if inst:HasTag("makers") then
		data.makers = true
	end
	if inst:HasTag("goodbye") then
		data.goodbye = true
	end
end
local function onload(inst, data)
	if data and data.makers then
	   game(inst)
	   inst:Remove()
	end
	if data and data.goodbye then
	   inst:Remove()
	end
end
	inst.OnSave = onsave
	inst.OnLoad = onload
MakeLargeBurnable(inst)
MakeLargePropagator(inst)

	即可用火腿短棍种野球拳赌场,给红色三角10个黄金(拿着黄金对红色三角点鼠标左键),会出现石头、剪子、布选项,用鼠标左键点击要出的选项(比如点石头),庄家会同时出拳。野球拳的规则是,石头赢剪子输布、剪子赢布输石头、布赢石头输剪子。如果胜利则获得本金加10个黄金(共20个黄金),打平退还本金,输了就输掉本金。庄家不会与穷光蛋对赌,在付了10个黄金的本金后,身上至少须保有1个黄金。不想要野球拳赌场时,烧掉即可。火腿短棍在战斗选项(画着两把剑)下,用1个猪皮、2个树枝、2个大肉制造