Ir para conteúdo
  • 0

Leilao System 8.6


Subhe

Pergunta

Boa noite pessoal, não sei se estou na area correta, mas se não estiver, peço que movam

 

bom gente eu queria que alguem configura-se o meu script de leilão ou posta-se um pronto

 

é o seguinte, quero que o meu system cancele o leilão, por que ele da uns bugs as vezes, e nao acaba o leilão, ai queria um script pra cancelar ele, quando acontecer isso

 

vou postar aqui o meu script feito por Skymagnum

 

 

function onSay(cid, words, param)

config = {
acess = 4,
time = 5,
storage = {25601,25602,650213}
}
function getWinnerLeilao()
local w = tostring(getGlobalStorageValue(config.storage[1])):gsub(':', ''):explode(',')
if not getPlayerByNameWildcard(w[4]) then
local item = doCreateItemEx(w[1]-1, w[2])
local x = doItemSetAttribute(item, "description", "Item comprado em leilão por "..w[3].." gps.")
doPlayerSendMailByName(w[4], item)
else
local x = doPlayerAddItem(getPlayerByNameWildcard(w[4]), w[1], w[2])
doItemSetAttribute(x, "description", "Item comprado em leilão por "..w[3].." gps.")
end
doBroadcastMessage("O item ["..getItemNameById(w[1]).." : "..w[2].."] Foi vendido para o jogador "..w[4].." por "..w[3].." gps!")
setGlobalStorageValue(config.storage[1],-1)
setGlobalStorageValue(config.storage[2],-1)
for _, pid in pairs(getPlayersOnline()) do
setPlayerStorageValue(pid, config.storage[3], -1)
end
return db.executeQuery("DELETE FROM `player_storage` WHERE `key` = "..config.storage[3])
end
if words == "/leilao" then
if getPlayerAccess(cid) < config.acess then
doPlayerSendTextMessage(cid, 28, "Você não pode executar essa ação.") return true
end
local t = string.explode(param, ",")
if not tonumber(getGlobalStorageValue(config.storage[1])) then
doPlayerSendTextMessage(cid, 27, "Já há um leilão ativo no momento.") return true
elseif not tonumber(t[1]) or not tonumber(t[2]) or not tonumber(t[3]) then
doPlayerSendTextMessage(cid, 28, "Faltou parametro.")return true
elseif not isItemMovable(t[1]) then
doPlayerSendTextMessage(cid, 28, "Você não pode adicionar esse item no leilão.")return true
end
setGlobalStorageValue(config.storage[1], ":"..t[1]..",:"..(isItemStackable(t[1]) and t[2] or 1)..",:"..t[3]..",:"..getCreatureName(cid))
setGlobalStorageValue(config.storage[2], os.time()+ config.time*60)
doBroadcastMessage("[Leilão] O item ["..getItemNameById(t[1]).." : "..(isItemStackable(t[1]) and t[2] or 1).."] Está em leilão até "..os.date("%X ", getGlobalStorageValue(config.storage[2])).."\nLance Minimo: "..t[3].." gps.")
addEvent(getWinnerLeilao, config.time*1000*60)
elseif words == "!lance" then
if tonumber(getGlobalStorageValue(config.storage[1])) then
doPlayerSendTextMessage(cid, 27, "Não tem nenhum leilão ativo no momento.") return true
end
local s = tostring(getGlobalStorageValue(config.storage[1])):gsub(':', ''):explode(',')
if param == "lista" then
doShowTextDialog(cid,s[1], "Item: "..getItemNameById(s[1]).."\n\nQuantidade: "..s[2].."\n\nMaior lance atual: "..s[3].."\n\nJogador: "..s[4].."\n\nPrazo Final: "..os.date("%X ", getGlobalStorageValue(config.storage[2]))) return true
elseif not tonumber(param) or tonumber(param) <= 0 or tonumber(param) > 9999999 then
doPlayerSendTextMessage(cid, 28, "digite um número válido.") return true
end
local li = getPlayerStorageValue(cid, config.storage[3]) < 0 and 0 or getPlayerStorageValue(cid, config.storage[3])
local conta = (li + tonumber(param))
if conta <= tonumber(s[3]) then
doPlayerSendTextMessage(cid, 28, "você tem que dar um lance maior que "..s[3].." gps") return true
elseif not doPlayerRemoveMoney(cid, tonumber(param)) then
doPlayerSendTextMessage(cid, 28, "você não tem gps suficientes para dar um lance") return true
end
setPlayerStorageValue(cid, config.storage[3], conta)
setGlobalStorageValue(config.storage[1], ":"..s[1]..",:"..s[2]..",:"..conta..",:"..getCreatureName(cid))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns, agora você deu o maior lance de "..conta.." gps no item [Nome: "..getItemNameById(s[1]).."] [Count: "..s[2].."]")
end
return true
end

 

 

