TFS 0.3.6 8.60 - Buy & Sell Talkaction System Porem quando eu falo buy pra compra ele nao compra pelo valor item no market exemplo 1000000000 ele compra item sem ser valor do item código fui eu que desenvolvi deve servi 0.4 também
TFS 0.3.6 8.60 - Buy & Sell Talkaction System Porem quando eu falo buy pra compra ele nao compra pelo valor item no market exemplo 1000000000 ele compra item sem ser valor do item código fui eu que desenvolvi deve servi 0.4 também
BUY
-- Inicializar as tabelas globais para compras e vendas ativas
activeBuys = activeBuys or {}
activeSells = activeSells or {}
-- Configuração
local config = {
validCurrencies = {9971, 2160, 2148, 2152, 2157, 2159}, -- Moedas válidas
maxPrice = 1000000000, -- Preço máximo permitido
}
-- Função para verificar se uma moeda é válida
local function isValidCurrency(currencyId)
for _, validId in ipairs(config.validCurrencies) do
if validId == currencyId then
return true
end
end
return false
end
-- Função para listar itens à venda
function listItems(cid)
if #activeSells == 0 then
doPlayerSendCancel(cid, "No items are currently being sold.")
return true
end
local message = "Items available for sale:\n"
for i, sell in ipairs(activeSells) do
message = message .. i .. ". " .. sell.itemName .. " (" .. sell.quantity .. "x) - Price: " .. sell.price .. " gold coins - Seller: " .. sell.seller .. "\n"
end
doPlayerPopupFYI(cid, message)
return true
end
-- Função para comprar o item
function buyItem(cid, itemName, quantity, price, currencyId, sellerName)
-- Verificar se o item está à venda
for i, sell in ipairs(activeSells) do
if sell.itemName == itemName and sell.seller == sellerName then
-- Verificar se o jogador tem moeda suficiente
if getPlayerItemCount(cid, currencyId) < price then
doPlayerSendCancel(cid, "You don't have enough currency to buy this item.")
return true
end
-- Verificar se há quantidade suficiente do item
if sell.quantity < quantity then
doPlayerSendCancel(cid, "Not enough items in stock.")
return true
end
-- Realizar a compra
-- Remover o dinheiro do comprador
doPlayerRemoveItem(cid, currencyId, price)
-- Adicionar o item ao comprador
doPlayerAddItem(cid, getItemIdByName(itemName), quantity)
-- Atualizar a quantidade do item à venda
activeSells[i].quantity = activeSells[i].quantity - quantity
-- Informar ao jogador sobre a compra
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have successfully bought " .. quantity .. "x " .. itemName .. " from " .. sellerName .. " for " .. price .. " currency.")
-- Caso o item tenha acabado, remover a venda
if activeSells[i].quantity <= 0 then
table.remove(activeSells, i)
end
return true
end
end
doPlayerSendCancel(cid, "Item not found in the market.")
return true
end
-- Função para vender o item
function sellItem(cid, itemName, quantity, price, currencyId)
-- Verificar se o jogador tem o item suficiente
local itemId = getItemIdByName(itemName)
if itemId == 0 or getPlayerItemCount(cid, itemId) < quantity then
doPlayerSendCancel(cid, "You don't have enough of the item '" .. itemName .. "' to sell.")
return true
end
-- Remover os itens do inventário do vendedor
doPlayerRemoveItem(cid, itemId, quantity)
-- Registrar a venda
table.insert(activeSells, {
itemName = itemName,
quantity = quantity,
price = price,
currencyId = currencyId,
seller = getPlayerName(cid),
})
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your item '" .. itemName .. "' has been listed for sale.")
return true
end
-- Função principal para lidar com os comandos
function onSay(cid, words, param)
if words == "!sell" then
if param == "" then
doPlayerSendCancel(cid, "Use: !sell itemName, quantity, price, currencyId")
return true
end
local t = string.explode(param, ",")
if #t ~= 4 then
doPlayerSendCancel(cid, "Invalid parameters. Use: !sell itemName, quantity, price, currencyId")
return true
end
local itemName = t[1]:trim()
local quantity = tonumber(t[2])
local price = tonumber(t[3])
local currencyId = tonumber(t[4])
-- Chama a função para vender o item
return sellItem(cid, itemName, quantity, price, currencyId)
elseif words == "!buy" then
if param == "" then
doPlayerSendCancel(cid, "Use: !buy itemName, quantity, price, ID's 9971 - 2160 - 2148 - 2152 - 2157 - 2159, sellerName")
return true
end
-- Separar os parâmetros fornecidos
local t = string.explode(param, ",")
if #t ~= 5 then
doPlayerSendCancel(cid, "Invalid parameters. Use: !buy itemName, quantity, price, ID's 9971 - 2160 - 2148 - 2152 -2157 - 2159, sellerName")
return true
end
local itemName = t[1]:trim()
local quantity = tonumber(t[2])
local price = tonumber(t[3])
local currencyId = tonumber(t[4])
local sellerName = t[5]:trim()
-- Chama a função para comprar o item
return buyItem(cid, itemName, quantity, price, currencyId, sellerName)
elseif words == "!list" then
-- Exibe os itens à venda
return listItems(cid)
end
return false
end
SELL
-- Inicializar a tabela global para vendas ativas
activeBuys = activeBuys or {}
activeSells = activeSells or {}
-- Configuração
local config = {
validCurrencies = {9971, 2160, 2148, 2157, 2152, 2159}, -- Moedas válidas
maxPrice = 1000000000, -- Preço máximo permitido
}
-- Verificar se uma moeda é válida
local function isValidCurrency(currencyId)
for _, validId in ipairs(config.validCurrencies) do
if validId == currencyId then
return true
end
end
return false
end
function onSay(cid, words, param)
if param == "" then
doPlayerSendCancel(cid, "Use: !sell itemName, quantity, price, currencyId")
return true
end
local t = string.explode(param, ",")
if #t ~= 4 then
doPlayerSendCancel(cid, "Invalid parameters. Use: !sell itemName, quantity, price, currencyId")
return true
end
local itemName = t[1]:trim()
local quantity = tonumber(t[2])
local price = tonumber(t[3])
local currencyId = tonumber(t[4])
if not quantity or quantity <= 0 then
doPlayerSendCancel(cid, "Invalid quantity.")
return true
end
if not price or price <= 0 or price > config.maxPrice then
doPlayerSendCancel(cid, "Invalid price. Maximum allowed: " .. config.maxPrice)
return true
end
if not isValidCurrency(currencyId) then
doPlayerSendCancel(cid, "Invalid currency. Valid currencies: " .. table.concat(config.validCurrencies, ", "))
return true
end
-- Verificar se o jogador tem o item suficiente no inventário
local itemId = getItemIdByName(itemName)
if itemId == 0 or getPlayerItemCount(cid, itemId) < quantity then
doPlayerSendCancel(cid, "You don't have enough of the item '" .. itemName .. "' to sell.")
return true
end
-- Remover os itens do inventário do vendedor
doPlayerRemoveItem(cid, itemId, quantity)
-- Registrar a venda
table.insert(activeSells, {
itemName = itemName,
quantity = quantity,
price = price,
currencyId = currencyId,
seller = getPlayerName(cid),
})
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your item '" .. itemName .. "' has been listed for sale.")
return true
end
checkselllist
-- Inicializar activeSells como tabela, se ainda não foi
activeBuys = activeBuys or {}
activeSells = activeSells or {}
-- Função onSay para mostrar os itens à venda
function onSay(cid, words, param)
if #activeSells == 0 then
doPlayerSendCancel(cid, "No items are currently being sold.")
return true
end
local message = "Items available for sale:\n"
for i, sell in ipairs(activeSells) do
-- Substituindo a exibição de gold coins pelo ID da moeda
local currencyName = getCurrencyName(sell.currencyId)
message = message .. i .. ". " .. sell.itemName .. " (" .. sell.quantity .. "x) - Price: " .. sell.price .. " " .. currencyName .. " - Seller: " .. sell.seller .. "\n"
end
doPlayerPopupFYI(cid, message)
return true
end
-- Função para obter o nome da moeda baseado no ID
function getCurrencyName(currencyId)
local currencyNames = {
[9971] = "- 9971 - [VIP] Coin's",
[2160] = "- 2160 - Crystal Coin's",
[2148] = "- 2148 - Gold Coin's",
[2152] = "- 2152 - Platinum Coins",
[2159] = "- 2159 - Donate Coin's",
[2157] = "- 2157 - KK Coin's"
}
-- Retorna o nome da moeda correspondente ao ID ou "Unknown Currency" se não for encontrado
return currencyNames[currencyId] or "Unknown Currency"
end
Pergunta
Muvuka 1
TFS 0.3.6 8.60 - Buy & Sell Talkaction System Porem quando eu falo buy pra compra ele nao compra pelo valor item no market exemplo 1000000000 ele compra item sem ser valor do item código fui eu que desenvolvi deve servi 0.4 também
BUY
-- Inicializar as tabelas globais para compras e vendas ativas activeBuys = activeBuys or {} activeSells = activeSells or {} -- Configuração local config = { validCurrencies = {9971, 2160, 2148, 2152, 2157, 2159}, -- Moedas válidas maxPrice = 1000000000, -- Preço máximo permitido } -- Função para verificar se uma moeda é válida local function isValidCurrency(currencyId) for _, validId in ipairs(config.validCurrencies) do if validId == currencyId then return true end end return false end -- Função para listar itens à venda function listItems(cid) if #activeSells == 0 then doPlayerSendCancel(cid, "No items are currently being sold.") return true end local message = "Items available for sale:\n" for i, sell in ipairs(activeSells) do message = message .. i .. ". " .. sell.itemName .. " (" .. sell.quantity .. "x) - Price: " .. sell.price .. " gold coins - Seller: " .. sell.seller .. "\n" end doPlayerPopupFYI(cid, message) return true end -- Função para comprar o item function buyItem(cid, itemName, quantity, price, currencyId, sellerName) -- Verificar se o item está à venda for i, sell in ipairs(activeSells) do if sell.itemName == itemName and sell.seller == sellerName then -- Verificar se o jogador tem moeda suficiente if getPlayerItemCount(cid, currencyId) < price then doPlayerSendCancel(cid, "You don't have enough currency to buy this item.") return true end -- Verificar se há quantidade suficiente do item if sell.quantity < quantity then doPlayerSendCancel(cid, "Not enough items in stock.") return true end -- Realizar a compra -- Remover o dinheiro do comprador doPlayerRemoveItem(cid, currencyId, price) -- Adicionar o item ao comprador doPlayerAddItem(cid, getItemIdByName(itemName), quantity) -- Atualizar a quantidade do item à venda activeSells[i].quantity = activeSells[i].quantity - quantity -- Informar ao jogador sobre a compra doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You have successfully bought " .. quantity .. "x " .. itemName .. " from " .. sellerName .. " for " .. price .. " currency.") -- Caso o item tenha acabado, remover a venda if activeSells[i].quantity <= 0 then table.remove(activeSells, i) end return true end end doPlayerSendCancel(cid, "Item not found in the market.") return true end -- Função para vender o item function sellItem(cid, itemName, quantity, price, currencyId) -- Verificar se o jogador tem o item suficiente local itemId = getItemIdByName(itemName) if itemId == 0 or getPlayerItemCount(cid, itemId) < quantity then doPlayerSendCancel(cid, "You don't have enough of the item '" .. itemName .. "' to sell.") return true end -- Remover os itens do inventário do vendedor doPlayerRemoveItem(cid, itemId, quantity) -- Registrar a venda table.insert(activeSells, { itemName = itemName, quantity = quantity, price = price, currencyId = currencyId, seller = getPlayerName(cid), }) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your item '" .. itemName .. "' has been listed for sale.") return true end -- Função principal para lidar com os comandos function onSay(cid, words, param) if words == "!sell" then if param == "" then doPlayerSendCancel(cid, "Use: !sell itemName, quantity, price, currencyId") return true end local t = string.explode(param, ",") if #t ~= 4 then doPlayerSendCancel(cid, "Invalid parameters. Use: !sell itemName, quantity, price, currencyId") return true end local itemName = t[1]:trim() local quantity = tonumber(t[2]) local price = tonumber(t[3]) local currencyId = tonumber(t[4]) -- Chama a função para vender o item return sellItem(cid, itemName, quantity, price, currencyId) elseif words == "!buy" then if param == "" then doPlayerSendCancel(cid, "Use: !buy itemName, quantity, price, ID's 9971 - 2160 - 2148 - 2152 - 2157 - 2159, sellerName") return true end -- Separar os parâmetros fornecidos local t = string.explode(param, ",") if #t ~= 5 then doPlayerSendCancel(cid, "Invalid parameters. Use: !buy itemName, quantity, price, ID's 9971 - 2160 - 2148 - 2152 -2157 - 2159, sellerName") return true end local itemName = t[1]:trim() local quantity = tonumber(t[2]) local price = tonumber(t[3]) local currencyId = tonumber(t[4]) local sellerName = t[5]:trim() -- Chama a função para comprar o item return buyItem(cid, itemName, quantity, price, currencyId, sellerName) elseif words == "!list" then -- Exibe os itens à venda return listItems(cid) end return false end
SELL
-- Inicializar a tabela global para vendas ativas activeBuys = activeBuys or {} activeSells = activeSells or {} -- Configuração local config = { validCurrencies = {9971, 2160, 2148, 2157, 2152, 2159}, -- Moedas válidas maxPrice = 1000000000, -- Preço máximo permitido } -- Verificar se uma moeda é válida local function isValidCurrency(currencyId) for _, validId in ipairs(config.validCurrencies) do if validId == currencyId then return true end end return false end function onSay(cid, words, param) if param == "" then doPlayerSendCancel(cid, "Use: !sell itemName, quantity, price, currencyId") return true end local t = string.explode(param, ",") if #t ~= 4 then doPlayerSendCancel(cid, "Invalid parameters. Use: !sell itemName, quantity, price, currencyId") return true end local itemName = t[1]:trim() local quantity = tonumber(t[2]) local price = tonumber(t[3]) local currencyId = tonumber(t[4]) if not quantity or quantity <= 0 then doPlayerSendCancel(cid, "Invalid quantity.") return true end if not price or price <= 0 or price > config.maxPrice then doPlayerSendCancel(cid, "Invalid price. Maximum allowed: " .. config.maxPrice) return true end if not isValidCurrency(currencyId) then doPlayerSendCancel(cid, "Invalid currency. Valid currencies: " .. table.concat(config.validCurrencies, ", ")) return true end -- Verificar se o jogador tem o item suficiente no inventário local itemId = getItemIdByName(itemName) if itemId == 0 or getPlayerItemCount(cid, itemId) < quantity then doPlayerSendCancel(cid, "You don't have enough of the item '" .. itemName .. "' to sell.") return true end -- Remover os itens do inventário do vendedor doPlayerRemoveItem(cid, itemId, quantity) -- Registrar a venda table.insert(activeSells, { itemName = itemName, quantity = quantity, price = price, currencyId = currencyId, seller = getPlayerName(cid), }) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your item '" .. itemName .. "' has been listed for sale.") return true end
checkselllist
-- Inicializar activeSells como tabela, se ainda não foi activeBuys = activeBuys or {} activeSells = activeSells or {} -- Função onSay para mostrar os itens à venda function onSay(cid, words, param) if #activeSells == 0 then doPlayerSendCancel(cid, "No items are currently being sold.") return true end local message = "Items available for sale:\n" for i, sell in ipairs(activeSells) do -- Substituindo a exibição de gold coins pelo ID da moeda local currencyName = getCurrencyName(sell.currencyId) message = message .. i .. ". " .. sell.itemName .. " (" .. sell.quantity .. "x) - Price: " .. sell.price .. " " .. currencyName .. " - Seller: " .. sell.seller .. "\n" end doPlayerPopupFYI(cid, message) return true end -- Função para obter o nome da moeda baseado no ID function getCurrencyName(currencyId) local currencyNames = { [9971] = "- 9971 - [VIP] Coin's", [2160] = "- 2160 - Crystal Coin's", [2148] = "- 2148 - Gold Coin's", [2152] = "- 2152 - Platinum Coins", [2159] = "- 2159 - Donate Coin's", [2157] = "- 2157 - KK Coin's" } -- Retorna o nome da moeda correspondente ao ID ou "Unknown Currency" se não for encontrado return currencyNames[currencyId] or "Unknown Currency" end
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados