
สำหรับขั้นตอนต่อไปของวงจรเกมผู้เล่นจะต้องขายไอเทมเพื่อแลกเปลี่ยนเป็นทองเพื่อให้พวกเขาสามารถซื้อพื้นที่เพิ่มเติมในกระเป๋าเป้สะพายหลังได้
สร้างแพลตฟอร์มการขาย
ผู้เล่นจะขายไอเทมโดยก้าวไปบนแพลตฟอร์มที่ให้พวกเขาทองสำหรับแต่ละรายการในกระเป๋าของพวกเขา
ตั้งค่าแพลตฟอร์ม
แพลตฟอร์มสามารถเป็นส่วนใดก็ได้และจะรวมถึงสคริปต์ที่จัดการการขาย
สร้างส่วนใหม่ชื่อว่า SellPlatform ปรับแต่งให้เหมาะกับธีมของประสบการณ์ของคุณ
ใน SellPlatform สร้างสคริปต์ใหม่ชื่อ SellScript และเพิ่มความคิดเห็น
ใน SellScript พิมพ์ local sellPart = script.Parent เพื่อรับส่วนของ SellPlatform
-- ขายไอเทมทั้งหมดของผู้เล่นและให้ทองlocal sellPart = script.Parent
จัดการเหตุการณ์สัมผัส
เพื่อใช้แพลตฟอร์ม สคริปต์ต้องมีฟังก์ชันเพื่อตรวจสอบว่าผู้เล่นใดที่สัมผัสมัน
สร้างฟังก์ชันชื่อ onTouch() ที่ตรวจสอบว่าผู้เล่นกำลังสัมผัสกับแพลตฟอร์มหรือไม่
local function onTouch(partTouched)local character = partTouched.Parentendเพื่อเปลี่ยนสถิติใดๆ ตารางอันดับสคริปต์จะต้องรู้ว่าผู้เล่นคนไหนกำลังควบคุมตัวละครในคำสั่ง if ใช้ฟังก์ชัน GetPlayerFromCharacter() เพื่อค้นหาผู้เล่น
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)ในบรรทัดต่อไป รับคอนเทนเนอร์สถิติผู้เล่นนั้น
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- ตารางอันดับจำเป็นต้องรับไอเทมและเงินlocal playerStats = player:FindFirstChild("leaderstats")endในบรรทัดต่อไป สร้างตัวแปรเพื่อรับเงินและไอเทมของผู้เล่น
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- ตารางอันดับจำเป็นต้องรับไอเทมและเงินlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- รับไอเทมและเงินของผู้เล่นlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendเพื่อตรวจสอบงานของคุณ เพิ่มคําสั่งพิมพ์ที่จะดําเนินการหากผู้เล่นแตะขายส่วน
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")ที่ด้านล่างของสคริปต์ เชื่อมต่อ onTouch() เพื่อขายอีเวนต์ที่สัมผัสของ sellPart
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- ตารางอันดับจำเป็นต้องรับไอเทมและเงินlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- รับไอเทมและเงินของผู้เล่นlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)เล่นโครงการของคุณและก้าวไปบน sellPart; คุณควรเห็นข้อความ "A Player touched sellPart" ในหน้าต่างเอาต์พุต
ขายไอเทม
ในประสบการณ์นี้ผู้เล่นจะได้รับทอง 100 ไอเท็ม0 ทำให้ผู้เล่นสำรวจโลกเพื่อค้นหาไอเทมเพิ่มเติม
เขียนฟังก์ชันขายใหม่
ภายใต้ตัวแปรสร้างฟังก์ชันชื่อ sellItems() ที่ได้รับพารามิเตอร์สองตัวที่ชื่อ playerItems และ playerGold
-- ขายไอเทมทั้งหมดของผู้เล่นและให้ทองlocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)เพื่อให้ผู้เล่นได้รับทองจํานวนที่ถูกต้อง, ให้ใช้มูลค่าของ playerItems และคูณด้วยจํานวนทองที่พวกเขาควรได้รับต่อไอเทมตัวอย่างนี้ให้หนึ่งร้อยชิ้นทองต่อรายการ
ในฟังก์ชัน sellItems() ใส่ local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- รับจํานวนไอเทมที่ผู้เล่นมีและคูณด้วยมูลค่าไอเทมlocal totalSell = playerItems.Value * 100endประเภท playerGold.Value += totalSell เพื่อเพิ่มทองสำหรับไอเทมให้กับทองปัจจุบันของพวกเขา
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- เพิ่มจำนวนเงินที่ผู้เล่นได้รับเป็นเงินของพวกเขาplayerGold.Value += totalSellendประเภท playerItems.Value = 0 .สิ่งนี้รีเซ็ตไอเทมของผู้เล่นกลับเป็น 0หากไอเทมของผู้เล่นไม่ถูกรีเซ็ตกลับเป็น 0 สคริปต์จะยังคงให้ผู้เล่นทองโดยไม่หยุด
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endในฟังก์ชัน ใต้คำสั่ง if ที่สอง โทรไปที่ฟังก์ชัน ส่งพารามิเตอร์ playerItems และ playerGold เพื่อให้สามารถเปลี่ยนแปลงได้
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- ตารางอันดับจำเป็นต้องรับไอเทมและเงินlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- รับไอเทมและเงินของผู้เล่นlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendเล่นโครงการของคุณ; ตรวจสอบว่าทุกครั้งที่ผู้เล่นเดินบนแพลตฟอร์ม ทองของพวกเขาจะเพิ่มขึ้นและไอเทมจะถูกตั้งค่าเป็น 0
เคล็ดลับแก้ปัญหา
ในจุดนี้การขายไอเทมไม่ทำงานตามที่ตั้งใจไว้ ลองหนึ่งในสิ่งต่อไปนี้
- sellItems() ถูกเรียกใน ครั้งที่สอง หากคำสั่งที่ตรวจสอบไอเทมของผู้เล่น
- ค่าใด ๆ IntValue, เช่น playerItems, ใช้ .Value ในตอนท้ายถ้าคุณกําลังทําการเปลี่ยนแปลงกับมัน ค่าจะถูกเขียนเป็นตัวหนาเสมอ
- sellPart.Touched:Connect(onTouch) ถูกพิมพ์ที่ด้านล่างของสคริปต์ที่ **** * sellItems(playerItems, playerGold) ถูกพิมพ์ก่อนสิ้นสุดถ้า humanoid แล้วคำสั่ง