GodBz 6 Postado Junho 11, 2010 Share Postado Junho 11, 2010 Galera to com um problema ja a um tempo e ainda não consegui achar solução, é bem simples e acho que podera ser resolvido facilmente. È o seguinte: tenho uma arena pvp em meu server, e ela funciona perfeitamente, porem eu sempre faço invasões de monstros nela, e quando os players morrem pra monstros eles perdem XP e Skills, isso não acontece quando um player mata o outro, mais acontece quando o player morre pra algum monstro. Fico muito grato pela ajuda, o que eu gostaria é que os players não perdecem xp mesmo morrendo pra monstros. Informações do server: TFS 0.2.0.0 / 8.40 Note: trocar a versão do server não é viavel Att Link para o comentário Compartilhar em outros sites More sharing options...
Nivaldin 3 Postado Junho 11, 2010 Share Postado Junho 11, 2010 Amigo, eu Não sou nada Profissional, mas acontece que Arena PVP ta programada para player morrer para Player e Não perder nada, Agora se quer fazer Lugar para Raids, aconselho fazer uma Ilha De eventos. :button_ok: Link para o comentário Compartilhar em outros sites More sharing options...
GodBz 6 Postado Junho 12, 2010 Autor Share Postado Junho 12, 2010 Ja fui God em um server em que se morria na arena pra monstro e não perdia xp, quero saber se é possivel fazer isso no meu server Link para o comentário Compartilhar em outros sites More sharing options...
Schiavinato 7 Postado Junho 29, 2010 Share Postado Junho 29, 2010 tenta fazer um creatureevent, pra quando um player morre pra um determinado monstro ele volte pro templo e esses monstros deveriam ter apenas nas suas invasoes nao eskece de colokar a tag no monstro e no login.lua Link para o comentário Compartilhar em outros sites More sharing options...
GodBz 6 Postado Julho 6, 2010 Autor Share Postado Julho 6, 2010 (editado) Não é isso que eu quero amigo... vc entendeu errado... Nos meus eventos eu quero a liberdade de por qualquer monstro, e isso não é nenhum absurdo pois eu ja trabalhei em um server em que se morria na arena pra monstro criado com /m e não se perdia xp! Sera que ninguem vai receber meu REP++?? Editado Julho 6, 2010 por GodBz Link para o comentário Compartilhar em outros sites More sharing options...
Bruno1177 83 Postado Julho 6, 2010 Share Postado Julho 6, 2010 (editado) Tente pelo map editor! Assim.. você vai na zona desejada, e usa o PVP Zone Tool. Uma imagem do PVP Zone Tool: Se não funcionar, poste aqui o Script da arena para que possamos ajuda-lo. Editado Julho 6, 2010 por BruMatt Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Julho 8, 2010 Share Postado Julho 8, 2010 (editado) GodBz, Normalmente o script de uma Arena PVP contém uma verificação para saber se o atacante era um jogador ou uma criatura, Como você pode ver no exemplo abaixo: local arena = { frompos = {x=121, y=33, z=9}, topos = {x=128, y=37, z=9}, exit = {x=121, y=37, z=9} } function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isPlayer(cid) then if isInArea(getPlayerPosition(cid), arena.frompos, arena.topos) then if doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid), TRUE) == TRUE then if doTeleportThing(cid, arena.exit) == TRUE then doSendMagicEffect(arena.exit, 10) doPlayerSendTextMessage(mostDamageKiller,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You have defeated '..getPlayerName(cid)..'!') doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You where defeated by '..getPlayerName(mostDamageKiller)..'!') return FALSE end end end end return TRUE end No caso a verificação de jogador é representada pela função isPlayer(cid), se você quer que a sua "arena" seja universal tanto para MVP e PVP, basta retirar essa estrutura de condição que contém a função. No caso o script para a "arena" ficaria assim: local arena = { frompos = {x=121, y=33, z=9}, topos = {x=128, y=37, z=9}, exit = {x=121, y=37, z=9} } function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isInArea(getPlayerPosition(cid), arena.frompos, arena.topos) then if doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid), TRUE) == TRUE then if doTeleportThing(cid, arena.exit) == TRUE then doSendMagicEffect(arena.exit, 10) doPlayerSendTextMessage(mostDamageKiller,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You have defeated '..getPlayerName(cid)..'!') doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You where defeated by '..getPlayerName(mostDamageKiller)..'!') return FALSE end end end return TRUE end Isso fará o que você quer, O script acima foi só uma exemplificação, contém muitos erros. Não o copie para seu servidor. Cya Editado Julho 8, 2010 por Oneshot Link para o comentário Compartilhar em outros sites More sharing options...
GodBz 6 Postado Julho 19, 2010 Autor Share Postado Julho 19, 2010 Oneshot sua linha de raciocinio foi perfeita, e acho q isso quase resolve o problema, porém não sei onde localizar esse script, ja tinha escutado falar de um script para arena, mais a maior parte dos server isso ja é altomatico (eu acho) e nem existe um script, bom acho q ja vi praticamente todos meus scripts e naum vi nada parecido com isso ai, se souber me dizer onde acha-lo (tfs 0.2) fico mt grato.. Att GodBz, Normalmente o script de uma Arena PVP contém uma verificação para saber se o atacante era um jogador ou uma criatura, Como você pode ver no exemplo abaixo: local arena = { frompos = {x=121, y=33, z=9}, topos = {x=128, y=37, z=9}, exit = {x=121, y=37, z=9} } function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isPlayer(cid) then if isInArea(getPlayerPosition(cid), arena.frompos, arena.topos) then if doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid), TRUE) == TRUE then if doTeleportThing(cid, arena.exit) == TRUE then doSendMagicEffect(arena.exit, 10) doPlayerSendTextMessage(mostDamageKiller,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You have defeated '..getPlayerName(cid)..'!') doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You where defeated by '..getPlayerName(mostDamageKiller)..'!') return FALSE end end end end return TRUE end No caso a verificação de jogador é representada pela função isPlayer(cid), se você quer que a sua "arena" seja universal tanto para MVP e PVP, basta retirar essa estrutura de condição que contém a função. No caso o script para a "arena" ficaria assim: local arena = { frompos = {x=121, y=33, z=9}, topos = {x=128, y=37, z=9}, exit = {x=121, y=37, z=9} } function onPrepareDeath(cid, lastHitKiller, mostDamageKiller) if isInArea(getPlayerPosition(cid), arena.frompos, arena.topos) then if doCreatureAddHealth(cid, getCreatureMaxHealth(cid) - getCreatureHealth(cid), TRUE) == TRUE then if doTeleportThing(cid, arena.exit) == TRUE then doSendMagicEffect(arena.exit, 10) doPlayerSendTextMessage(mostDamageKiller,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You have defeated '..getPlayerName(cid)..'!') doPlayerSendTextMessage(cid,MESSAGE_STATUS_CONSOLE_BLUE,'[ARENA] You where defeated by '..getPlayerName(mostDamageKiller)..'!') return FALSE end end end return TRUE end Isso fará o que você quer, O script acima foi só uma exemplificação, contém muitos erros. Não o copie para seu servidor. Cya Link para o comentário Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Julho 19, 2010 Share Postado Julho 19, 2010 (editado) GodBz Ops, falha minha, O script se localiza na pasta data/creaturescripts/scripts. Não sei o nome, mas ele normalmente vem como pvparena.lua. Editado Julho 19, 2010 por Oneshot Link para o comentário Compartilhar em outros sites More sharing options...
Posts Recomendados