Desde já agradeço

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0

Como assim bug, explique melhor.

eu mudei o tempo do leilão

Botei em 30 minutos

Passou 1 hora e nao acabou o leilão

ai então resolvi deixar do jeito que estava, 5 Minutos

mas mesmo assim ele nao fecha, o leilão está la a 3 hrs já, e nao fecha :/

o que posso fazeR ? tem algum jeito de cancelar ele ? já tentei tirar ele do ot e dps botar de novo, mas nao sai

tem como botar algum comando para cancelar ele ?

Editado por Subhe
Link para o comentário
Compartilhar em outros sites

  • 0

ele tava funcionando...

eu botei um item no leilão ai, eu resolvi mudar o tempo do leilão, depois que eu já tinha colokado o item no leilao, e agora ele nao sai mais de la

nao sei o que fazer mano, me ajuda ai, como faço pra tirar ele do leilão

o script tava funcionando de boah, eu só fui mudar o tempo e bugou :/

se puder criar uma função pra cancelar, ficaria muito grato

Editado por Subhe
Link para o comentário
Compartilhar em outros sites

  • 0

Qual tempo você colocou.

foi assim.. eu colokei um golden helmet no leilao, 5 minutos... ai niguem comprou ele por causa que nao deu tempo de chegar no dp...

ai eu fui botar o golden helmet de novo no leilão, 5 minutos novamente, só que no meio do leilao, eu fui mudar o tempo dele. botei 30 minutos e dei reload no server (/reload talkactions), ai passou os 30 minutos e nada de acabar...

ai eu resolvi colokar de novo os 5 minutos, dei (/reload talkactions) de novo.. e o golden helmet ainda estava no leilão, e já faz 1 dia que tá la, e num sai,

eu botei os 5 minutos novamente la.. mas nao sai de jeito nenhum :/

 

eu mudei o tempo dps que já tinha colokado o leilao, acho que por isso deu esse bug

tem como vc me ajudar nisso irmão ? typo, fazer uma comando que cancele o leilao, ou tem algum jeito de excluir o sctipt do registro do ot, para que eu possa botar ele de novo, sem o bug ?

 

Desde já Agradeço

 

 

Edit: antes de eu mudar o tempo dele, ele tava funcionando normalmente !

Editado por Subhe
Link para o comentário
Compartilhar em outros sites

  • 0

Cara, você não pode mudar enquanto há um leilão ainda.

 

 

function onSay(cid, words, param, channel)
 
    for _, players in ipairs(getPlayersOnline()) do
        setPlayerStorageValue(players, 650213, -1)
    end
    db.executeQuery("DELETE FROM `player_storage` WHERE `key` = 650213;")
    setGlobalStorageValue(25601, -1)
    setGlobalStorageValue(25602, -1)
    doPlayerSendTextMessage(cid, 27, "Leilão cancelado.")
    
    return true
end
Link para o comentário
Compartilhar em outros sites

  • 0

 

Cara, você não pode mudar enquanto há um leilão ainda.

function onSay(cid, words, param, channel)
 
    for _, players in ipairs(getPlayersOnline()) do
        setPlayerStorageValue(players, 650213, -1)
    end
    db.executeQuery("DELETE FROM `player_storage` WHERE `key` = 650213;")
    setGlobalStorageValue(25601, -1)
    setGlobalStorageValue(25602, -1)
    doPlayerSendTextMessage(cid, 27, "Leilão cancelado.")
    
    return true
end

eu não sabia disso :/

desculpa a minha ignorancia, é que só novo com sctipt, a ond eu coloko esse script ai ? precisa de alguma tag ?

Editado por Subhe
Link para o comentário
Compartilhar em outros sites

  • 0

Sim, precisa, você coloca em data/talkactions/scripts, a tag peg a ado leilao muda as palavras e o nome do arquivo

Manoo, muito obrigadoo mesmo, funcionou aqui :D

 

só mais uma perguntinha..

eu posso botar o tempo que eu quizer no leilao ? (antes de botar o item no leilao neeh ?)

e se eu quizer botar pra ser 30 minutos, eu boto 30 la neeh ??

 

já ganhou 2 Rep+ pelo script

amanhã ganhará mais 2 por ter me ajudado ><'

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...