Ir para conteúdo
  • 0

[Erro] Porta por vocação e nível.


SirUndead

Pergunta

Olá, alguem poderia me ajudar ?

Eu fiz uma quest, que quando o player chega ao nível 20 ele pode entrar na porta de sua vocação e pegar um set melhor do que o atual.

Mas acontece que apenas o nível funcionou na porta. A vocação deu erro e quando você abre o bau você ganha a bolsa com o set. Mas se você cliqua de novo vem outra bolsa com nada dentro.

 

Há 3 portas. Eu gostaria que cada uma tivese sua vocação. E só podera pegar o set uma vez.

Alguem pode me ajudar ?

Aqui vai meu script:

 

No actions.xml:

 

<action uniqueid="5559" script="vocdoor4.lua" />
<action uniqueid="5558" script="vocdoor3.lua" />
<action uniqueid="5557" script="vocdoor2.lua" />
 <action uniqueid="5555" script="boh.lua" />
 <action uniqueid="5507" script="equpkina.lua" />
 <action uniqueid="5509" script="equpmage.lua" />
 <action uniqueid="5508" script="equppala.lua" />

 

 

Os scripts do actions:

 

Set do knight:

 

function onUse(cid, item, frompos, item2, topos)
if item.uid == 5507 then
bag = doPlayerAddItem(cid, 10518, 1)
queststatus = getPlayerStorageValue(cid,5507)
if queststatus == -1 then
doPlayerSendTextMessage(cid,25,"Voce achou um set.")
doAddContainerItem(bag, 2173, 1)
doAddContainerItem(bag, 2459, 1)
doAddContainerItem(bag, 2477, 1)
doAddContainerItem(bag, 2489, 1)
setPlayerStorageValue(cid,5507,1)
else
oPlayerSendTextMessage(cid,25,"Voce ja fez esta quest.")
end
else
return 0
end
return 1
end

 

 

Set do paladin:

 

function onUse(cid, item, frompos, item2, topos)
if item.uid == 5508 then
bag = doPlayerAddItem(cid, 10518, 1)
queststatus = getPlayerStorageValue(cid,5508)
if queststatus == -1 then
doPlayerSendTextMessage(cid,25,"Voce achou um set.")
doAddContainerItem(bag, 2173, 1)
doAddContainerItem(bag, 8872, 1)
doAddContainerItem(bag, 2657, 1)
doAddContainerItem(bag, 2480, 1)
setPlayerStorageValue(cid,5508,1)
else
oPlayerSendTextMessage(cid,25,"Voce ja fez esta quest.")
end
else
return 0
end
return 1
end

 

 

Ser dos mage:

 

function onUse(cid, item, frompos, item2, topos)
if item.uid == 5509 then
bag = doPlayerAddItem(cid, 10518, 1)
queststatus = getPlayerStorageValue(cid,5509)
if queststatus == -1 then
doPlayerSendTextMessage(cid,25,"Voce achou um set.")
doAddContainerItem(bag, 2173, 1)
doAddContainerItem(bag, 7730, 1)
doAddContainerItem(bag, 7463, 1)
doAddContainerItem(bag, 10016, 1)
setPlayerStorageValue(cid,5509,1)
else
oPlayerSendTextMessage(cid,25,"Voce ja fez esta quest.")
end
else
return 0
end
return 1
end

 

 

 

Agora a da porta do kina:

 

---VocDoor-by over---
function onUse(cid, item, frompos, item2, topos)
PlayerVoc = getPlayerVocation(cid)
if PlayerVoc == 4 then
doTeleportThing(cid,{x=934, y=1034, z=8})
else
doPlayerSendCancel(cid,"Apenas knights podem passar por esta porta.")
return 1
end
end

 

 

Agora da porta do paladin:

[sPOLIER]

---VocDoor-by over---
function onUse(cid, item, frompos, item2, topos)
PlayerVoc = getPlayerVocation(cid)
if PlayerVoc == 3 then
doTeleportThing(cid,{x=932, y=1034, z=8})
else
doPlayerSendCancel(cid,"Apenas paladinos podem passar por esta porta.")
return 1
end
end

 

 

Agora da porta dos mage:

 

[sPOLIER]

---VocDoor-by over---
function onUse(cid, item, frompos, item2, topos)
PlayerVoc = getPlayerVocation(cid)
if PlayerVoc == 1 then
if PlayerVoc == 2 then
doTeleportThing(cid,{x=930, y=1034, z=8})
else
doPlayerSendCancel(cid,"Apenas Sorceres e Druids podem passar por esta porta.")
return 1
end
end

 

 

Eu coloquei os IDs nas portas e nos baus pelo Remeres Map Editor.

 

 

Alguem pode me dizer oque está errado ?

Ou arrumar e me mandar ?

Ou então arrumar outro script funcionando ...

Obrigado

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Vou dar um exemplo, voce muda nno resto:

Vermelho -> Colocar ID da vocaçao de Knight

