Ir para conteúdo
  • Cadastre-se

(Resolvido)Arena PvM - 7.6


Ir para solução Resolvido por xWhiteWolf,

Posts Recomendados

Olá a todos!

 

Bom, estou criando um server 7.6 mas estou com um probleminha...

Criei uma arena que é bem simples, o player fica em um sqm e puxa alavanca, é teleportado para uma sala que fica de frente para o monstro e atraz do monstro tem um TP para a sala de recompensa. Mas o problema que preciso fazer um meio que o player não possa fazer ela 2x ou com que outro player n entre em quanto o 1º player esteja na arena.

 

alavanca.xml

 

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

if item.uid == 6003 then
if item.itemid == 1945 then
player1pos = {x=32915, y=32328, z=15, stackpos=253}
player1 = getThingfromPos(player1pos)
 
 
 
if player1.itemid > 0 then
 
player1level = getPlayerLevel(player1.uid)
 
questlevel = 80
 
if player1level >= questlevel then
 
queststatus1 = getPlayerStorageValue(player1.uid,6026)
 
if queststatus1 == -1 then
 
demon1pos = {x=32915, y=32324, z=15}
 
doSummonCreature("Demodras", demon1pos)
 
nplayer1pos = {x=32915, y=32325, z=15}
 
doSendMagicEffect(player1pos,2)
 
doTeleportThing(player1.uid,nplayer1pos)
 
doSendMagicEffect(nplayer1pos,10)
 
doTransformItem(item.uid,item.itemid+0)
 
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
elseif item.itemid == 1945 then
if getPlayerAccess(cid) == 3 then
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
end
end
return 1
end

 

