@@você quer uma versão desse sistema ai, que funcione? ou só quer aprender sobre as funções?
info
Grupo: Herói
Registrado: 25/10/11
Posts: 2.2k
Reputação: +862
Gênero: Masculino
Char no Tibia: Sociopata

@@você quer uma versão desse sistema ai, que funcione? ou só quer aprender sobre as funções?
info
Grupo: Campones
Registrado: 03/01/13
Posts: 19
Reputação: 0
Gênero: Masculino

info
Grupo: Herói
Registrado: 25/10/11
Posts: 2.2k
Reputação: +862
Gênero: Masculino
Char no Tibia: Sociopata

Então da uma olhada no link que mandei acima, quanto a seu sistema. É vip ou premium account? qual sistema vip ta usando? e qual a base do seu servidor/versão?
info
Grupo: Campones
Registrado: 03/01/13
Posts: 19
Reputação: 0
Gênero: Masculino

Então da uma olhada no link que mandei acima, quanto a seu sistema. É vip ou premium account? qual sistema vip ta usando? e qual a base do seu servidor/versão?
Entao, esse sistema de Vip eu nao faço ideia, pq meio que eu peguei um pouco de cada, mais é VIP EX: (ele troca certo item por uma storage usando o comando !buyvip apenas isso) Servidor 8.60, ja a base do server é uma que o SubWat Postou, Refugia2012, porem ja mudei e retirei os bugs, só falta isso do vip ![]()
Editado Março 30 por ivanhardjr
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Vou explicar passo a passo pra você algumas questões do script.
--- script
function onSay(cid, words, param)
if(words == "!buyvip") then
doPlayerRemoveItem(cid,6527,30) -- sugiro antes de remover um item, saber se o player tem o item ou a quantidade de itens necessário. if not (getPlayerItem (cid, itemid, quantidade)) then return true, doPlayerSendCancel (cid, "você não tem o item.") end
local days = 30
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 13540)
local timenow = os.time()
if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then --você já declarou na variável acima "storageplayer", não é necessário repetir aqui.
time = timenow + daysvalue
else
time = storageplayer + daysvalue
end
if string.find(tostring(getCreatureName(cid)),"[Vip]") then
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))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13540, time)
local name = getCreatureName(cid)
db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")--essa query tem ser executada depois do player ser removido.
doRemoveCreature(cid)
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de 30 Multi Coins para colocar vip.")
end
info
Grupo: Conde
Registrado: 07/04/15
Posts: 962
Reputação: +258
Gênero: Masculino

Tópico Movido
Este tópico foi movido de "OTServ → Scripting → Suporte Scripting"
para "OTServ → Scripting → Suporte Scripting → Pedidos e dúvidas resolvidos - Scripting".
info
Grupo: Campones
Registrado: 03/01/13
Posts: 19
Reputação: 0
Gênero: Masculino

Eu ja resolvi de outra maneira, mais obrigado de verdade aprendi mais um pouco ^^, poderia me ajudar agora, sobre uma spell?
Vou explicar passo a passo pra você algumas questões do script.
--- script
function onSay(cid, words, param)
if(words == "!buyvip") then
doPlayerRemoveItem(cid,6527,30) -- sugiro antes de remover um item, saber se o player tem o item ou a quantidade de itens necessário. if not (getPlayerItem (cid, itemid, quantidade)) then return true, doPlayerSendCancel (cid, "você não tem o item.") end
local days = 30
local daysvalue = days * 24 * 60 * 60
local storageplayer = getPlayerStorageValue(cid, 13540)
local timenow = os.time()
if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then --você já declarou na variável acima "storageplayer", não é necessário repetir aqui.
time = timenow + daysvalue
else
time = storageplayer + daysvalue
end
if string.find(tostring(getCreatureName(cid)),"[Vip]") then
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))
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.")
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13540, time)
local name = getCreatureName(cid)
db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";")--essa query tem ser executada depois do player ser removido.
doRemoveCreature(cid)
end
else
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de 30 Multi Coins para colocar vip.")
end
info
Grupo: Herói
Registrado: 07/03/16
Posts: 1.4k
Reputação: +385
Gênero: Masculino

Se você quer mesmo aprender, então começa aprendendo lógica de programação, identação, etc.
Eu sugiro que você faça o seguinte:
Crie um script.
Tente torná -lo menor e mais prático.
Faça-o simples, configurável, adaptável e portavel.
Revise-o.
Teste o script tentando encontrar falhas.
Finalize ele tornando-o o mais inteligível possível.
Veja um exemplo usando seu script.
--script
function onSay(cid, words, param)
local days = 30
local daysvalue = days * 24 * 60 * 60
local item, quantidade = 6527,30
local storageplayer = getPlayerStorageValue(cid, 13540)
local timenow = os.time()
local time = storageplayer < timenow and timenow+daysvalue or storageplayer+daysvalue
if (getplayeritemCount(cid, item) < quantidade) then
return true, doPlayerSendCancel (cid,"tu nao teins os itens")
elseif not(string.find(tostring(getCreatureName(cid)),"[Vip]")) then
return true, doPlayerSendCancel (cid,"tu naos eis vip")
else
doPlayerRemoveItem (cid, item, quantidade)
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.")
setPlayerStorageValue(cid, 13540, time)
doRemoveCreature (cid)
db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..getCreatureName (cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")
end
return true
end
info
Grupo: Campones
Registrado: 03/01/13
Posts: 19
Reputação: 0
Gênero: Masculino
Pessoal to aprendendo agora, as coisas mais basicas da linguagem lua, mais eu nao tenho ngm que me ensine ai fica muito dificil pra mim, bom vamos la !
Eu peguei um sistema feito, pois ainda nao aprendi a criar do 0, apenas sei modificalo as vezes, porem esse eu n to conseguindo, alguem pode me fazer um script como esse? e porfavor me ensinar como fazer e onde usar tais açoes como: else - return then - return true - end
Porfavor gente, quero muito aprender, me dedico mais eu n entendo muito, se alguem se disponibilizar, entrar em contato comigo e tals, Obrigado !
function onSay(cid, words, param) if(words == "!buyvip") then doPlayerRemoveItem(cid,6527,30) local days = 30 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 if string.find(tostring(getCreatureName(cid)),"[Vip]") then 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)) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dias de VIP restantes.") else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foram adicionados ".. days .." dias de VIP no seu character.") setPlayerStorageValue(cid, 13540, time) local name = getCreatureName(cid) db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..name.."' WHERE `id` = "..getPlayerGUID(cid)..";") doRemoveCreature(cid) end else doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você precisa de 30 Multi Coins para colocar vip.") endEditado Março 30 por ivanhardjr