Os 2 primeiro creio que seria por um storage,
3 Seria um item de teleport.
info
Grupo: Artesão
Registrado: 24/11/13
Posts: 108
Reputação: +8

Os 2 primeiro creio que seria por um storage,
3 Seria um item de teleport.
Sim, mais a questao é como fazer isso
1º - Vá em data/actions/scripts, crie um arquivo chamado questvip.lua e coloque isto dentro:
local config = {
storage = 2506,
unique_Chest_Id = 3450, -- Aqui é o unique id do báu(coloca isso no map)
vip_Storage = 13540, -- Aqui vc bota a storage do seu vip system
vip_Days = 30, -- Aqui vc coloca a quantidades de dias que o player vai ganhar
}
function onUse(cid, item, fromPosition, itemEx, toPosition)
if item.uid == config.unique_Chest_Id then
queststatus = getPlayerStorageValue(cid,config.storage)
if queststatus == -1 or queststatus == 0 then
db.executeQuery("UPDATE `players` SET `name` = '[Vip] "..getCreatureName(cid).."' WHERE `id` = "..getPlayerGUID(cid)..";")
doPlayerSendTextMessage(cid,25,"Você será kickado em 5 segundos para mudança de nome.")
addEvent(doRemoveCreature, 5*1000, cid, true)
setPlayerStorageValue(cid, config.storage, 1)
doSendMagicEffect(getCreaturePosition(cid), CONST_ME_HOLYDAMAGE)
setPlayerStorageValue(cid, config.vip_Storage, config.vip_Days)
else
doPlayerSendTextMessage(cid,22,"Você já fez a Vip Quest.")
end
return true
end
end
Verde - Storage que o baú irá adicionar no player para ele não fazer mais a quest.
Roxo - Unique ID que você colocou no baú pelo Remere's.
Vermelho - Storage do VIP.
Laranja - Quantidade de dias VIP que a quest vai dar.
Depois, em data/actions/actions.xml adicione está tag:
<action uniqueid="30001" event="script" value="vipquest.lua"/>
Roxo - Unique ID que você colocou no baú pelo Remere's.
Rosa - Diretório/Nome do arquivo.lua.
2º - Vá em data/movements/scripts, crie um arquivo chamado viptile.lua e coloque isso dentro dele:
function onStepIn(cid, item, position, fromPosition)
local config = {
msgDenied = "Você precisa ser Vip.",
msgWelcome = "Bem-Vindo a Area Vip!."
}
if getPlayerStorageValue(cid, 13540) - os.time() <= 0 then
doTeleportThing(cid, fromPosition, true)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgDenied)
doSendMagicEffect(getThingPos(cid), CONST_ME_MAGIC_BLUE)
return TRUE
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, config.msgWelcome)
return TRUE
end
Vermelho - Storage do VIP.
Após em data/movements/movements.xml adicione está tag aqui:
<movevent event="StepIn" actionid="36987" script="viptile.lua" />
Cinza - ActionsID do piso para entrar na área VIP.
Marrom - Nome do arquivo.lua.
3º Vá em data/actions/script, crie um arquivo chamado vip.lua e cole isso dentro:
function onUse(cid, item, fromPosition, itemEx, toPosition)
local config={
removeOnUse = "yes" -- remover quando usar ("yes" or "no")
}
local days = 35 -- 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
Vermelho - Storage do VIP.
Azul Claro - Quantos VIP Days o item vai dar.
Agora em data/actions/actions.xml adicione está tag:
<action itemid="5785" script="vip/addvip.lua"/>
Azul - ID do item que dá vip days.
PS: Scripts não fui eu que fiz, apenas estou repassando para você. Caso precise de ajuda é só avisar que vejo o que posso fazer! >.<
Editado Novembro 25 por GuhPk
Valew mano, ajudou muito +rep, agora so me diz uma coisa kkk, storage é oque ? e como faz isso?
Falta essa parte aqui, alguem ai sabe?
2. Como eu faço uma sqm que so pode passar por ela quem fez tal quest? Que no caso essa sqm daria acesso ao TP pra area vip.
Storage é um código único que tem no server. Sempre que você faz uma quest você ganha um storage para que não possa mais faze-lá...
Também tem storage do VIP System, ou seja, se você tiver este storage em seu personagem, você é VIP, se não tiver não é! >.<
Aé, esqueci um pedaço do pedido 2... Já arrumei, olhe lá! >.<
info
Grupo: Grão-Duque
Registrado: 28/07/11
Posts: 3.5k
Reputação: +570
Gênero: Masculino
Char no Tibia: Transloko

Local errado. Movido!
Ah, como eu acho essa storage? eu crio ela?
....
Aqui nessa parte :
<action itemid="5785" script="vip/addvip.lua"/>
Azul - ID do item que dá vip days.
eu so preciso por isso? pra quando usar o item ganhar a vip? mas e o item vai pra onde quando usar? Eu vi que na parte que voce postou aqui :
function onUse(cid, item, fromPosition, itemEx, toPosition)
local config={
removeOnUse = "yes" -- remover quando usar ("yes" or "no")
}
local days = 35 -- 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
ele diz que o items vai sumir, mais nao especifica qual o id do item, é assim mesmo, ou falta algo?
É assim mesmo, porque ele pega o ID da TAG dele que você vai adicionar no actions.xml! >.<
Ou seja, "5785". No caso se você mudar o ID ai, será o item que você colocar vai sumir e adicionar os dias vip.
E também tem que adicionar a storage seu vip system onde está "13540"! ^^
Beleza, valeu, so to com duvida nessa storage ai
mais vou tentar achar isso
Qualquer coisa me envie PM, que ai nos falamos e tento te ajudar se não conseguir arrumar! >.<
Reportado para moverem.
info
Grupo: Marquês
Registrado: 16/06/07
Posts: 1.2k
Reputação: +377
Gênero: Masculino
Char no Tibia: Nenhum

Storage é um valor armazenado no banco de dados do seu servidor para cada personagem. Cada storage tem um número-chave para representá-lo em cada personagem e um valor. Todos os storages começam com valor -1 e você pode mudar em um script usando
setPlayerStorageValue(cid, key, value)
Assim o jogador com identificação cid no jogo vai ter seu storage key mudado para value. Por exemplo, para que o jogador não possa fazer uma quest novamente, você escolhe um storage aleatório, muda ele de -1 para qualquer outro número, normalmente 1. Daí, no script da quest você checa se ele já fez a quest usando
getPlayerStorageValue(cid, key)
Que vai te retornar qual é o valor da storage 'key'. Se for -1, deixa ele fazer a quest porque não fez antes. Se for diferente, ele já fez, então não pode receber o prêmio de novo.
Tópico movido para a seção de dúvidas e pedidos resolvidos.
Editado Novembro 25 por Omega
info
Grupo: Barão
Registrado: 21/11/13
Posts: 213
Reputação: +19
Bom pessoal, eu estou com uma pequena duvida
porque ta fod@ pra krl, eu estou querendo fazer uma quest no meu server, porem essa quest quem termina-la vai ter acesso a uma area vip, o problema é que eu nao sei fazer isso, minhas duvidas sao:
Espero que tirem todas as minhas duvidas, porque fica fazendo topico novo é chato
.
Obrigado =D