Ir para conteúdo
  • Cadastre-se

Posts Recomendados

galera não sei se estou na area correta ja vou me desculpando ai.

 

galera preciso da ajuda de voces, pguei um script de Characters Market System in game mas gostaria de algumas mudanças

pq meu servidor vai ser systema reset gostaria q no script tivesse no characterlist dizendo o lvl skills e quantos resets o char tem, qualquer coisa pode ser outro script tbm que tenha essas coisas e se possivel por pra vender o char ou por kk ou por outra moeda tipo 9971 q uso tbm q é a barra de ouro = gold ingot

 

 

o script q estou usando é em mods

 

Spoiler

<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Characters Market System" version="1.0" author="LuckOake" contact="none" enabled="yes">
------------------------------------------------------------------------------------
<config name="market"><![CDATA[
price = 27112
owner = 27113
level = 30 -- Level mínimo que o character deve ter para ser vendido
min_price = 100 -- Preço mínimo de um character
max_price = 1000000 -- Preço máximo de um character

function doTransferCharacter(cid, accId)
    return db.executeQuery("UPDATE `players` SET `account_id` = "..accId.." WHERE `id` = "..getPlayerGUIDByName(cid).."")
end

function doOfflinePlayerAddMoney(guid, money)
    return db.executeQuery("UPDATE `players` SET `balance` = `balance` + '"..money.."' WHERE `id` = '"..getPlayerGUIDByName(guid).."';")
end

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

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

function getOfflinePlayerValue(name, value)
    local result, ret = db.getResult("SELECT `"..value.."` FROM `players` WHERE `id` = "..getPlayerGUIDByName(name)..";")
    ret = result:getDataInt(value)
    result:free()
    return ret
end

function isCharacterForSale(name)
    if not getOfflinePlayerStorageValue(name, price) or getOfflinePlayerStorageValue(name, price) < 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:\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>

 

E esse é meu sistema de resetar

Spoiler

--[[ SCRIPTING> MarcelloMkez <scriptING ]]

--[[ [Advanced Reset System]
Autor: MarcelloMkez
Versão: 1.0
TFS: 0.3.6
Testado em: 8.50
Fórum: Somente usuários registrados poderão ver os links.

[Características]
~ Versão 1.0 ~

- Resets no Look;
- Premium Account ou não;
- Mudar Vocação;
- Limite de Resets;
- Opções para Abilitar e Desabilitar Condições;

[Em Construção]

- Stages Free e Premium;
- 'Talvez' um novo sistema de mudar Vocação;
sem data para postagem. ]]

function onSay(cid, words, param)

--[Configurações de Condição]__

config = { --[[verdadeiro / Falso]]

needPa = false, -- Precisa de Premium Account? [true / false]
needPz = false, -- Precisa estar em Protection Zone? [true / false]
battle = false, -- Precisa estar sem Batlle para Resetar? [true / false]
withe = false, -- Players PK Withe pode Resetar? [true / false]
red = false, -- Players PK Red pode Resetar? [true / false]
tp = false, -- Teleportar para o Templo após o reset? [true / false]
look = true, -- Mostrar Resets no Look do Player? [true / false]
addLimite = false, -- Abilitar Limite de Resets? [true / false]
setClasse = false, -- Mudar Vocação do player quando resetar? [true / false]
storage = 2310, -- Storage [valor]


--[Configurações do Reset]__

resetStatus = {

player = getPlayerGUID(cid), -- Não Mude.
lvl = 350 , -- Level Necessário para Resetar. [valor]
lvlreset = 8, -- Level que retornará após o Reset. [valor]
limite = 400, -- Máximo de resets que um player pode chegar. [valor]
newClasse = 1, -- Id da Nova Vocação após o Reset. [valor]
tempo= 2 -- Tempo para o Player deslogar para Resetar. Em segundos. [valor]
},
}

--[Funções]__

function Reseting(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function noAll(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
return TRUE
end

function noTeleporting(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
return TRUE
end

function noLook(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
return TRUE
end

function noClasse(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function setClasse(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function look(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function teleporting(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function getResets(cid)
resets = getPlayerStorageValue(cid,config.storage)

if resets < 0 then
resets = 0
end
return resets

end


local resets = getResets(cid)
local needLvl ="Você precisa de "..config.resetStatus.lvl-getPlayerLevel(cid).." level's para resetar."
local msg ="~~[Reset: "..getResets(cid).."]~~ 'Sucesso ao Resetar! Você será deslogado em "..config.resetStatus.tempo.." Segundos."


--[Condiçoes]__

if(config.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
doPlayerSendTextMessage(cid,22,"Você Precisa estar em Protection Zone Para Resetar.")
return TRUE

elseif(config.addLimite == true) and (getResets(cid) == config.resetStatus.limite) then
doPlayerSendTextMessage(cid, 22, "Você ja atingiu o Limite de Resets.")
return TRUE

elseif(config.withe == false) and (getCreatureSkullType(cid) == 3) then
doPlayerSendTextMessage(cid,22,"Você ta PK White, por isso não pode resetar.")
return TRUE

elseif(config.red == false) and (getCreatureSkullType(cid) == 4) then
doPlayerSendTextMessage(cid,22,"Você ta PK Red, por isso não pode resetar.")
return TRUE

elseif(config.needPa == true) and not isPremium(cid) then
doPlayerSendTextMessage(cid,22,"Você Precisa ser Premium Account para Resetar.")
return TRUE

elseif(config.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
doPlayerSendTextMessage(cid,22,"Você Precisa estar sem Battle para Resetar.")
return TRUE

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == true) then
addEvent(Reseting, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == false) then
addEvent(noAll, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == true) then
addEvent(noTeleporting, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == true) then
addEvent(noLook, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == false) then
addEvent(noClasse, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == true) then
addEvent(setClasse, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == false) then
addEvent(look, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == false) then
addEvent(teleporting, config.resetStatus.tempo* 1000, cid)

elseif doPlayerSendCancel(cid, needLvl) then
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
return TRUE
end

if doPlayerPopupFYI(cid, msg) then

end
return TRUE

end

--[By: MarcelloMkez]__ 

 

Editado por Gatinha Pirada (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
14 horas atrás, So volto tarde disse:

Este tópico foi movido para a seção de Suporte Otserv.

como funciona o seu sistema de reset? seria por storage? se sim, por favor, anexe-a aqui

Spoiler

--[[ SCRIPTING> MarcelloMkez <scriptING ]]

--[[ [Advanced Reset System]
Autor: MarcelloMkez
Versão: 1.0
TFS: 0.3.6
Testado em: 8.50
Fórum: Somente usuários registrados poderão ver os links.

[Características]
~ Versão 1.0 ~

- Resets no Look;
- Premium Account ou não;
- Mudar Vocação;
- Limite de Resets;
- Opções para Abilitar e Desabilitar Condições;

[Em Construção]

- Stages Free e Premium;
- 'Talvez' um novo sistema de mudar Vocação;
sem data para postagem. ]]

function onSay(cid, words, param)

--[Configurações de Condição]__

config = { --[[verdadeiro / Falso]]

needPa = false, -- Precisa de Premium Account? [true / false]
needPz = false, -- Precisa estar em Protection Zone? [true / false]
battle = false, -- Precisa estar sem Batlle para Resetar? [true / false]
withe = false, -- Players PK Withe pode Resetar? [true / false]
red = false, -- Players PK Red pode Resetar? [true / false]
tp = false, -- Teleportar para o Templo após o reset? [true / false]
look = true, -- Mostrar Resets no Look do Player? [true / false]
addLimite = false, -- Abilitar Limite de Resets? [true / false]
setClasse = false, -- Mudar Vocação do player quando resetar? [true / false]
storage = 2310, -- Storage [valor]


--[Configurações do Reset]__

resetStatus = {

player = getPlayerGUID(cid), -- Não Mude.
lvl = 350 , -- Level Necessário para Resetar. [valor]
lvlreset = 8, -- Level que retornará após o Reset. [valor]
limite = 400, -- Máximo de resets que um player pode chegar. [valor]
newClasse = 1, -- Id da Nova Vocação após o Reset. [valor]
tempo= 2 -- Tempo para o Player deslogar para Resetar. Em segundos. [valor]
},
}

--[Funções]__

function Reseting(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function noAll(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
return TRUE
end

function noTeleporting(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
return TRUE
end

function noLook(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
return TRUE
end

function noClasse(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function setClasse(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doPlayerSetVocation(cid, config.resetStatus.newClasse)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function look(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = ' [Reset "..resets.."]' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function teleporting(cid)
resets = getResets(cid)
setPlayerStorageValue(cid,config.storage,resets+1)
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doRemoveCreature(cid)
db.executeQuery("UPDATE `players` SET `description` = '' WHERE `players`.`id` = "..config.resetStatus.player)
db.executeQuery("UPDATE `players` SET `level` = "..config.resetStatus.lvlreset..", `experience` = 0 WHERE `id` = "..config.resetStatus.player)
return TRUE
end

function getResets(cid)
resets = getPlayerStorageValue(cid,config.storage)

if resets < 0 then
resets = 0
end
return resets

end


local resets = getResets(cid)
local needLvl ="Você precisa de "..config.resetStatus.lvl-getPlayerLevel(cid).." level's para resetar."
local msg ="~~[Reset: "..getResets(cid).."]~~ 'Sucesso ao Resetar! Você será deslogado em "..config.resetStatus.tempo.." Segundos."


--[Condiçoes]__

if(config.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == FALSE) then
doPlayerSendTextMessage(cid,22,"Você Precisa estar em Protection Zone Para Resetar.")
return TRUE

elseif(config.addLimite == true) and (getResets(cid) == config.resetStatus.limite) then
doPlayerSendTextMessage(cid, 22, "Você ja atingiu o Limite de Resets.")
return TRUE

elseif(config.withe == false) and (getCreatureSkullType(cid) == 3) then
doPlayerSendTextMessage(cid,22,"Você ta PK White, por isso não pode resetar.")
return TRUE

elseif(config.red == false) and (getCreatureSkullType(cid) == 4) then
doPlayerSendTextMessage(cid,22,"Você ta PK Red, por isso não pode resetar.")
return TRUE

elseif(config.needPa == true) and not isPremium(cid) then
doPlayerSendTextMessage(cid,22,"Você Precisa ser Premium Account para Resetar.")
return TRUE

elseif(config.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
doPlayerSendTextMessage(cid,22,"Você Precisa estar sem Battle para Resetar.")
return TRUE

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == true) then
addEvent(Reseting, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == false) then
addEvent(noAll, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == true) then
addEvent(noTeleporting, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == true) then
addEvent(noLook, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == true) and (config.setClasse == false) then
addEvent(noClasse, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == false) and (config.setClasse == true) then
addEvent(setClasse, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == false) and (config.look == true) and (config.setClasse == false) then
addEvent(look, config.resetStatus.tempo* 1000, cid)

elseif getPlayerLevel(cid) >= config.resetStatus.lvl and (config.tp == true) and (config.look == false) and (config.setClasse == false) then
addEvent(teleporting, config.resetStatus.tempo* 1000, cid)

elseif doPlayerSendCancel(cid, needLvl) then
doSendMagicEffect(getPlayerPosition(cid), CONST_ME_POFF)
return TRUE
end

if doPlayerPopupFYI(cid, msg) then

end
return TRUE

end

--[By: MarcelloMkez]__ 

 

 

 

Eu uso esse sistema de resetar

 

Link para o post
Compartilhar em outros sites

Acredito que se por essa modificação na linha do doPlayerPopupFYI ja aparecerá os resets

 

 

msg = ""..msg.." - ".. name .." (Level: "..getOfflinePlayerValue(name, "level").." / Vocation: "..getVocationInfo(getOfflinePlayerValue(name, "vocation")).name.." / Sex: "..sex.." / Reset: "..getOfflinePlayerStorageValue(name,2310).." / Owner: "..getPlayerNameByGUID(getOfflinePlayerStorageValue(name, owner))..") [Price: "..getOfflinePlayerStorageValue(name, price).."] \n"

 

Editado por Jepart (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
33 minutos atrás, Jepart disse:

A sua contagem de reset é por onde?
No própria tabela player existe uma coluna reset?

A contagem é pelo script q  tá aí em cima

Link para o post
Compartilhar em outros sites
16 horas atrás, Jepart disse:

Acredito que se por essa modificação na linha do doPlayerPopupFYI ja aparecerá os resets

 

 


msg = ""..msg.." - ".. name .." (Level: "..getOfflinePlayerValue(name, "level").." / Vocation: "..getVocationInfo(getOfflinePlayerValue(name, "vocation")).name.." / Sex: "..sex.." / Reset: "..getOfflinePlayerStorageValue(name,2310).." / Owner: "..getPlayerNameByGUID(getOfflinePlayerStorageValue(name, owner))..") [Price: "..getOfflinePlayerStorageValue(name, price).."] \n"

 

Tem como você enviar com a modificação completa? pfv, pq eu sou leigo ?

Link para o post
Compartilhar em outros sites
Em 12/10/2021 em 03:11, Gatinha Pirada disse:

Tem como você enviar com a modificação completa? pfv, pq eu sou leigo ?

 

<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Characters Market System" version="1.0" author="LuckOake" contact="none" enabled="yes">
------------------------------------------------------------------------------------
<config name="market"><![CDATA[
price = 27112
owner = 27113
level = 30 -- Level mínimo que o character deve ter para ser vendido
min_price = 100 -- Preço mínimo de um character
max_price = 1000000 -- Preço máximo de um character

function doTransferCharacter(cid, accId)
    return db.executeQuery("UPDATE `players` SET `account_id` = "..accId.." WHERE `id` = "..getPlayerGUIDByName(cid).."")
end

function doOfflinePlayerAddMoney(guid, money)
    return db.executeQuery("UPDATE `players` SET `balance` = `balance` + '"..money.."' WHERE `id` = '"..getPlayerGUIDByName(guid).."';")
end

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

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

function getOfflinePlayerValue(name, value)
    local result, ret = db.getResult("SELECT `"..value.."` FROM `players` WHERE `id` = "..getPlayerGUIDByName(name)..";")
    ret = result:getDataInt(value)
    result:free()
    return ret
end

function isCharacterForSale(name)
    if not getOfflinePlayerStorageValue(name, price) or getOfflinePlayerStorageValue(name, price) < 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:\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.." / Reset: "..getOfflinePlayerStorageValue(name,2310).." / 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>


Alteração foi na linha 126 na variável msg

Link para o post
Compartilhar em outros sites
7 horas atrás, Jepart disse:

 





<?xml version="1.0" encoding="UTF-8"?>  
<mod name="Characters Market System" version="1.0" author="LuckOake" contact="none" enabled="yes">
------------------------------------------------------------------------------------
<config name="market"><![CDATA[
price = 27112
owner = 27113
level = 30 -- Level mínimo que o character deve ter para ser vendido
min_price = 100 -- Preço mínimo de um character
max_price = 1000000 -- Preço máximo de um character

function doTransferCharacter(cid, accId)
    return db.executeQuery("UPDATE `players` SET `account_id` = "..accId.." WHERE `id` = "..getPlayerGUIDByName(cid).."")
end

function doOfflinePlayerAddMoney(guid, money)
    return db.executeQuery("UPDATE `players` SET `balance` = `balance` + '"..money.."' WHERE `id` = '"..getPlayerGUIDByName(guid).."';")
end

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

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

function getOfflinePlayerValue(name, value)
    local result, ret = db.getResult("SELECT `"..value.."` FROM `players` WHERE `id` = "..getPlayerGUIDByName(name)..";")
    ret = result:getDataInt(value)
    result:free()
    return ret
end

function isCharacterForSale(name)
    if not getOfflinePlayerStorageValue(name, price) or getOfflinePlayerStorageValue(name, price) < 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:\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.." / Reset: "..getOfflinePlayerStorageValue(name,2310).." / 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>


Alteração foi na linha 126 na variável msg

nice apareceu os resets mas tipo tem como por os skills tbm? e remover o nome do dono do char pq aparece o nome do char q vai ser vendido isso ta certo, e tbm ta aparecendo o outro char que colocou o char pra vender 

 

e eu mudei meu sistema reset pq tava bugado e agora o character market system parou de funcionar

 

meu sistema de reset novo 

Spoiler

--[[ <(Advanced Reset System 2.0)>

           Autor: MarcelloMkez. Contato: ([email protected])
           Versão: 2.0
           Testado em: 8.50 e 8.60
           TFS: 0.3.6 and 0.4.0
           Fórum: http://www.xtibia.com/forum/topic/142463-advanced-reset-system-20/

       -=[Características]=-
        ~( Versão 2.0 )~

       - Resets agora Armazenados na DataBase; (Sem Valor de Storage)
       - Instala o System e cria a Tabela de Resets com o comando "/installreset";
       - Resets no Look do jogador ex: 22:10 You see Marcello [Reset 2] (Level 8). He is an elder druid.;
       - [sTAGES] para "Premium Account" e "Free Account";  ]] 

--=[Functions]=--

-- installReset()'                    [instala o Sistema.]
-- tableResetInstall()'               [Verifica Se o Sistema ja foi instaladao.]
-- nowReseting()'                     [Verifica, retorna o erro ou reseta.]
-- getPlayerReset(cid)'               [Pega numero de resets do player.]
-- checLevelStageReset(cid)'          [Verifica o Level para Resetar.]
-- newReset(cid)'                     [Verifica todas as Condições de Reset.]
-- addValue(value)'                   [Adiciona numero de resets.]

--=[Comandos de Jogadores]=--
--  "/installreset"   -- Só será usado uma vez, para instalar o sistema.
--  "!resetar"        -- Para Resetar.

function onSay(cid, words, param)

            if words =="!resetar" then

--[ Condições de Reset ] --
local coNdConf = {

needPz = true,                  -- Precisa estar em Pz pra resetar?               [true, false]
needPa = false,                 -- Precisa ser Premium Account Pra resetar?       [true, false]
withe = false,                  -- Players com Pk Withe podem resetar?            [true, false]
red = true,                    -- Players com Pk Red pode resetar?               [true, false]
battle = false,                 -- Players precisão estar sem battle pra resetar? [true, false]
teleport = false,                -- Teleportar Player para o templo após resetar?  [true, false]
look = true,                   -- Aparecer Resets no Look do Player?             [true, false]
pid = getPlayerGUID(cid),       -- Não Mexer.


--[ Configurações do Reset ] --
resetConf = {

Level = 350,                    -- Level Necessário para Resetar.                         [Valor]
backLvl = 8,                    -- Level que voltará após o Reset.                        [Valor]
time = 1,                       -- Tempo para o Player deslogar ao resetar, em segundos.  [Valor]

  },
}
          --[[>> STAGES <<]]--
x=true;X=true -- Não Mexer.
local stage = {Abilitar = {x}, Desabilitar = {},     --<< Abilitar Stages?? >>--            [{x};{}]

--      [RESETS]    |  [PREMMY]  |   [FREE]
 stage1= {resets= 4,  premmy= 330, free= 350},
 stage2= {resets= 9,  premmy= 340, free= 355},     -- EXPLICANDO e Configurando stages. (Se estiver Abilitado [Abilitar = {x}])
 stage3= {resets= 14, premmy= 355, free= 360},     -- resets = Número de resets para o Stage;
 stage4= {resets= 19, premmy= 360, free= 365},     -- premmy = Level necessário para Premium Accounts;
 stage5= {resets= 24, premmy= 370, free= 380},     -- free    = Level necessário para Free Accounts;
 stage6= {resets= 29, premmy= 380, free= 390},       -- Coloque em Ordem...
 stage7= {resets= 35, premmy= 400, free= 410},     -- [OBS: MARQUE UM "X" PARA ABILITAR OU DESABILITAR OS STAGES]
 stage8= {resets= 40, premmy= 410, free= 440},     -- EX: para desabilitar mude: Abilitar = {}, Desabilitar = {x}
 stage9= {resets= 45, premmy= 450, free= 450},
 stage10={resets= 50, premmy= 465, free= 465},
 stage11={resets= 55, premmy= 535, free= 535},
 stage12={resets= 60, premmy= 565, free= 565},
 stage13={resets= 65, premmy= 655, free= 655},
 stage14={resets= 70, premmy= 705, free= 705},
 stage15={resets= 75, premmy= 765, free= 765},
 stage16={resets= 80, premmy= 825, free= 825},
 stage17={resets= 85, premmy= 865, free= 865},
 stage18={resets= 90, premmy= 935, free= 935},
 stage19={resets= 95, premmy= 975, free= 975},
 stage20={resets= 100, premmy= 1005, free= 1005},
 stage21={resets= 105, premmy= 1015, free= 1015},
 stage22={resets= 110, premmy= 1035, free= 1035},
 stage23={resets= 115, premmy= 1055, free= 1055},

}
        --[[>> FIM STAGES <<]]--

--=[Pega Valor de Resets]=--
function getPlayerReset(cid)
local qr = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";")
rss = qr:getDataInt("reset", coNdConf.pid)
if rss < 0 then
rss = 0
end
return rss
end

local success = "                   ~~ Sucesso! ~~ \nVocê tem agora "..(getPlayerReset(cid)+1).." resets. \nVocê será deslogado em "..coNdConf.resetConf.time.." segundos." ;err = doPlayerSendTextMessage
local qrt = db.getResult("SELECT `reset` FROM `players` WHERE `id`= "..coNdConf.pid..";");rss_db = qrt:getDataInt("reset", coNdConf.pid)
local lvl_query = "UPDATE `players` SET `level` = "..(coNdConf.resetConf.backLvl)..", `experience` = 0 WHERE `id`= " .. coNdConf.pid .. ";"
local reset_query = "UPDATE `players` SET `reset` = "..(getPlayerReset(cid)+(1)).." WHERE `id`= " .. coNdConf.pid .. ";"
local nolook_query = "UPDATE `players` SET `description` = '' WHERE `players`.`id`= " .. coNdConf.pid .. ";"
local look_query = "UPDATE `players` SET `description` = ' [Reset "..(getPlayerReset(cid)+(1)).."]' WHERE `players`.`id`= " .. coNdConf.pid .. ";"

--=[Reseta]=--
function addValue(value)
if coNdConf.look == false then
  doRemoveCreature(cid)
 db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(nolook_query)
else
  doRemoveCreature(cid)
   db.executeQuery(lvl_query);db.executeQuery(reset_query);db.executeQuery(look_query)
  return LUA_NO_ERROR
 end
end

function nowReseting()
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -")
  return true
end
if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
      doPlayerPopupFYI(cid, success)
      addEvent(addValue, coNdConf.resetConf.time*1000, value)
    else
      doPlayerPopupFYI(cid, success)
      addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid)))
      addEvent(addValue, coNdConf.resetConf.time*1000, value)
  return true
 end
end

--[sTAGES Nao mexer em nada.]--
function checkLevelStageReset(cid)

local stages = {
    {resets= stage.stage1.resets, premmy= stage.stage1.premmy, free= stage.stage1.free},
    {resets= stage.stage2.resets, premmy= stage.stage2.premmy, free= stage.stage2.free},
    {resets= stage.stage3.resets, premmy= stage.stage3.premmy, free= stage.stage3.free},
    {resets= stage.stage4.resets, premmy= stage.stage4.premmy, free= stage.stage4.free},
    {resets= stage.stage5.resets, premmy= stage.stage5.premmy, free= stage.stage5.free},
    {resets= stage.stage6.resets, premmy= stage.stage6.premmy, free= stage.stage6.free},
    {resets= stage.stage7.resets, premmy= stage.stage7.premmy, free= stage.stage7.free},
    {resets= stage.stage8.resets, premmy= stage.stage8.premmy, free= stage.stage8.free},
    {resets= stage.stage9.resets, premmy= stage.stage9.premmy, free= stage.stage9.free},
    {resets=stage.stage10.resets, premmy=stage.stage10.premmy, free=stage.stage10.free},
    {resets=stage.stage11.resets, premmy=stage.stage11.premmy, free=stage.stage11.free},
    {resets=stage.stage12.resets, premmy=stage.stage12.premmy, free=stage.stage12.free},
    {resets=stage.stage13.resets, premmy=stage.stage13.premmy, free=stage.stage13.free},
    {resets=stage.stage14.resets, premmy=stage.stage14.premmy, free=stage.stage14.free},
    {resets=stage.stage15.resets, premmy=stage.stage15.premmy, free=stage.stage15.free},
    {resets=stage.stage16.resets, premmy=stage.stage16.premmy, free=stage.stage16.free},
    {resets=stage.stage17.resets, premmy=stage.stage17.premmy, free=stage.stage17.free},
    {resets=stage.stage18.resets, premmy=stage.stage18.premmy, free=stage.stage18.free},
    {resets=stage.stage19.resets, premmy=stage.stage19.premmy, free=stage.stage19.free},
    {resets=stage.stage20.resets, premmy=stage.stage20.premmy, free=stage.stage20.free},   
    {resets=stage.stage21.resets, premmy=stage.stage21.premmy, free=stage.stage21.free},
    {resets=stage.stage22.resets, premmy=stage.stage22.premmy, free=stage.stage22.free},
    {resets=stage.stage23.resets, premmy=stage.stage23.premmy, free=stage.stage23.free},
}
    local resets = getPlayerReset(cid)
        for i, tab in ipairs(stages) do
            if resets <= tab.resets then
                coNdConf.resetConf.Level = isPremium(cid) and tab.premmy or tab.free
                break
            end
        end
if (getPlayerLevel(cid) < coNdConf.resetConf.Level) then
err(cid, MESSAGE_STATUS_CONSOLE_BLUE, "- Level Necessário Para o Reset ["..coNdConf.resetConf.Level.."]. Faltam "..coNdConf.resetConf.Level-getPlayerLevel(cid).." level's para você Resetar. -")
return TRUE
end

  if getPlayerLevel(cid) >= coNdConf.resetConf.Level and (coNdConf.teleport == false) then
     doPlayerPopupFYI(cid, success)
     addEvent(addValue, coNdConf.resetConf.time*1000, value)
   else
   doPlayerPopupFYI(cid, success)
   addEvent(addValue, coNdConf.resetConf.time*1000, value)
   addEvent(doTeleportThing, coNdConf.resetConf.time*900, cid, getTownTemplePosition(getPlayerTown(cid)))
    return true
  end
end
    function newReset(cid)
    if(coNdConf.needPz == true) and (getTilePzInfo(getCreaturePosition(cid)) == LUA_ERROR) then
     err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar em Protection Zone Para Resetar. -") return TRUE end
    if(coNdConf.needPa == true) and not isPremium(cid) then
     err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa ser Premium Account para Resetar. -") return TRUE end
    if(coNdConf.withe == false) and (getCreatureSkullType(cid) == 3) then
     err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Withe. -") return TRUE end
    if(coNdConf.red == false) and (getCreatureSkullType(cid) == 4) then
     err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você não pode resetar em condições de PK Red. -") return TRUE end
    if(coNdConf.battle == true) and (getCreatureCondition(cid, CONDITION_INFIGHT) == TRUE) then
     err(cid,MESSAGE_STATUS_CONSOLE_BLUE,"- Você Precisa estar sem Battle para Resetar. -") return TRUE end

local xy = {true,false}
table.insert(stage.Abilitar, false)
table.insert(stage.Desabilitar, false)
if stage.Abilitar[1] == xy[1] and stage.Desabilitar[1] == xy[2] then
checkLevelStageReset(cid)
elseif stage.Abilitar[1] == xy[2] and stage.Desabilitar[1] == xy[1] then
nowReseting()
else
doPlayerPopupFYI(cid, "LUA_ERROR; Configure corretamente o Sistema de STAGES!")
end
return true
end
    function tableResetInstall()
     print(not rss_db  and LUA_ERROR or "Tabela de Resets: Instalada ... [success] ")
     addEvent(newReset, 1000, cid)
     return false
     end
    if tableResetInstall() then
  end
end
    --=[install System]=--
       function installReset()
        if db.executeQuery("ALTER TABLE `players` ADD reset INT(11) NOT NULL DEFAULT 0;") then
                print("[MarcelloMkez] -= Advanced Reset System 2.0 por DataBase =- Instalado com sucesso!")
                return TRUE
        end
        print('[Advanced Reset System/MarcelloMkez] Não foi possível instalar o Sistema.')
        return FALSE
     end
        local tt = {
           "Preparando Instalação...",
           "Instalando: TableReset Db...",
           "Instalando: getPlayerReset()...",
           "Instalando: addValue()...",
           "Instalando: checkLevelStageReset()...",
           "Instalando: newReset() and nowReseting()...",
           "Finalizando Instalação...",
           "...",
           success = {
           "Iniciando...",
           "function: TableReset Db...    [success]",
           "function: getPlayerReset()...    [success]",
           "function: addValue(value)...       [success]",
           "function: checkLevelStageReset()... [success]",
           "function: newReset() and nowReseting()...     [success]",
           "Fim da Instalação.  ",
           "by: ~~ MarcelloMkez ~~              \nContato: [email protected]",
           inst = {"MarcelloMkez","Advanced Reset System 2.0 por DataBase"

           },

         },

        }
     if words == "/installreset" and getPlayerAccess(cid) >= 3 then
            function install()
            if installReset() then
                print(""..tt.success[7].."")
                   doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE,""..tt.success[8].."")
                doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] -="..tt.success.inst[2].."=- Instalado com sucesso!")
           else
                print("["..tt.success.inst[1].."]  FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].")
                  doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "["..tt.success.inst[1].."] FALHA NA INSTALAÇÃO! [O sistema ja foi instalado].")
            end
            return 1
        end
          function concl(cid)
            local typetx = MESSAGE_STATUS_CONSOLE_BLUE
                print(""..tt.success[7].."")
                 print(""..tt[8].."")
                doPlayerSendTextMessage(cid, typetx,""..tt.success[7].."")
                doPlayerSendTextMessage(cid, typetx,""..tt[8].."")
                addEvent(install, 1000,cid)
            end
            function finall(cid)
                local typetx = MESSAGE_STATUS_CONSOLE_BLUE
                print(""..tt.success[6].."")
                print(""..tt[7].."")
                doPlayerSendTextMessage(cid, typetx,""..tt.success[6].."")
                doPlayerSendTextMessage(cid, typetx,""..tt[7].."")
                addEvent(concl, 3000,cid)
            end
             function installDd(cid)
               local typetx = MESSAGE_STATUS_CONSOLE_BLUE
                print(""..tt.success[5].."")
                print(""..tt[6].."")
                doPlayerSendTextMessage(cid, typetx,""..tt.success[5].."")
                doPlayerSendTextMessage(cid, typetx,""..tt[6].."")
                addEvent(finall, 1000,cid)
            end
            function installCc(cid)
               local typetx = MESSAGE_STATUS_CONSOLE_BLUE
                print(""..tt.success[4].."")
                print(""..tt[5].."")
                doPlayerSendTextMessage(cid, typetx,""..tt.success[4].."")
                doPlayerSendTextMessage(cid, typetx,""..tt[5].."")
              addEvent(installDd, 1000,cid)
            end
            function installBb(cid)
               local typetx = MESSAGE_STATUS_CONSOLE_BLUE
                print(""..tt.success[3].."")
                print(""..tt[4].."")
                doPlayerSendTextMessage(cid, typetx,""..tt.success[3].."")
              doPlayerSendTextMessage(cid, typetx,""..tt[4].."")
            addEvent(installCc, 1000,cid)
            end
            function installAa(cid)
              local typetx = MESSAGE_STATUS_CONSOLE_BLUE
                print(""..tt.success[2].."")
                print(""..tt[3].."")
                doPlayerSendTextMessage(cid, typetx,""..tt.success[2].."")
                doPlayerSendTextMessage(cid, typetx,""..tt[3].."")
                addEvent(installBb, 1000,cid)
            end
            function toInstall()
              local typetx = MESSAGE_STATUS_CONSOLE_BLUE
                print(""..tt.success[1].."")
                print(""..tt[2].."")
                doPlayerSendTextMessage(cid, typetx,""..tt.success[1].."")
                doPlayerSendTextMessage(cid, typetx,""..tt[2].."")
               addEvent(installAa, 1000,cid)
              end
            function preparation()
              local typetx = MESSAGE_STATUS_CONSOLE_BLUE
               print(""..tt[1].."")
             doPlayerSendTextMessage(cid, typetx,""..tt[1].."")
            addEvent(toInstall, 3000,cid)
        end
            if preparation() then
            end
        end
return 1
end
--=[by: MarcelloMkez]=-- 

 

Editado por Gatinha Pirada (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por braianlomas
      Como faço para corrigir esse problema para meu cliente, eu uso o tfs 0.3.6  
      Quero resolver esse problema que tenho no meu cliente, como e onde posso resolver?  
      Eu uso o tfs 0.3.6, não tenho as fontes do cliente, se você puder me dar eu vou amá-las para sempre  
       

       
    • Por A.Mokk
      Ola pessoal, estou tentando compilar o TFS 1.5 Downgrade para 8.60 atraves do MSVC 2022, ao tentar compilar da o seguinte erro:
       
       
      Fiz o download do MSVC, GitDash, TFS-SDK-3.2, e de varios boosts que tentei, ao fazer o seguinte procedimento no GitDash:
       
      Ao chegar em ./bootstrap-vcpkg.bat o GitDash nao consegue realizar o procedimento corretamente, alguem poderia me ajudar ?

      Tentei de diversas formas mas o mesmo erro sempre persiste, atualmente meu servidor utiliza TFS 0.4, consigo compilar sem nenhum problema no MSVC 2010, porem, as limitações do TFS 0.4 estão me fazendo precisar atualizar, se alguem souber como corrigir esses erros eu agradeço !

      Tutoriais utilizados :
      Compiling on Windows (vcpkg) · otland/forgottenserver Wiki · GitHub
      Compiling on Windows · otland/forgottenserver Wiki · GitHub
      Compilando TFS 1.3 com vídeo-aula - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
      Compilar TFS 1.3 Vcpkg - Tutoriais Infraestrutura & Proteção - Tibia King - Tudo sobre Tibia, OTServ e Bots!
       
      O que acontece no Powershell:
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      Canary 2.3.6
      Qual o motivo deste tópico? 
      Queria fazer com que os players não pudessem mexer no aleta sio, pois, agora os mesmos estão conseguindo mexer nos itens
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por thunmin
      .Qual servidor ou website você utiliza como base? 
      canary para o cliente 13.16
      Qual o motivo deste tópico? 
      Não consigo encontrar onde ajusta
      to com o problema no 13.16  o exausted, por exemplo os kinas era pra combar exori, erori gran e exori min, porém não ta indo ta dando exausted o char ta soltando magia ou runa e não consegue usar as potions
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
    • Por Andersontatuador
      Olá galera da TK, me chamo Anderson estou procurando alguém profissional em otservs e site.
      Já tenho um servidor o site e o cliente preciso só de uma pessoal competente, que esteja empenhado a trabalhar,
      não quero nada de graça, pois nessa onda fui mais roubado do quer eu pagar um profissional.
      caso alguém se interesse entrar em contato comigo através do whatsapp
      82 9 9304-9462
       
      Está surgindo algum erro? Se sim coloque-o aqui. 
       
      Você tem o código disponível? Se tiver publique-o aqui: 
         
      Você tem alguma imagem que possa auxiliar no problema? Se sim, coloque-a aqui. 
       
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo