Could you help me set this script that you can get 1 reward only 1 time ? Help eace:
Code:
local fragRewards =
{
--frag rewards configuration
--from highest to lowest (by frags)
{frags = 5, itemid = 3960}, --<1citizen>
{frags = 5, itemid = 3960}
{frags = 5, itemid = 3960}
{frags = 5, itemid = 3960}
}
local function getRewardByName(name)
local tmp = name:lower()
local tmp2 = ""
for _, reward in pairs(fragRewards) do
tmp2 = getItemNameById(reward.itemid)
if(tmp == tmp2) then
reward.name = tmp2
return reward
end
end
return FALSE
end
function onSay(cid, words, param)
if(param == "" or param:lower() == "list") then
local str = "#Frag rewards:"
for _, reward in pairs(fragRewards) do
str = str .. "\n" .. getItemNameById(reward.itemid) .. " " .. (reward.count ~= nil and "(x" .. reward.count .. ")" or "") .. "- " .. reward.frags .. " frags"
end
doPlayerPopupFYI(cid, str .. "\n\nExample: " .. words .. " magic plate armor")
return TRUE
end
local reward = getRewardByName(param)
if(reward == FALSE) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Invalid item specified. Please use '" .. words .. " list' command to get valid rewards list.")
return TRUE
end
local playerFrags = getPlayerFrags(cid)
if(playerFrags < reward.frags) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You need " .. reward.frags .. " frags for this item.")
return TRUE
end
itemWeight = getItemWeightById(reward.itemid, reward.count)
if(isItemRune(reward.itemid) == TRUE) then
itemWeight = getItemWeightById(reward.itemid, 1)
end
local rewardItem = doCreateItemEx(reward.itemid, reward.count)
local freeCap = getPlayerFreeCap(cid)
if(itemWeight > freeCap or doPlayerAddItemEx(cid, rewardItem) ~= RETURNVALUE_NOERROR) then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You don't have enought space/capacity for this item.")
return TRUE
end
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have bought " .. reward.name .. " for " .. reward.frags .. " frags.")
doPlayerAddFrags(cid, -reward.frags)
return TRUE
end