DI
action

Item que add VIP

Por diguuinhoo, 03 de jun. de 2015 em Scripts

resolvido
otserv
tibia
script
6
2.9k
diguuinhooD
03 de junho de 2015 às 00:45

Bom dia/Boa tarde/Boa Noite

 

Estou usando no meu servidor 8.6 este sistema vip: http://www.xtibia.com/forum/topic/151189-vip-system-by-mock-100/

 

e eu gostaria de criar um item (no caso o id 8976) que usando ele é adicionado X dias VIP a conta e remove-se o item.

Já tentei fazer o script com base em alguns que achei por aqui, mas sou iniciante na area e já tentei diversas maneiras de fazer isso, todas sem sucesso.

Se facilitar e o mais simples for arrumar o meu (que esta uma bagunçaworriedsmiley.gif):

na actions.xml:

 

<action itemid="8976" script="vip/itemvip.lua"/>

id do item que ira usar

 

no itemvip.lua do servidor:

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local config={
removeOnUse = "yes" -- remover quando usar ("yes" or "no")
}
local days = 1 -- dias que serão adicionados
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 55555)
local timenow = os.time()
local dia = os.time() + daysvalue
if getPlayerStorageValue(cid, 55555) - os.time() <= 0 then
time = timenow + days
else
time = storageplayer + days
end
db.executeQuery("UPDATE `accounts` SET `vip_time` = "..dia.." WHERE `id` = ".. getAccountIdByName(getPlayerName(cid)) ..";")
doPlayerPopupFYI(cid, "Foram adicionados ".. days .." dias de VIP no seu character.\nVoce tem "..tempo.." dias de VIP restantes.")
doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))
if (config.removeOnUse == "yes") then
doRemoveItem(item.uid, 1)
end
return TRUE
end

dias que ira adicionar

storage utilizado

Aqui gostaria que informasse quanto tempo foi adicionado

Aqui gostaria que informasse o novo tempo da VIP

Eu acho que estou errando em utilizar esta função, porem não sei outra forma de fazer isto(a função do script original não funciona)

o tempo de vip se encontra na tabela accounts da database (nome da coluna: vip_time)

Script Original do itemvip.lua:

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local config={
removeOnUse = "yes" -- remover quando usar ("yes" or "no")
}

local days = 30 -- dias que serão adicionados
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 55555)
local timenow = os.time()

if getPlayerStorageValue(cid, 55555) - os.time() <= 0 then
time = timenow + daysvalue
else
time = storageplayer + daysvalue
end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 55555, time)
local quantity = math.floor((getPlayerStorageValue(cid, 55555) - timenow)/(24 * 60 * 60))
doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")
if (config.removeOnUse == "yes") then
doRemoveItem(item.uid, 1)
end

return TRUE
end

 

Eu sei que esta uma bagunça, como disse sou iniciante em script. se alguem conseguisse jogar uma luz pro meu problema...

 

BrunoB
03 de junho de 2015 às 10:13
Melhor resposta

@@diguuinhoo,

Algo simples, a função em si já faz tudo, tente assim:

local dias = 30 -- dias vip

function onUse(cid, item)
	dias = tonumber(dias)
	vip.addVipByAccount(getPlayerAccount(cid), vip.getDays(dias))
	doRemoveItem(item.uid, 1)
	doSendMagicEffect(getCreaturePosition(cid), CONST_ME_MAGIC_GREEN)
	doPlayerPopupFYI(cid, "Foram adicionados " .. dias .. " dias de VIP em sua account.\nSua VIP Account expira em " .. os.date("%d/%m/%y", vip.getVip(cid)) .. ".")
	return true
end
diguuinhooD
03 de junho de 2015 às 13:25

Perfeito! muito obrigado!

BrunoB
03 de junho de 2015 às 13:44

Tópico movido para a seção de dúvidas e pedidos resolvidos.

Que isso @diguuinhoo, estamos aqui para ajudá-lo.

3 meses depois...
kolossoK
01 de setembro de 2015 às 09:57

maninho, no meu ele só add vip no char e não na conta...
to usando o mesmo systema vip dele..

eu gostaria que ele adicionace a vip na storage 13500



Ex: esse tbm ele adiona a vip so no char

function onUse(cid, item, fromPosition, itemEx, toPosition)

local config={
removeOnUse = "yes" -- remover quando usar ("yes" or "no")
}

local days = 30 -- dias que serão adicionados
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 13540)
local timenow = os.time()

if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then
time = timenow + daysvalue
else
time = storageplayer + daysvalue
end

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados. ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13540, time)
local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))
doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")
if (config.removeOnUse == "yes") then
doRemoveItem(item.uid, 1)
end

return TRUE
end

 

Editado Setembro 1 por kolosso

BrunoB
01 de setembro de 2015 às 10:04

maninho, no meu ele só add vip no char e não na conta...

to usando o mesmo systema vip dele..

 

eu gostaria que ele adicionace a vip na storage 13500

 

 

 

Ex: esse tbm ele adiona a vip so no char

 

 

function onUse(cid, item, fromPosition, itemEx, toPosition)

local config={

removeOnUse = "yes" -- remover quando usar ("yes" or "no")

}

 

local days = 30 -- dias que serão adicionados

local daysvalue = days * 24 * 60 * 60

local storageplayer = getPlayerStorageValue(cid, 13540)

local timenow = os.time()

 

if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then

time = timenow + daysvalue

else

time = storageplayer + daysvalue

end

 

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados. ".. days .." dias de VIP no seu character.")

setPlayerStorageValue(cid, 13540, time)

local quantity = math.floor((getPlayerStorageValue(cid, 13540) - timenow)/(24 * 60 * 60))

doSendMagicEffect(getPlayerPosition(cid), math.random(28,30))

doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")

if (config.removeOnUse == "yes") then

doRemoveItem(item.uid, 1)

end

 

return TRUE

end

 

Amigo, abre um tópico na seção de Suporte de Scripting,

Este tópico já está resolvido.