Verde -> Coloca ID da vocaçao Elite Knight

Knight:

 

 

 

 

 

 

function onUse(cid, item, frompos, item2, topos)

if item.uid == 5507 then

queststatus = getPlayerStorageValue(cid,5507)

if queststatus == -1 and playervocation == 1 or playervocation == 2 then

bag = doPlayerAddItem(cid, 10518, 1)

doPlayerSendTextMessage(cid,25,"Voce achou um set.")

doAddContainerItem(bag, 2173, 1)

doAddContainerItem(bag, 2459, 1)

doAddContainerItem(bag, 2477, 1)

doAddContainerItem(bag, 2489, 1)

setPlayerStorageValue(cid,5507,1)

else

doPlayerSendTextMessage(cid,25,"Voce ja fez esta quest.")

end

else

return 0

end

return 1

end

 

Agora na porta do kina poe assim:

Vermelho -> Id da vocaçao do Knight

Verde -> ID da vocaçao do Elite Knight

 

--VocDoor-by over---

function onUse(cid, item, frompos, item2, topos)

PlayerVoc = getPlayerVocation(cid)

if PlayerVoc == 1 or PlayerVoc == 2 then

doTeleportThing(cid,{x=934, y=1034, z=8})

else

doPlayerSendCancel(cid,"Apenas knights podem passar por esta porta.")

return 1

end

end

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

  • 0

Obrigado por postar,

estarei testando...

 

Aqui em:

 

if PlayerVoca == 1 or PlayerVoc == 2 then

 

O Voca está diferente de Voc

Está certo isso ? Por que deu este erro:

 

[17/12/2012 20:32:07] [Error - Action Interface]

[17/12/2012 20:32:07] data/actions/scripts/vocdoor1.lua:onUse

[17/12/2012 20:32:07] Description:

[17/12/2012 20:32:07] (luaDoPlayerSendCancel) Player not found

 

Quando eu apaguei o A funcionou.

Agora da erro no bau:

 

 

 

[17/12/2012 20:38:06] [Error - Action Interface]

[17/12/2012 20:38:06] data/actions/scripts/qek.lua:onUse

[17/12/2012 20:38:06] Description:

[17/12/2012 20:38:06] data/actions/scripts/qek.lua:13: attempt to call global 'oPlayerSendTextMessage' (a nil value)

[17/12/2012 20:38:06] stack traceback:

[17/12/2012 20:38:06] data/actions/scripts/qek.lua:13: in function <data/actions/scripts/qek.lua:1>

 

Coloquei um "d" antes do "oPlayerSendTextMessage" e funcinou mais ou menos, fica aparecendo a mensagem "Você já fez esta quest" mesmo eu não tendo feito.

 

 

-Obs: Eu apaguei todos os arquivos que eu postei na primeira mensagem e fiz 2 novos. Um pra porta e um pro bau e coloquei oque você me disse mas com a ID do knight e do elite knight. O nome do arquivo para a porta é "vocdoor1" e o do bau é "qek".

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

  • 0

Vou postar os 3 amigo:

 

Data>Actions>Scripts>qek (baú):

function onUse(cid, item, frompos, item2, topos)
if item.uid == 5507 then
queststatus = getPlayerStorageValue(cid,5507)
if queststatus == -1 and playervocation == 4 or playervocation == 8 then
bag = doPlayerAddItem(cid, 10518, 1)
doPlayerSendTextMessage(cid,22,"Voce achou um set.")
doAddContainerItem(bag, 2173, 1)
doAddContainerItem(bag, 2459, 1)
doAddContainerItem(bag, 2477, 1)
doAddContainerItem(bag, 2489, 1)
setPlayerStorageValue(cid,5507,1)
else
doPlayerSendTextMessage(cid,22,"Voce ja fez esta quest.")
end
else
return 0
end
return 1
end

 

Data>Actions>Scripts>vocdoor1(porta):

 


--VocDoor-by over---
function onUse(cid, item, frompos, item2, topos)
PlayerVoc = getPlayerVocation(cid)
if PlayerVoc == 4 or PlayerVoc == 8 then
doTeleportThing(cid,{x=934, y=1034, z=8})
else
doPlayerSendCancel(cid,"Apenas knights podem passar por esta porta.")
return 1
end
end

 

Data>Actions>actions.xml:

 

 


    <action uniqueid="5557" script="vocdoor1.lua" />
    <action uniqueid="5507" script="qek.lua" />

Link para o comentário
Compartilhar em outros sites

  • 0

tente esse:

 

function onUse(cid, item, frompos, item2, topos)

if item.uid == 5507 then

bag = doPlayerAddItem(cid, 10518, 1)

queststatus = getPlayerStorageValue(cid,5507)

if queststatus <= 0 then

doPlayerSendTextMessage(cid,25,"Voce achou um set.")

doAddContainerItem(bag, 2173, 1)

doAddContainerItem(bag, 2459, 1)

doAddContainerItem(bag, 2477, 1)

doAddContainerItem(bag, 2489, 1)

setPlayerStorageValue(cid,5507,1)

end

end

end

end

Link para o comentário
Compartilhar em outros sites

  • 0

Bom deu um erro no dristro por que tinha um "end" a mais, já tirei.. Testando.

Funcionou obrigado :D

Mas tem um problema.

Quando você abre o bau mesmo depois de ja ter pego os items. Ele da uma backpack pra sempre. Toda vez que você clika no bau da uma backpack vazia.

Link para o comentário
Compartilhar em outros sites

  • 0
function onUse(cid, item, frompos, item2, topos)

queststatus = getPlayerStorageValue(cid,5507)

if item.uid == 5507 and queststatus <= 0 then

bag = doPlayerAddItem(cid, 10518, 1)

end

doPlayerSendTextMessage(cid,25,"Voce achou um set.")

doAddContainerItem(bag, 2173, 1)

doAddContainerItem(bag, 2459, 1)

doAddContainerItem(bag, 2477, 1)

doAddContainerItem(bag, 2489, 1)

setPlayerStorageValue(cid,5507,1)

end

Link para o comentário
Compartilhar em outros sites

  • 0

ultima chance rs

 

function onUse(cid, item, frompos, item2, topos)

queststatus = getPlayerStorageValue(cid,5507)

if item.uid == 5507 and queststatus <= 0 then

bag = doPlayerAddItem(cid, 10518, 1)

doPlayerSendTextMessage(cid,25,"Voce achou um set.")

doAddContainerItem(bag, 2173, 1)

doAddContainerItem(bag, 2459, 1)

doAddContainerItem(bag, 2477, 1)

doAddContainerItem(bag, 2489, 1)

setPlayerStorageValue(cid,5507,1)

end

end

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

  • 0

É cara não deu não :/

Obrigado por tentar.

Estou quase conseguindo aqui com esse código:

 

 

function onUse(cid, item, frompos, item2, topos)

if item.uid == 5507 then

queststatus = getPlayerStorageValue(cid,5507)

if queststatus == -1 then

bag = doPlayerAddItem(cid, 10518, 1)

doPlayerSendTextMessage(cid,25,"Voce achou um set.")

doAddContainerItem(bag, 2173, 1)

doAddContainerItem(bag, 2459, 1)

doAddContainerItem(bag, 2477, 1)

doAddContainerItem(bag, 2489, 1)

setPlayerStorageValue(cid,5507,1)

else

doPlayerSendTextMessage(cid,22,"Você já fez esta quest.")

end

end

end

 

 

Mas o problema é que ele só da um item dentro da bag D:

 

Eu consegui com um script que com pouco da minha sabedoria montei com outros scripts:

O baú (estou postando pra quem também tem esse erro e caiu neste tópico a procura de uma solução):

 

Código:

function onUse(cid, item, frompos, item2, topos)

if item.uid == 5507 then

queststatus = getPlayerStorageValue(cid,5507)

if queststatus == -1 then

bag = doPlayerAddItem(cid, 10518, 1)

doPlayerSendTextMessage(cid,25,"Voce achou um set.")

doAddContainerItem(bag, 2173, 1)

doAddContainerItem(bag, 2459, 1)

doAddContainerItem(bag, 2477, 1)

doAddContainerItem(bag, 2489, 1)

setPlayerStorageValue(cid,5507,1)

else

doPlayerSendTextMessage(cid,22,"Você já fez esta quest.")

end

end

end

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui cara , fiz esse , testado e funcionando , testei em 8.6

 

 

<action actionid="7345" event="script" value="vocdoor.lua"/> -- action da door

<action uniqueid="5557" event="script" value="setkina.lua"/> -- action do set de knight

 

 

Aqui vai script da porta de knight

 

 

 

function onUse(cid, item, frompos, item2, topos)

PlayerVoc = getPlayerVocation(cid)

if PlayerVoc == 4 then

doTeleportThing(cid,{x=71, y=32, z=8})

else

doPlayerSendCancel(cid,"Apenas Knights podem passar por esta porta.")

end

return 1

end

 

 

Aqui vai o script do set

 

 

 

 

function onUse(cid, item, frompos, item2, topos)

queststatus = getPlayerStorageValue(cid,5507)

if item.uid == 5557 and queststatus == -1 then

doPlayerSendTextMessage(cid,25,"Voce achou um set.")

doPlayerAddItem(cid, 2160, 5)

setPlayerStorageValue(cid,5507,1)

else

doPlayerSendTextMessage(cid,25,"Voce ja fez esta quest.")

end

return 1

end

 

 

Pra colocar mais itens é só você adicionar mais disso

doPlayerAddItem(cid, 2160, 5) -- 2160 é o item e o 5 é a quantidade.

Lembrando que testei e está funcionando sem nenhum erro, postei hj pq ontem n deu

e você tem que fazer o mesmo com as outras vocações

 

Ajudei ? REP+

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...