Ir para conteúdo
  • 0

-=[TFS]=- 0.3.6 - 8.60 TO QUERENDO QUE ESSE SCRIPT SEJA COMPRADO SE TIVER A MOEDA ID 6535 DexSoft Coin e a QUANTIDADE QUE PLAYER QUIZER VENDE O PERSONAGEM


Muvuka

Pergunta

TEM COMO MUDA ID DA MOEDA DE COMPRA PARA ID DE MOEDA 6535 E A QUANTIDADE QUE PLAYER QUISER VENDE CHAR???

 

<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Characters Market System" version="1.0" author="LuckOake" contact="none" enabled="yes">
------------------------------------------------------------------------------------
<config name="market"><![CDATA[
price = 27112
owner = 27113
level = 717217 -- Level min of character.--
min_price = 10000000000000 -- Price min of character--
max_price = 10000000000000 -- Price maximum of character--

function doTransferCharacter(cid, accId)
    local playerGuid = getPlayerGUIDByName(cid)
    if not playerGuid then
        return false, "Player GUID not found."
    end
    return db.executeQuery("UPDATE `players` SET `account_id` = "..accId.." WHERE `id` = "..playerGuid.."")
end

function doOfflinePlayerAddMoney(guid, money)
    local playerGuid = getPlayerGUIDByName(guid)
    if not playerGuid then
        return false, "Player GUID not found."
    end
    return db.executeQuery("UPDATE `players` SET `balance` = `balance` + '"..money.."' WHERE `id` = '"..playerGuid.."';")
end

function setOfflinePlayerStorageValue(name, key, value)
    local playerGuid = getPlayerGUIDByName(name)
    if not playerGuid then
        return false, "Player GUID not found."
    end
    local result = db.getResult("SELECT * FROM `player_storage` WHERE `player_id` = ".. playerGuid .." AND `key` = ".. key ..";")
    if result:getID() == -1 then
        return db.executeQuery("INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES (".. playerGuid ..", ".. key ..", ".. value ..");")
    else
        result:free()
        return db.executeQuery("UPDATE `player_storage` SET `value` = ".. value .." WHERE `player_id` = ".. playerGuid .." AND `key` = ".. key ..";")
    end
end

function getOfflinePlayerStorageValue(name, key)
    local playerGuid = getPlayerGUIDByName(name)
    if not playerGuid then
        return nil
    end
    local result = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = '".. playerGuid .."' AND `key` = ".. key ..";")
    if result:getID() == -1 then
        return nil
    end
    local ret = result:getDataInt("value")
    result:free()
    return ret
end

function getOfflinePlayerValue(name, value)
    local playerGuid = getPlayerGUIDByName(name)
    if not playerGuid then
        return nil
    end
    local result = db.getResult("SELECT `"..value.."` FROM `players` WHERE `id` = "..playerGuid..";")
    if result:getID() == -1 then
        return nil
    end
    local ret = result:getDataInt(value)
    result:free()
    return ret
end

function isCharacterForSale(name)
    local charPrice = getOfflinePlayerStorageValue(name, price)
    if not charPrice or charPrice < 1 then
        return false
    else
        return true
    end
end
]]></config>
------------------------------------------------------------------------------------
<talkaction words="!character" event="buffer"><![CDATA[
domodlib('market')
local t = string.explode(param, ",")
       
if t[1] == "sell" then
    if not t[3] or not tonumber(t[3]) or t[4] or tonumber(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name and the price.") return true
    elseif getPlayerAccountId(cid) ~= getAccountIdByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This is not your character.") return true
    elseif isCharacterForSale(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is already for sale.") return true
    elseif getPlayerGUIDByName(t[2]) == getPlayerGUID(cid) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You cannot sell yourself.") return true
    elseif getPlayerByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The character must be offline to be sold.") return true
    elseif getOfflinePlayerValue(t[2], "level") < level then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your character can't be sold until it has level "..level..".") return true
    elseif tonumber(t[3]) < min_price then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sorry, but the minimum price for selling a character is "..min_price..".") return true
    elseif tonumber(t[3]) > max_price then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sorry, but the maximum price for selling a character is "..max_price..".") return true
    end
       
    setOfflinePlayerStorageValue(t[2], price, t[3])
    setOfflinePlayerStorageValue(t[2], owner, getPlayerGUID(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Your character "'..t[2]..'" is now for sale for the price of "'..t[3]..'" gold coins.')
elseif t[1] == "buy" then
    if not t[2] then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name.") return true
    elseif not playerExists(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character doesn't exist.") return true
    elseif getPlayerAccountId(cid) == getAccountIdByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't buy your own character.") return true
    elseif not isCharacterForSale(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is not for sale.") return true
    elseif not doPlayerRemoveMoney(cid, getOfflinePlayerStorageValue(t[2], price)) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Not enough money. This character's price is "..getOfflinePlayerStorageValue(t[2], price).." gold coins.") return true
    end
                       
    if not getPlayerByGUID(getOfflinePlayerStorageValue(t[2], owner)) then
        doOfflinePlayerAddMoney(getPlayerNameByGUID(getOfflinePlayerStorageValue(t[2], owner)), getOfflinePlayerStorageValue(t[2], price))
        setOfflinePlayerStorageValue(getPlayerNameByGUID(getOfflinePlayerStorageValue(t[2], owner)), 41792, getPlayerGUIDByName(t[2]))
    else
        doPlayerAddMoney(getPlayerByGUID(getOfflinePlayerStorageValue(t[2], owner)), getOfflinePlayerStorageValue(t[2], price))
        doPlayerSendTextMessage(getPlayerByGUID(getOfflinePlayerStorageValue(t[2], owner)), MESSAGE_STATUS_CONSOLE_BLUE, 'Your character "'..t[2]..'" has been sold for the price of '..getOfflinePlayerStorageValue(t[2], price)..' gold coins.')
    end
    doTransferCharacter(t[2], getPlayerAccountId(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You bought the character "'..t[2]..'" for the price of '..getOfflinePlayerStorageValue(t[2], price)..' gold coins.')
    setOfflinePlayerStorageValue(t[2], owner, -1)
    setOfflinePlayerStorageValue(t[2], price, -1) return true
elseif t[1] == "remove" then
    if not t[2] then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name.") return true
    elseif getPlayerAccountId(cid) ~= getAccountIdByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This is not your character.") return true
    elseif not isCharacterForSale(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is not for sale.") return true
    end
               
    setOfflinePlayerStorageValue(t[2], price, -1)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You removed the character "'..t[2]..'" from the Characters Market.') return true
elseif t[1] == "list" then
    local result = db.getResult("SELECT `name` FROM `players`")
    if result:getID() == -1 then
        return true
    end
    local msg = "Characters For Sale Price 10000000000000:\n\n"
    while true do
        local name = result:getDataString("name")
        if isCharacterForSale(name) then
            local sex = getOfflinePlayerValue(name, "sex") == 1 and "Male" or "Female"
            msg = ""..msg.." - ".. name .." (Level: "..getOfflinePlayerValue(name, "level").." / Vocation: "..getVocationInfo(getOfflinePlayerValue(name, "vocation")).name.." / Sex: "..sex.." / Owner: "..getPlayerNameByGUID(getOfflinePlayerStorageValue(name, owner))..") [Price: "..getOfflinePlayerStorageValue(name, price).."] \n"
        end
        if not result:next() then
            break
        end
    end
    doPlayerPopupFYI(cid, msg) return true
elseif not t[1] or t[1] ~= "buy" or t[1] ~= "sell" or t[1] ~= "remove" or t[1] ~= "list" then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Incorrect params. You can only 'buy' or 'sell' a character, 'remove' it from the Characters Market or see the 'list' of characters for sale.") return true
end
return true
]]></talkaction>
------------------------------------------------------------------------------------
<event type="login" name="MarketLogin" event="script"><![CDATA[
function onLogin(cid)
domodlib('market')
    if getPlayerStorageValue(cid, price) > 0 then return false
    elseif getPlayerStorageValue(cid, 41792) ~= -1 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You sold the character "..getPlayerNameByGUID(getPlayerStorageValue(cid, 41792))..". The money is in your bank account.")
        setPlayerStorageValue(cid, 41792, -1)
    end
return true
end
]]></event>
</mod>
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
Connect casually with like-minded individuals on the ultimate dating platform.
Living Women
[URL=https://datesnow.life]Optimal casual Dating[/URL]
Link para o comentário
Compartilhar em outros sites

  • 1
<?xml version="1.0" encoding="ISO-8859-1"?>
<mod name="Characters Market System" version="1.0" author="LuckOake" contact="none" enabled="yes">
------------------------------------------------------------------------------------
<config name="market"><![CDATA[
price = 27112
owner = 27113
level = 717217 -- Level min of character.--
min_price = 1 -- Price min of character (in currency 6535)--
max_price = 1000000000 -- Price maximum of character (in currency 6535)--

function doTransferCharacter(cid, accId)
    local playerGuid = getPlayerGUIDByName(cid)
    if not playerGuid then
        return false, "Player GUID not found."
    end
    return db.executeQuery("UPDATE `players` SET `account_id` = "..accId.." WHERE `id` = "..playerGuid.."")
end

function doOfflinePlayerAddMoney(guid, money, itemID)
    local playerGuid = getPlayerGUIDByName(guid)
    if not playerGuid then
        return false, "Player GUID not found."
    end
    return db.executeQuery("UPDATE `players` SET `balance` = `balance` + '"..money.."' WHERE `id` = '"..playerGuid.."';")
end

function setOfflinePlayerStorageValue(name, key, value)
    local playerGuid = getPlayerGUIDByName(name)
    if not playerGuid then
        return false, "Player GUID not found."
    end
    local result = db.getResult("SELECT * FROM `player_storage` WHERE `player_id` = ".. playerGuid .." AND `key` = ".. key ..";")
    if result:getID() == -1 then
        return db.executeQuery("INSERT INTO `player_storage` (`player_id`, `key`, `value`) VALUES (".. playerGuid ..", ".. key ..", ".. value ..");")
    else
        result:free()
        return db.executeQuery("UPDATE `player_storage` SET `value` = ".. value .." WHERE `player_id` = ".. playerGuid .." AND `key` = ".. key ..";")
    end
end

function getOfflinePlayerStorageValue(name, key)
    local playerGuid = getPlayerGUIDByName(name)
    if not playerGuid then
        return nil
    end
    local result = db.getResult("SELECT `value` FROM `player_storage` WHERE `player_id` = '".. playerGuid .."' AND `key` = ".. key ..";")
    if result:getID() == -1 then
        return nil
    end
    local ret = result:getDataInt("value")
    result:free()
    return ret
end

function getOfflinePlayerValue(name, value)
    local playerGuid = getPlayerGUIDByName(name)
    if not playerGuid then
        return nil
    end
    local result = db.getResult("SELECT `"..value.."` FROM `players` WHERE `id` = "..playerGuid..";")
    if result:getID() == -1 then
        return nil
    end
    local ret = result:getDataInt(value)
    result:free()
    return ret
end

function isCharacterForSale(name)
    local charPrice = getOfflinePlayerStorageValue(name, price)
    if not charPrice or charPrice < 1 then
        return false
    else
        return true
    end
end
]]></config>
------------------------------------------------------------------------------------
<talkaction words="!character" event="buffer"><![CDATA[
domodlib('market')
local t = string.explode(param, ",")

if t[1] == "sell" then
    if not t[3] or not tonumber(t[3]) or t[4] or tonumber(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name and the price.") return true
    elseif getPlayerAccountId(cid) ~= getAccountIdByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This is not your character.") return true
    elseif isCharacterForSale(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is already for sale.") return true
    elseif getPlayerGUIDByName(t[2]) == getPlayerGUID(cid) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You cannot sell yourself.") return true
    elseif getPlayerByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "The character must be offline to be sold.") return true
    elseif getOfflinePlayerValue(t[2], "level") < level then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Your character can't be sold until it has level "..level..".") return true
    elseif tonumber(t[3]) < min_price then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sorry, but the minimum price for selling a character is "..min_price.." currency units.") return true
    elseif tonumber(t[3]) > max_price then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Sorry, but the maximum price for selling a character is "..max_price.." currency units.") return true
    end

    setOfflinePlayerStorageValue(t[2], price, t[3])
    setOfflinePlayerStorageValue(t[2], owner, getPlayerGUID(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Your character "'..t[2]..'" is now for sale for the price of "'..t[3]..'" currency units.')
elseif t[1] == "buy" then
    if not t[2] then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name.") return true
    elseif not playerExists(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character doesn't exist.") return true
    elseif getPlayerAccountId(cid) == getAccountIdByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You can't buy your own character.") return true
    elseif not isCharacterForSale(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is not for sale.") return true
    elseif not doPlayerRemoveItem(cid, 6535, getOfflinePlayerStorageValue(t[2], price)) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Not enough currency. This character's price is "..getOfflinePlayerStorageValue(t[2], price).." currency units.") return true
    end

    if not getPlayerByGUID(getOfflinePlayerStorageValue(t[2], owner)) then
        doOfflinePlayerAddItem(getPlayerNameByGUID(getOfflinePlayerStorageValue(t[2], owner)), getOfflinePlayerStorageValue(t[2], price), 6535)
        setOfflinePlayerStorageValue(getPlayerNameByGUID(getOfflinePlayerStorageValue(t[2], owner)), 41792, getPlayerGUIDByName(t[2]))
    else
        doPlayerAddItem(getPlayerByGUID(getOfflinePlayerStorageValue(t[2], owner)), 6535, getOfflinePlayerStorageValue(t[2], price))
        doPlayerSendTextMessage(getPlayerByGUID(getOfflinePlayerStorageValue(t[2], owner)), MESSAGE_STATUS_CONSOLE_BLUE, 'Your character "'..t[2]..'" has been sold for the price of '..getOfflinePlayerStorageValue(t[2], price)..' currency units.')
    end
    doTransferCharacter(t[2], getPlayerAccountId(cid))
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You bought the character "'..t[2]..'" for the price of '..getOfflinePlayerStorageValue(t[2], price)..' currency units.')
    setOfflinePlayerStorageValue(t[2], owner, -1)
    setOfflinePlayerStorageValue(t[2], price, -1) return true
elseif t[1] == "remove" then
    if not t[2] then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "Incorrect Params. Specify the character name.") return true
    elseif getPlayerAccountId(cid) ~= getAccountIdByName(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This is not your character.") return true
    elseif not isCharacterForSale(t[2]) then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "This character is not for sale.") return true
    end

    setOfflinePlayerStorageValue(t[2], price, -1)
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'You removed the character "'..t[2]..'" from the Characters Market.') return true
elseif t[1] == "list" then
    local result = db.getResult("SELECT `name` FROM `players`")
    if result:getID() == -1 then
        return true
    end
    local msg = "Characters For Sale:\n\n"
    while true do
        local name = result:getDataString("name")
        if isCharacterForSale(name) then
            local sex = getOfflinePlayerValue(name, "sex") == 1 and "Male" or "Female"
            msg = ""..msg.." - ".. name .." (Level: "..getOfflinePlayerValue(name, "level").." / Vocation: "..getVocationInfo(getOfflinePlayerValue(name, "vocation")).name.." / Sex: "..sex.." / Owner: "..getPlayerNameByGUID(getOfflinePlayerStorageValue(name, owner))..") [Price: "..getOfflinePlayerStorageValue(name, price).."] \n"
        end
        if not result:next() then
            break
        end
    end
    doPlayerPopupFYI(cid, msg) return true
elseif not t[1] or t[1] ~= "buy" or t[1] ~= "sell" or t[1] ~= "remove" or t[1] ~= "list" then
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Incorrect params. You can only 'buy' or 'sell' a character, 'remove' it from the Characters Market or see the 'list' of characters for sale.") return true
end
return true
]]></talkaction>
------------------------------------------------------------------------------------
<event type="login" name="MarketLogin" event="script"><![CDATA[
function onLogin(cid)
domodlib('market')
    if getPlayerStorageValue(cid, price) > 0 then return false
    elseif getPlayerStorageValue(cid, 41792) ~= -1 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "You sold the character "..getPlayerNameByGUID(getPlayerStorageValue(cid, 41792))..". The money is in your bank account.")
        setPlayerStorageValue(cid, 41792, -1)
    end
return true
end
]]></event>
</mod>


 

Mudanças Realizadas

  1. Modificação para usar a moeda com ID 6535: No código doPlayerRemoveItem e doPlayerAddItem ao invés de doPlayerRemoveMoney e doPlayerAddMoney para a transação.
  2. Verificação de parâmetros: Ajuste na verificação e mensagem de erro para refletir a moeda correta.
  3. Configurações mínimas e máximas de preço: Atualização das variáveis min_price e max_price para refletir os valores corretos na nova moeda.

Com essas alterações, o script agora utiliza a moeda com ID 6535 para a compra e permite que os jogadores definam a quantidade desejada ao vender um personagem.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...