ขายไอเทม

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

สำหรับขั้นตอนต่อไปของวงจรเกมผู้เล่นจะต้องขายไอเทมเพื่อแลกเปลี่ยนเป็นทองเพื่อให้พวกเขาสามารถซื้อพื้นที่เพิ่มเติมในกระเป๋าเป้สะพายหลังได้

สร้างแพลตฟอร์มการขาย

ผู้เล่นจะขายไอเทมโดยก้าวไปบนแพลตฟอร์มที่ให้พวกเขาทองสำหรับแต่ละรายการในกระเป๋าของพวกเขา

ตั้งค่าแพลตฟอร์ม

แพลตฟอร์มสามารถเป็นส่วนใดก็ได้และจะรวมถึงสคริปต์ที่จัดการการขาย

  1. สร้างส่วนใหม่ชื่อว่า SellPlatform ปรับแต่งให้เหมาะกับธีมของประสบการณ์ของคุณ

  2. ใน SellPlatform สร้างสคริปต์ใหม่ชื่อ SellScript และเพิ่มความคิดเห็น

  3. ใน SellScript พิมพ์ local sellPart = script.Parent เพื่อรับส่วนของ SellPlatform


    -- ขายไอเทมทั้งหมดของผู้เล่นและให้ทอง
    local sellPart = script.Parent

จัดการเหตุการณ์สัมผัส

เพื่อใช้แพลตฟอร์ม สคริปต์ต้องมีฟังก์ชันเพื่อตรวจสอบว่าผู้เล่นใดที่สัมผัสมัน

  1. สร้างฟังก์ชันชื่อ onTouch() ที่ตรวจสอบว่าผู้เล่นกำลังสัมผัสกับแพลตฟอร์มหรือไม่


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. เพื่อเปลี่ยนสถิติใดๆ ตารางอันดับสคริปต์จะต้องรู้ว่าผู้เล่นคนไหนกำลังควบคุมตัวละครในคำสั่ง if ใช้ฟังก์ชัน GetPlayerFromCharacter() เพื่อค้นหาผู้เล่น


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. ในบรรทัดต่อไป รับคอนเทนเนอร์สถิติผู้เล่นนั้น


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- ตารางอันดับจำเป็นต้องรับไอเทมและเงิน
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. ในบรรทัดต่อไป สร้างตัวแปรเพื่อรับเงินและไอเทมของผู้เล่น


    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")
    end
    end
  5. เพื่อตรวจสอบงานของคุณ เพิ่มคําสั่งพิมพ์ที่จะดําเนินการหากผู้เล่นแตะขายส่วน


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. ที่ด้านล่างของสคริปต์ เชื่อมต่อ onTouch() เพื่อขายอีเวนต์ที่สัมผัสของ sellPart


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    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")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. เล่นโครงการของคุณและก้าวไปบน sellPart; คุณควรเห็นข้อความ "A Player touched sellPart" ในหน้าต่างเอาต์พุต

ขายไอเทม

ในประสบการณ์นี้ผู้เล่นจะได้รับทอง 100 ไอเท็ม0 ทำให้ผู้เล่นสำรวจโลกเพื่อค้นหาไอเทมเพิ่มเติม

เขียนฟังก์ชันขายใหม่

  1. ภายใต้ตัวแปรสร้างฟังก์ชันชื่อ sellItems() ที่ได้รับพารามิเตอร์สองตัวที่ชื่อ playerItems และ playerGold


    -- ขายไอเทมทั้งหมดของผู้เล่นและให้ทอง
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. เพื่อให้ผู้เล่นได้รับทองจํานวนที่ถูกต้อง, ให้ใช้มูลค่าของ playerItems และคูณด้วยจํานวนทองที่พวกเขาควรได้รับต่อไอเทมตัวอย่างนี้ให้หนึ่งร้อยชิ้นทองต่อรายการ

    ในฟังก์ชัน sellItems() ใส่ local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- รับจํานวนไอเทมที่ผู้เล่นมีและคูณด้วยมูลค่าไอเทม
    local totalSell = playerItems.Value * 100
    end
  3. ประเภท playerGold.Value += totalSell เพื่อเพิ่มทองสำหรับไอเทมให้กับทองปัจจุบันของพวกเขา


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- เพิ่มจำนวนเงินที่ผู้เล่นได้รับเป็นเงินของพวกเขา
    playerGold.Value += totalSell
    end
  4. ประเภท playerItems.Value = 0 .สิ่งนี้รีเซ็ตไอเทมของผู้เล่นกลับเป็น 0หากไอเทมของผู้เล่นไม่ถูกรีเซ็ตกลับเป็น 0 สคริปต์จะยังคงให้ผู้เล่นทองโดยไม่หยุด


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. ในฟังก์ชัน ใต้คำสั่ง 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 then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. เล่นโครงการของคุณ; ตรวจสอบว่าทุกครั้งที่ผู้เล่นเดินบนแพลตฟอร์ม ทองของพวกเขาจะเพิ่มขึ้นและไอเทมจะถูกตั้งค่าเป็น 0

เคล็ดลับแก้ปัญหา

ในจุดนี้การขายไอเทมไม่ทำงานตามที่ตั้งใจไว้ ลองหนึ่งในสิ่งต่อไปนี้

  • sellItems() ถูกเรียกใน ครั้งที่สอง หากคำสั่งที่ตรวจสอบไอเทมของผู้เล่น
  • ค่าใด ๆ IntValue, เช่น playerItems, ใช้ .Value ในตอนท้ายถ้าคุณกําลังทําการเปลี่ยนแปลงกับมัน ค่าจะถูกเขียนเป็นตัวหนาเสมอ
  • sellPart.Touched:Connect(onTouch) ถูกพิมพ์ที่ด้านล่างของสคริปต์ที่ **** * sellItems(playerItems, playerGold) ถูกพิมพ์ก่อนสิ้นสุดถ้า humanoid แล้วคำสั่ง