recompensa.xml

 

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

 
if item.uid == 6000 then
queststatus = getPlayerStorageValue(cid,6000)
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"Voçê ganhou uma soft boots.")
doPlayerAddItem(cid,2358,1)
setPlayerStorageValue(cid,6000,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
elseif item.uid == 6001 then
queststatus = getPlayerStorageValue(cid,6000)
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"Voçê ganhou uma soft hat.")
doPlayerAddItem(cid,2323,1)
setPlayerStorageValue(cid,6000,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
end
elseif item.uid == 6002 then
queststatus = getPlayerStorageValue(cid,6000)
if queststatus == -1 then
doPlayerSendTextMessage(cid,22,"Voçê ganhou uma magic staff.")
doPlayerAddItem(cid,2453,1)
setPlayerStorageValue(cid,6000,1)
else
doPlayerSendTextMessage(cid,22,"It is empty.")
 
end
else
return 0
end
 
return 1
end

 

Alguem pode resolver isso pra mim?

Agradeço.

Link para o post
Compartilhar em outros sites

a parte de não poder entrar se já tiver feito tá aqui: 
 

function onUse(cid, item, frompos, item2, topos) 
if item.uid == 6003 then
if item.itemid == 1945 then
player1pos = {x=32915, y=32328, z=15, stackpos=253}
player1 = getThingfromPos(player1pos)






if player1.itemid > 0 then


player1level = getPlayerLevel(player1.uid)


questlevel = 80


if player1level >= questlevel then


queststatus1 = getPlayerStorageValue(player1.uid,6000)


if queststatus1 == -1 then


demon1pos = {x=32915, y=32324, z=15}


doSummonCreature("Demodras", demon1pos)


nplayer1pos = {x=32915, y=32325, z=15}


doSendMagicEffect(player1pos,2)


doTeleportThing(player1.uid,nplayer1pos)


doSendMagicEffect(nplayer1pos,10)


doTransformItem(item.uid,item.itemid+0)


else
doPlayerSendCancel(cid,"You can't enter because you've already finished the arena.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
elseif item.itemid == 1945 then
if getPlayerAccess(cid) == 3 then
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
end
end
return 1
end

agora a segunda parte não dá pra fazer simplesmente porque seu server é 7.6 mas dependendo do tamanho da sua arena dá pra improvisar uma gambiarra que TALVEZ dê certo, posta uma foto dela que eu tento fazer aqui dps

Editado por xWhiteWolf (veja o histórico de edições)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Bom, agora já não é possivel fazer ela 2x. porem continua entrando 2 player na arena. Outra coisa, quando tem um player na arena matando o bixo e outro player entra, não aparece outro bixo. Só se o 1º bixo já estiver morto.

imagem da arena ta ae.

 

Htf.png

Editado por zuckah (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

acho que agora vai, tem que ver se essa funçãozinha que eu coloquei vai servir em 7.6. Se der algum erro copia e cola oque aparece no console aqui

function onUse(cid, item, frompos, item2, topos) 
if item.uid == 6003 then
if item.itemid == 1945 then
local player1pos = {x=32915, y=32328, z=15, stackpos=253}
local player1 = getThingfromPos(player1pos)
local nplayer1pos = {x=32915, y=32325, z=15}




if player1.itemid > 0 then
local player1level = getPlayerLevel(player1.uid)
local questlevel = 80
if player1level >= questlevel then
local queststatus1 = getPlayerStorageValue(player1.uid,6000)
if queststatus1 == -1 then
local demon1pos = {x=32915, y=32324, z=15}
local mob = getThingfromPos(demon1pos).uid
local playa = getThingfromPos(nplayer1pos).uid
if mob ~= 0 or playa ~= 0 then
doPlayerSendCancel(cid,"Someone else is doing the quest right now.")
else
doSummonCreature("Demodras", demon1pos)
doSendMagicEffect(player1pos,2)
doTeleportThing(player1.uid,nplayer1pos)
doSendMagicEffect(nplayer1pos,10)
doTransformItem(item.uid,item.itemid+0)
end
else
doPlayerSendCancel(cid,"You can't enter because you've already finished the arena.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
elseif item.itemid == 1945 then
if getPlayerAccess(cid) == 3 then
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
end
end
return 1
end
Editado por xWhiteWolf (veja o histórico de edições)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Agora já não da pra entrar na arena.

Aparece essa msg "Someone else is doing the quest right now."

Link para o post
Compartilhar em outros sites

é que eu quis adaptar uma função mas acho que não deu muito certo.
Você saberia me dizer se seu server tem a isPlayer ou isMonster e se ele tem a função getTopCreature?

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

a função isPlayer e isMonster tem, agora a getTopCreature não tem.

Tem como fazer uma action que funcionaria assim...

ao entrar na sala irá aparecer um bixo, e quando morto, ele se transforma em um teleport para a sala de recompensa.

 

OU

 

quando o player passar em cima de X sqm, aparece um bixo na sala. Ae eu teria que almentar a area.

Editado por zuckah (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

cara, tudo dá pra fazer mas o problema é rodar em 7.6 auhauhauh aquele script era pra ter funcionado sem erro nenhum.
Deixa eu ver aqui oque dá pra fazer

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites
  • Solução

nossa eu bronzei.. agora tá certo..

function onUse(cid, item, frompos, item2, topos) 
if item.uid == 6003 then
if item.itemid == 1945 then
local player1pos = {x=32915, y=32328, z=15, stackpos=253}
local player1 = getThingfromPos(player1pos)
local nplayer1pos = {x=32915, y=32325, z=15, stackpos=253}




if player1.itemid > 0 then
local player1level = getPlayerLevel(player1.uid)
local questlevel = 80
if player1level >= questlevel then
local queststatus1 = getPlayerStorageValue(player1.uid,6000)
if queststatus1 == -1 then
local demon1pos = {x=32915, y=32324, z=15, stackpos=253}
local mob = getThingfromPos(demon1pos).uid
local playa = getThingfromPos(nplayer1pos).uid
if mob ~= 0 or playa ~= 0 then
doPlayerSendCancel(cid,"Someone else is doing the quest right now.")
else
doSummonCreature("Demodras", demon1pos)
doSendMagicEffect(player1pos,2)
doTeleportThing(player1.uid,nplayer1pos)
doSendMagicEffect(nplayer1pos,10)
doTransformItem(item.uid,item.itemid+0)
end
else
doPlayerSendCancel(cid,"You can't enter because you've already finished the arena.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
elseif item.itemid == 1945 then
if getPlayerAccess(cid) == 3 then
doTransformItem(item.uid,item.itemid-1)
else
doPlayerSendCancel(cid,"Sorry, not possible.")
end
end
end
return 1
end

tinha faltado o stackpos. Sem ele script checa qualquer coisa que tenha dentro da arena (até mesmo o chão) auhuhauha dai com o stackpos ele checa só na posição 253 (que é a mais alta, só para players e monstros).

EDIT1: Se eu resolvi seu problema diga algo como "tópico resolvido, podem fechar" pra facilitar o controle do fórum de quais tópicos tão resolvidos/em aberto :wow:  Por um fórum melhor (y)   :accept:

Editado por xWhiteWolf (veja o histórico de edições)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Bom, o que eu precisava já foi resolvido...

Mas depois de testar ele com vários char tentando entrar na arena, um deles morreu e eis que veio um problema...

Quando o player morre, a criatura continua na arena impossibilitando outro player de entrar, eu ia modificar a action pra não contar o bixo, mas poderiam usar isso como bug "alguém entra e tenta matar a criatura, quando ela ta quase morrendo o char morre e o bixo fica na sala, outro entra e termina de matar, isso facilitaria".

Teria como fazer o bixo sumir quando o player morrer e colocar um tempo para a pessoa ficar na arena " seria cerca de 5 minutos" se passar de 5 minutos ele é kikado da arena.

 

=D

 

Edit 1: Bom fiz uma alteração na arena onde será possível ajudar o próximo player...

Imagem da nova arena:

bCf.png

 

Agora vem a parte boa, quando um player entrar na arena, ele irá cair em um sqm com fire com danos de 300, e se ficar nele, de 10 em 10s sofrerá um dano, as torres será para os jogadores não ficarem na arena impossibilitando do próximo player entrar, se ele tentar segurar a arena sofrerá muitos danos =)

É claro, agora será possível 2 jogadores entrarem na arena, mas, se um entrar e o outro a seguir, aparecerá 2 boss. Para que isso n aconteça, será bom que o 1º player entre na arena e mate o boss, ele pode ficar na arena em outro sqm que n seja onde o player aparecerá, assim, quando o próximo entrar ele ajude.

 

 

tópico resolvido, podem fechar.

Editado por zuckah (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo