Ir para conteúdo
  • 0

Script so abrir x porta depois de fazer x quest


nycholaszinhu

Pergunta

Olá galera o nome do tópico já diz tudo não é ?, mais irei entrar em mais detalhes aqui.


Bom pessoal, eu queria um script para o player só poder abrir a porta apos completar tal quest.

Exemplo depois de completar a anihi o player vai poder passar em uma porta onde tem um Baú onde ele recebera parte do Demon Outfit Addon.

e junto eu queria o script para eu por nesse Baú para receber o addon.

Muito Obrigado, e já agradeço daqui Abraço a Todos !

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

EDIT: O player receberá quantas partes do addon? 1?

E, como eu não conheço essa outfit, poderia informar se ela tem tanto versão female quanto male?

 

De qualquer maneira, tentei fazer a porta e baú. O último, fiz como se a outfit tivesse male e female. Se tiver de apenas um sexo, basta tirar essa parte:

if (getPlayerSex(cid) == 0)then
doPlayerAddOutfit(cid, cfg.addon_female, cfg.addon_qnt)
else
doPlayerAddOutfit(cid, cfg.addon_male, cfg.addon_qnt)
end

E colocar essa, no lugar:

doPlayerAddOutfit(cid, xxx, cfg.addon_qnt)   --Troque xxx pelo ID da outfit.

Porta:

function onUse(cid, item, frompos, item2, topos)
 
local storage = xxx       --Coloque aqui a storage da quest que necessita estar completa para passar pela porta.
local pos = {x = xxx, y = yyy, z = zzz}   --Para onde será teleportado ao clicar na porta. 
 
if getPlayerStorageValue(cid, storage) < 1 then
doTeleportThing(cid, frompos)
doPlayerSendCancel(cid, "Você não completou a quest para passar por esta porta.")
doSendMagicEffect(frompos, CONST_ME_POFF)
else
doPlayerSendTextMessage(cid, 27, "Parabéns, agora clique no baú para receber sua recompensa.")
end
return true
end

Baú:

function onUse(cid, item, frompos, item2, topos)
 
local cfg = {
addon_male = xxx,     --ID da outfit male. 
addon_female = xxx,   --ID da outfit female.
addon_qnt = xxx,      --Quantas partes do addon vai ganhar.
}
 
if getPlayerStorageValue(cid, 112819) >= 1 then
return doPlayerSendCancel(cid, "Você já completou essa quest.")
end
doPlayerSendTextMessage(cid, 27, "Parabéns, você completou a quest com sucesso! Tome como prémio uma parte da Demon Outfit.")
setPlayerStorageValue(cid, 112819, 1)
doPlayerAddOutfit(cid, cfg.addon_female, cfg.addon_qnt)
doPlayerAddOutfit(cid, cfg.addon_male, cfg.addon_qnt)
return true
end
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Zipter, eh melhor dar ao player os dois outfits de uma vez (male e female) pq existe a possibilidade do player trocar de sexo algum dia.

 

E a porta eu acho que fica ruim ela teleportar o cara, acho melhor usar uma porta normal (aquela que precisa de level pra passar) e usar o script assim:

  

function onUse(cid, item, frompos, item2, topos)
 
local storage = xxx       --Coloque aqui a storage da quest que necessita estar completa para passar pela porta.
 
 
if getPlayerStorageValue(cid, storage) < 1 then
    doTeleportThing(cid, frompos)
    doPlayerSendCancel(cid, "Você não completou a quest para passar por esta porta.")
    doSendMagicEffect(frompos, CONST_ME_POFF)
else
    doPlayerSendTextMessage(cid, 25, "Bem vindo!")
end
return true
end

Dai eh so colocar um uniqueID na porta e registrar ela no actions.xml.

Editado por amoeba13
Link para o comentário
Compartilhar em outros sites

  • 0

Realmente, acho meio feio a porta teleportar o player e.e

Sobre a possibilidade de trocar de sexo, não fica pensado nisso. Vlw \o

Não teria uma maneira de "quebrar" isso de mudar sexo e ficar com a outfit do sexo anterior? Talvez um onlogin daria?

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

Nao, nem precisa mudar. Por exemplo, se o cara era male quando fez a quest e ganha as duas outfits ele so iria poder usar a do sexo masculino e quando ele trocar de sexo so vai poder usar a do sexo feminino. Essa restricao ja e feita automaticamente pelo server, entao pode adicionar as duas sem problema :)

Link para o comentário
Compartilhar em outros sites

  • 0

Poxa galera Obrigado pela ajuda !
Mas Amoeba13 Esse script que você passou pra mim o player da um USE na porta e ela abre e o player automaticamente caminha para o mesmo (x,y,z) da porta?, se for isso e possivel o player abrir a porta e outros jogadores passarem por dentro dele?

 

Zipter98 Cara muito obrigado por me passar o script :) stou muito grato realmente e Amoeba13 digo o mesmo pra você Muito grato com vocês !

 

 

UMA DUVIDA :
Esse > setPlayerStorageValue(cid, 112819, 1
)
eu preciso registrar ele em algum lugar como o actionID?

 

Tenho mais 2 pedidos se vocês puderem me ajudar ... segue os links :
http://www.xtibia.com/forum/topic/223273-script-para-life-steal/

http://www.xtibia.com/forum/topic/223292-script-para-chance-de-atack-rapido/

 

Obrigado novamente ! ;)

Editado por nycholaszinhu
Link para o comentário
Compartilhar em outros sites

  • 0

Nycholas, no script que eu fiz, o player que fez a quest vai passar pela porta normalmente. Como em qualquer porta de level. Se ele nao tiver feito a quest, ele voltará para o sqm em que ele estava quando deu use.

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado galera, Rep+ pra vocês !

eu sei que já to sendo chato mais se não for um bau seu eu quiser pegar o outfit com um NPC?
nesse mesmo esquema só pega o addon ou outfit se a quest estiver completa .

Obrigado e daqui mesmo ja vou dar o Rep+ pra vocês Muito Obrigado =*

Link para o comentário
Compartilhar em outros sites

  • 0

Que legal. Pode Passar o Script Do Piso?
Se não estiver te ocupando muito ... Obrigado pela ajuda cara, você tá me dando muita atenção !



Se não for abuso meu olha esse outro pedido que fiz :

http://www.xtibia.com/forum/topic/223292-script-para-chance-de-atack-rapido/

Ninguem me respondeu lá :/

Editado por nycholaszinhu
Link para o comentário
Compartilhar em outros sites

  • 0

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end

function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end

function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end

function onThink() npcHandler:onThink() end

function creatureSayCallback(cid, type, msg)

if(not npcHandler:isFocused(cid)) then

return false

end

 

local outfmale = xxx -- id da outfit masculina

local outffemale = xxx -- id da outfit feminina

local storage = xxx -- storage q ganha na quest

local partes = xxx -- quantos addons vai gan

 

if msgcontains(msg, 'outfit') then

if getPlayerStorageValue(cid, storage) >= 1 then

if getPlayerStorageValue(cid, 31831) < 1 then

doPlayerAddOutfit(cid, outfmale, partes)

doPlayerAddOutfit(cid, outffemale, partes)

doPlayerSetStorageValue(cid, 31831, 1)

selfSay("Parabens! Aqui esta seu outfit!", cid)

else

selfSay("Você ja recebeu seu outfit!", cid)

end

else

selfSay("Você não completou a quest! Volte aqui quando tiver completado.", cid)

end

return true

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

Editado por amoeba13
Link para o comentário
Compartilhar em outros sites

  • 0

Amoeba, não sei se é só impressão minha, ou você esqueceu de setar a storage? Sou meio ruim de visão, ai as vezes é só impressão minha mesmo ._.

Fiz o piso aqui rapidin, veja se é isso que você quer:

 

function onStepIn(cid, item, position, fromPosition)

local storage_quest = xxx     --Storage da quest.

if getPlayerStorageValue(cid, storage_quest) < 1 then
    doTeleportThing(cid, fromPosition)
    doPlayerSendCancel(cid, "Você não completou a quest para passar aqui!")
    doSendMagicEffect(getThingPos(cid), CONST_ME_POFF)
end
    doPlayerSendTextMessage(cid, 27, "Parabéns, agora clique no baú para receber sua recompensa.")
return true
end

Só vai passar por ele quem fez a quest.

Editado por zipter98
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...