Sistema de Leilão ! 100% Funcional

Alemaooxd
em Actions e Talkactions

Alemaooxd

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/03/13Posts: 40Char no Tibia: [ADM] BBSZ

Com esse sistema o GOD poderá leiloar um item e assim da uma otima diversão para os players do seu server!

Usando o comando /leilao id do item, quantidade, lance minimo ex: /leilao 2494 "demon armor", 1, 30000 !

 

Passo a Passo:

 

1º Vá em Data/talkactions/scripts e crie um arquivo leilao.lua e cole isso dentro dele:

 

 

 

 

-- By: Alemaooxd

 

function onSay(cid, words, param)

config = {

acess = 5,

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

 

 

 

 

2º Agora vá em Data/talkactions/talkactions.xml e adicione essa tag:

 

 

<talkaction words="/leilao;!lance" script="leilao.lua"/>

 

 

Test:

 

 

1S1cU.png

God usou o comando /leilao 2494,1,30000

---------------------------------------------

40yLm.png

O jogador Devil deu um lance 400000 gps, no caso maior lance

-----------

wonLc.png

Comando !lance lista

---------------

JoCnK.png

Depois de "X" minutos quem der o maior lance leva o item.

----------

rQDjX.png

Item com sua descrição

 

 

 

 

 

Créditos:

Alemaooxd

Skymagnum

Vodkart

 

OBS.:

Pode ser que alguns itens dê debug quando você usar o comandos "!lance lista" para ver quem está comprando o item no exato momento...

E mais uma coisa, lembrem-se que quando você vai dar um lance o dinheiro é descontado na mesma hora, para não acontecer de alguem arrematar o item e não ter o dinheiro para pagar, resumindo se você der um lance de 10k e outro player vier e der um lance maior, quando você for dar outro lance será descontado tudo denovo, ou seja, os primeiros 10k que você der de lance é dado como perdido! Espero que tenham entendido! Abraços

 

 

Se te ajudei da um "Rep +" Não dói não Dr. :D

BrunooMaciell

Bruno Maciel
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 27/08/11Posts: 1919Gênero: MasculinoChar no Tibia: Bruno Maciel

Este systema pega em poketibia - pda ??

Alemaooxd

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 02/03/13Posts: 40Char no Tibia: [ADM] BBSZ

Este systema pega em poketibia - pda ??

 

Acredito que sim... afinal, é um sistema que não usa dados que não tenha em ambos clients!

BrunooMaciell

Bruno Maciel
avatar
Infante
Infante

INFOS

Grupo: InfanteRegistrado: 27/08/11Posts: 1919Gênero: MasculinoChar no Tibia: Bruno Maciel

Opa !!

 

Rep+ ^^

victorgod

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 19/10/11Posts: 77Char no Tibia: nao tenho

deu esse erro a hora que eu clico para add char ao leilao Invalid subtopic. Can't load page.

henriqueberro

avatar
Campones
Campones

INFOS

Grupo: CamponesRegistrado: 23/07/13Posts: 25

bom, mas dar um leilão com um valor maior que o anterior sem receber o dinheiro de volta é sacanagem, bem hardcore, hahaha, obrigado pelo script.

3a61.png 3xjo.png

Skype: gpingulim

E-mail: rafaelhenriqee@live.com

Skymagnum

Hamburguer
avatar
Marquês
Marquês

INFOS

Grupo: MarquêsRegistrado: 02/08/12Posts: 1025Char no Tibia: Maurolkit

Tópico fechado.

 

Eu já postei esse sistema aqui no fórum.

jeoz.png