Ir para conteúdo
  • 0

Recompensa Quest


kaizy536

Pergunta

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:

  1. Como eu faço pra fazer um chest que a recompensa dele é o acesso a uma certa area?
  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.
  3. Como fazer um item que ao ser usado de acesso imediatamente para a area vip como se a pessoa tivesse concluido a quest (sem conclui-la).

Espero que tirem todas as minhas duvidas, porque fica fazendo topico novo é chato x.x.

Obrigado =D

 

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

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.

 

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 por GuhPk
Link para o comentário
Compartilhar em outros sites

  • 0

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.

 

Link para o comentário
Compartilhar em outros sites

  • 0

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á! >.<

Link para o comentário
Compartilhar em outros sites

  • 0

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?

Link para o comentário
Compartilhar em outros sites

  • 0

É 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"! ^^

Link para o comentário
Compartilhar em outros sites

  • 0

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 por Omega
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...