สำหรับขั้นตอนต่อไปของเกมส์โลจิตัลผู้เล่นจำเป็นต้องขายไอเท็มของพวกเขาเพื่อที่จะสามารถซื้อพื้นที่เพิ่มเติมในกระเป๋าของพวกเขา
การสร้างแพลตฟอร์มขาย
ผู้เล่นจะขายไอเทมของพวกเขาโดยก้าวขึ้นแพลตฟอร์มที่ให้พวกเขาทองสำหรับแต่ละรายการในกระเป๋าของพวกเขา
การติดตั้งแพลตฟอร์ม
แพลตฟอร์มสามารถเป็นส่วนใดก็ได้และจะรวมถึงสคริปที่จัดการการขาย
สร้างส่วนใหม่ที่มีชื่อว่า 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() เพื่อขายกิจกรรม Touched ของ Part
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)เล่นโครงการของคุณและขับขี่ขาย; คุณควรเห็นข้อความ "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ในคุณสมบัติ onTouch() ตามคำสั่งที่สอง ใต้ข้อความนี้คุณสามารถเรียกใช้ sellItems() ฟังก์ชัน ในพารามิเตอร์ sellItems() และ 1> playerGold1> เพื่อให้พวกเขาสาม
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() เรียกใน วินาทีที่สอง หากสถานะที่ตรวจสอบรายการของผู้เล่น
- Any IntValue เช่น playerItems ใช้ .Value ที่จุดสิ้นสุดถ้าคุณกำลังทำการเปลี่ยนแปลงให้กับมัน มูลค่าจะถูกเขียนเป็นตัวอักษรเสมอ
- sellPart.Touched:Connect(onTouch) พิมพ์อยู่ที่ด้านล่างของสคริปต์
- sellItems(playerItems, playerGold) ถูกพิมพ์ก่อนสิ้นสุดของประโยค if humanoid แล้วสาธารณะ.