Ir para conteúdo
  • Cadastre-se

Como verificar, remover e adicionar Zona


asafa

Posts recomendados

  • 2 months later...

Em 14/09/2015 at 21:57, asafa disse:

Neste guia eu vou explicar passo a passo como você pode verificar, remover e criar sua zona.

 

Passo I - Verificar o tipo de zona (caso aCis)

  • A maneira mais fácil de descobrir o tipo de zona é comando // zone_check, porem é acessível também a partir do painel de administração, // admin -> Server-> Zone Check.

adjdqr.jpg


Passo II - Removendo o tipo de zona

  • Agora, quando você sabe o tipo(s) da zona (sabemos devido o Passo I) e você quiser removê-lo, vá para o arquivo correspondente (todas as zonas são gravados dentro de /data/xml/zones/). Por exemplo, se você quiser remover a zona de paz, digamos a partir de Primeval Island, você abre o PeaceZone.xml e você procurar o registro. Eles estão com comentarios <! - Xxx ->, por isso não vai ser difícil quanto você pensa.
    
    <zone type="PeaceZone" shape="NPoly" minZ="-4792" maxZ="208"><!-- primeval_peace2 -->
            <node X="4850" Y="-4736" />
            <node X="7294" Y="-4712" />
            <node X="8529" Y="-820" />
            <node X="3615" Y="-737" />
        </zone>

    Simplesmente remova a parte do código e salve. A praia não é mais uma zona de paz.

 

Passo III - Tipos de zona

  • Em primeiro lugar, antes de criar uma nova zona, você deve saber as possíveis formas que existem
    
    Cuboid Zones:
    -------------
    
    Exigir 2 nós (vértices), para  fazer um quadrado, por exemplo:
    
    O . . . .
    .       .
    .       .
    .       .
    . . . . O
    
    O = Nó (vertice)
    
    
    NPoly Zones:
    ------------
    
    Requer 3 ou mais nós (vértices), para fazer um polígono ou outro modelo geométrico, por exemplo um     triangulo:
    
        O
       / \
      /   \
     /     \
    O - - - O
    
    O = Nó (vertice)
    
    
    Cylinder Zones:
    ---------------
    
    Exigir um nó (vértice) e raio para fazer um circulo, por exemplo:
    
              *  *  *
          *             *
        *                 *
      *                     *
     *                       *
    *                         *
    *                         *
    *            O            *
    *                         *
    *                         *
     *                       *
      *                     *
        *                 *
          *             *
              *  *  *
    
    O = Nó (vertice)
    * = Raio

Passo IV - Criando uma Nova zona

  • Cuboid
    Requer apenas 2 nós, como foi dito no passo III acima. Você deve obter apenas 2 nós / vértices (digitando ingame /loc) e outros dois serão gerados automaticamente. Como? É simples, quando as duas linhas se cruzam uns aos outros, o nó é gerado.

    4uuir4.jpg

    Bom exemplo da forma Cuboid são as Arenas. Você pega dois cantos opostos e feito.
    
        <zone type="ArenaZone" shape="Cuboid" minZ="-3596" maxZ="0"><!-- dion_monster_pvp -->
            <node X="11947" Y="183019" />
            <node X="12943" Y="184010" />
            <spawn X="12312" Y="182752" Z="-3558" />
        </zone>
  • NPoly
    Com a NPoly, você pode criar qualquer forma que você imaginar, não há restrições, mas atenção .. Você deve criá-lo com a "cabeça", sem linhas de passagem sobre as outras, caso ocorra, pode ser que algum canto de determinada área fique com a zona.

    ok3pqd.jpg

    A maior parte das zonas usa NPoly, então provavelmente você vai usar-la. Aqui está um exemplo:
    
        <zone type="JailZone" shape="NPoly" minZ="-2992" maxZ="-2792"> <!-- gm_prison -->
            <node X="-116390" Y="-251581" />
            <node X="-112756" Y="-251617" />
            <node X="-112720" Y="-248199" />
            <node X="-116354" Y="-248217" />
        </zone>
    
  • Cylinder
    Requer requer apenas um ponto central. Você declara que o raio com rad = "XX". Na prática, pegue o ponto médio, e simplesmente ande para a frente, pare no lugar que você quer e comparar o valor Y com o valor Y do seu ponto médio, esse valor sera o seu raio.

    20iixt.jpg
     
    
       <zone type="ArenaZone" shape="Cylinder" minZ="-2320" maxZ="-2120" rad="700"> <!-- hot springs circle -->
    
            <node X="151555" Y="-127082" />
    
        </zone>

    Quando você decidiu que forma de usar e você tem as coordenadas, não se esqueça do set / alterar o seu type.
    Se o seu novo zona personalizada é chamado FlagZone, então você deve declate-lo sob type = ""
    <zone type = "FlagZone">
    Basicamente, você pode colocar o código de zona a qualquer arquivo que você deseja, mas a melhor maneira mesmo é manter as coisas organizadas para criar um novo arquivo, nesse caso, FlagZone.xml - você pode copiar qualquer arquivo existente, renomeá-lo, remover todos < zona> registros e colar lá o seu. Dessa forma, você sabe onde procurar se você quiser adicionar mais zonas ou remover.
     
    Estas são as formas disponíveis. X e Y é óbvio, agora você quer saber qual deve ser o valor Z.
    Bem, basicamente, valor Z depende da forma território, se for plano ou acidentada, existem montanhas ou não. Se é plano, mais ou menos, você deve estar bem com + -100 a partir do valor de base gerada a partir de / loc. Você pode adicionar maior para ter 100% de certeza que quando alguém montar o strider, voar com wyvern, não vai sair de sua zona.
    por exemplo, quando você der /loc o loc der um valor 500, eu aconselharia você colocar algo em torno de minZ="400" maxZ="600"
     
    Tudo marcado, tudo ok? Agora é hora de ver se ele está funcionando. Inicie o servidor, vá para a nova zona e digite // zone_check, senão vai para o painel de admin -> Server-> Zone Check ( igual o passo I).
    Você pode pressionar Visualize All para ver a forma. O resultado será mostrado adena no chão, como você pode notar na imagem abaixo.

    D69r5Nx.jpg
     
     
    Basicamente, é isso.
    ps: não sei se já existe algo do tipo no forum, mas não custa nada compartilhar um guia bem feito.
    Crédito: Inteiramente do SweeTs
     

Tem algum vídeo, mostrando como faço pra colocar monastery e ketra ork com alguns devidos spawn que eu quiser? Não estou achando em lugar nenhum na pasta zone... 

Jadson kewin

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...

é tudo que indica  o formato cylinder a frozen nao pega nem que a mulesta! da erro ao ligar o server

Alguem   sabe como  fazer dar certo

j9NKAW1.gif

"A Vontade de se Preparar Transforma Heróis"

"A Dor física é só um mero Sentimento"

🦸🏽‍♂️

rogeriomorais.gif

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
  • 4 weeks later...
  • 4 months later...
Em 09/10/2018 at 00:28, kammilo disse:

Eu tb quero saber pois ele não explica como por como zona pvp ou como zona paz

colocar zona pvp é so coloca o nome type > PvP zona em paz Peace ou Town para n ficar em paz, é só coloca noPeace Zone, e assim por diante simples...

Jadson kewin

Link para o comentário
Compartilhar em outros sites

  • 10 months later...
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





  • Patrocinadores

  • Quem Está Navegando

    • Nenhum usuário registrado visualizando esta página.
  • Posts

    • Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?    
    • muchas gracias muy lindos NPC 🙂
    • relaxa jovem gafanhoto, testa as quests. e posTa os erros indesejaveis.  
    • Se alguém pudesse me ensinar como codificar as missões, eu ficaria feliz em fazer isso sozinho ou pelo menos ajudar. Eu realmente quero jogar em um servidor onde todas as quests funcionem bem e melhor ainda se você puder fazer quests customizadas!
    • mas no interlude, nem todas as quests de class,  vai mostrar onde tem que ir, ate o reborn nao mostrava quando era interlude, só mostrou depois que eles colocaram client classic pra rodar, e ficou melhor ainda quando virou hellbound em diante, mas ha sim alguma chance de modificar isso direto no script para fazer igualmente, só basta te um pouco de paciencia e persistencia exato
    • 408_PathToElvenwizard dá Orion eu tive que mexer tbm, até modifiquei e consegui deixar ela igual do Classic, com a seta e a marcação no mapa. (não retail IL) Dá pra importar py de várias revs, o foda é que não da regular as quest py através do debug em tempo real, pelo menos eu não consegui rsrs
    • Hasta el momento todas las QUESTS son completables si te guias con un tutorial de youtube. El problema es que tienen bugs de locacion y de subquests que no avanzan o no te marcan correctamente a donde ir en el mapa, cosa que en Retail si se ve como corresponde.
    • estranho, mas pelo menos a galera nunca reclamo das quests quando tinha aberto 5x, geral fez class primeira e segunda job, poucos que compraram a class
    • en RUSaCis-3.5 data pack, las Quests estan en formato .java y son diferentes a como estan redactadas en jOrion y jFrozen 1.5 (ProyectX) package net.sf.l2j.gameserver.scripting.quest; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.enums.Paperdoll; import net.sf.l2j.gameserver.enums.QuestStatus; import net.sf.l2j.gameserver.enums.actors.ClassId; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.scripting.QuestState; public class Q224_TestOfSagittarius extends SecondClassQuest { private static final String QUEST_NAME = "Q224_TestOfSagittarius"; // Items private static final int BERNARD_INTRODUCTION = 3294; private static final int HAMIL_LETTER_1 = 3295; private static final int HAMIL_LETTER_2 = 3296; private static final int HAMIL_LETTER_3 = 3297; private static final int HUNTER_RUNE_1 = 3298; private static final int HUNTER_RUNE_2 = 3299; private static final int TALISMAN_OF_KADESH = 3300; private static final int TALISMAN_OF_SNAKE = 3301; private static final int MITHRIL_CLIP = 3302; private static final int STAKATO_CHITIN = 3303; private static final int REINFORCED_BOWSTRING = 3304; private static final int MANASHEN_HORN = 3305; private static final int BLOOD_OF_LIZARDMAN = 3306; private static final int CRESCENT_MOON_BOW = 3028; private static final int WOODEN_ARROW = 17; // Rewards private static final int MARK_OF_SAGITTARIUS = 3293; // NPCs private static final int BERNARD = 30702; private static final int HAMIL = 30626; private static final int SIR_ARON_TANFORD = 30653; private static final int VOKIAN = 30514; private static final int GAUEN = 30717; // Monsters private static final int ANT = 20079; private static final int ANT_CAPTAIN = 20080; private static final int ANT_OVERSEER = 20081; private static final int ANT_RECRUIT = 20082; private static final int ANT_PATROL = 20084; private static final int ANT_GUARD = 20086; private static final int NOBLE_ANT = 20089; private static final int NOBLE_ANT_LEADER = 20090; private static final int BREKA_ORC_SHAMAN = 20269; private static final int BREKA_ORC_OVERLORD = 20270; private static final int MARSH_STAKATO_WORKER = 20230; private static final int MARSH_STAKATO_SOLDIER = 20232; private static final int MARSH_STAKATO_DRONE = 20234; private static final int MARSH_SPIDER = 20233; private static final int ROAD_SCAVENGER = 20551; private static final int MANASHEN_GARGOYLE = 20563; private static final int LETO_LIZARDMAN = 20577; private static final int LETO_LIZARDMAN_ARCHER = 20578; private static final int LETO_LIZARDMAN_SOLDIER = 20579; private static final int LETO_LIZARDMAN_WARRIOR = 20580; private static final int LETO_LIZARDMAN_SHAMAN = 20581; private static final int LETO_LIZARDMAN_OVERLORD = 20582; private static final int SERPENT_DEMON_KADESH = 27090; public Q224_TestOfSagittarius() { super(224, "Test Of Sagittarius"); setItemsIds(BERNARD_INTRODUCTION, HAMIL_LETTER_1, HAMIL_LETTER_2, HAMIL_LETTER_3, HUNTER_RUNE_1, HUNTER_RUNE_2, TALISMAN_OF_KADESH, TALISMAN_OF_SNAKE, MITHRIL_CLIP, STAKATO_CHITIN, REINFORCED_BOWSTRING, MANASHEN_HORN, BLOOD_OF_LIZARDMAN, CRESCENT_MOON_BOW); addQuestStart(BERNARD); addTalkId(BERNARD, HAMIL, SIR_ARON_TANFORD, VOKIAN, GAUEN); addMyDying(ANT, ANT_CAPTAIN, ANT_OVERSEER, ANT_RECRUIT, ANT_PATROL, ANT_GUARD, NOBLE_ANT, NOBLE_ANT_LEADER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, MARSH_STAKATO_WORKER, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, MARSH_SPIDER, ROAD_SCAVENGER, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, SERPENT_DEMON_KADESH); } @Override public String onAdvEvent(String event, Npc npc, Player player) { String htmltext = event; QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; // BERNARD if (event.equalsIgnoreCase("30702-04.htm")) { st.setState(QuestStatus.STARTED); st.setCond(1); playSound(player, SOUND_ACCEPT); giveItems(player, BERNARD_INTRODUCTION, 1); if (giveDimensionalDiamonds39(player)) htmltext = "30702-04a.htm"; } // HAMIL else if (event.equalsIgnoreCase("30626-03.htm")) { st.setCond(2); playSound(player, SOUND_MIDDLE); takeItems(player, BERNARD_INTRODUCTION, 1); giveItems(player, HAMIL_LETTER_1, 1); } else if (event.equalsIgnoreCase("30626-07.htm")) { st.setCond(5); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_1, 10); giveItems(player, HAMIL_LETTER_2, 1); } // SIR_ARON_TANFORD else if (event.equalsIgnoreCase("30653-02.htm")) { st.setCond(3); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_1, 1); } // VOKIAN else if (event.equalsIgnoreCase("30514-02.htm")) { st.setCond(6); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_2, 1); } return htmltext; } @Override public String onTalk(Npc npc, Player player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; switch (st.getState()) { case CREATED: if (player.getClassId() != ClassId.ROGUE && player.getClassId() != ClassId.ELVEN_SCOUT && player.getClassId() != ClassId.ASSASSIN) htmltext = "30702-02.htm"; else if (player.getStatus().getLevel() < 39) htmltext = "30702-01.htm"; else htmltext = "30702-03.htm"; break; case STARTED: int cond = st.getCond(); switch (npc.getNpcId()) { case BERNARD: htmltext = "30702-05.htm"; break; case HAMIL: if (cond == 1) htmltext = "30626-01.htm"; else if (cond == 2 || cond == 3) htmltext = "30626-04.htm"; else if (cond == 4) htmltext = "30626-05.htm"; else if (cond > 4 && cond < 8) htmltext = "30626-08.htm"; else if (cond == 8) { htmltext = "30626-09.htm"; st.setCond(9); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_2, 10); giveItems(player, HAMIL_LETTER_3, 1); } else if (cond > 8 && cond < 12) htmltext = "30626-10.htm"; else if (cond == 12) { htmltext = "30626-11.htm"; st.setCond(13); playSound(player, SOUND_MIDDLE); } else if (cond == 13) htmltext = "30626-12.htm"; else if (cond == 14) { htmltext = "30626-13.htm"; takeItems(player, BLOOD_OF_LIZARDMAN, -1); takeItems(player, CRESCENT_MOON_BOW, 1); takeItems(player, TALISMAN_OF_KADESH, 1); giveItems(player, MARK_OF_SAGITTARIUS, 1); rewardExpAndSp(player, 54726, 20250); player.broadcastPacket(new SocialAction(player, 3)); playSound(player, SOUND_FINISH); st.exitQuest(false); } break; case SIR_ARON_TANFORD: if (cond == 2) htmltext = "30653-01.htm"; else if (cond > 2) htmltext = "30653-03.htm"; break; case VOKIAN: if (cond == 5) htmltext = "30514-01.htm"; else if (cond == 6) htmltext = "30514-03.htm"; else if (cond == 7) { htmltext = "30514-04.htm"; st.setCond(8); playSound(player, SOUND_MIDDLE); takeItems(player, TALISMAN_OF_SNAKE, 1); } else if (cond > 7) htmltext = "30514-05.htm"; break; case GAUEN: if (cond == 9) { htmltext = "30717-01.htm"; st.setCond(10); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_3, 1); } else if (cond == 10) htmltext = "30717-03.htm"; else if (cond == 11) { htmltext = "30717-02.htm"; st.setCond(12); playSound(player, SOUND_MIDDLE); takeItems(player, MANASHEN_HORN, 1); takeItems(player, MITHRIL_CLIP, 1); takeItems(player, REINFORCED_BOWSTRING, 1); takeItems(player, STAKATO_CHITIN, 1); giveItems(player, CRESCENT_MOON_BOW, 1); giveItems(player, WOODEN_ARROW, 10); } else if (cond > 11) htmltext = "30717-04.htm"; break; } break; case COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public void onMyDying(Npc npc, Creature killer) { final Player player = killer.getActingPlayer(); final QuestState st = checkPlayerState(player, npc, QuestStatus.STARTED); if (st == null) return; switch (npc.getNpcId()) { case ANT: case ANT_CAPTAIN: case ANT_OVERSEER: case ANT_RECRUIT: case ANT_PATROL: case ANT_GUARD: case NOBLE_ANT: case NOBLE_ANT_LEADER: if (st.getCond() == 3 && dropItems(player, HUNTER_RUNE_1, 1, 10, 500000)) st.setCond(4); break; case BREKA_ORC_SHAMAN: case BREKA_ORC_OVERLORD: if (st.getCond() == 6 && dropItems(player, HUNTER_RUNE_2, 1, 10, 500000)) { st.setCond(7); giveItems(player, TALISMAN_OF_SNAKE, 1); } break; case MARSH_STAKATO_WORKER: case MARSH_STAKATO_SOLDIER: case MARSH_STAKATO_DRONE: if (st.getCond() == 10 && dropItems(player, STAKATO_CHITIN, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, REINFORCED_BOWSTRING)) st.setCond(11); break; case MARSH_SPIDER: if (st.getCond() == 10 && dropItems(player, REINFORCED_BOWSTRING, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case ROAD_SCAVENGER: if (st.getCond() == 10 && dropItems(player, MITHRIL_CLIP, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, REINFORCED_BOWSTRING, STAKATO_CHITIN)) st.setCond(11); break; case MANASHEN_GARGOYLE: if (st.getCond() == 10 && dropItems(player, MANASHEN_HORN, 1, 1, 100000) && player.getInventory().hasItems(REINFORCED_BOWSTRING, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case LETO_LIZARDMAN: case LETO_LIZARDMAN_ARCHER: case LETO_LIZARDMAN_SOLDIER: case LETO_LIZARDMAN_WARRIOR: case LETO_LIZARDMAN_SHAMAN: case LETO_LIZARDMAN_OVERLORD: if (st.getCond() == 13) { if (((player.getInventory().getItemCount(BLOOD_OF_LIZARDMAN) - 120) * 5) > Rnd.get(100)) { playSound(player, SOUND_BEFORE_BATTLE); takeItems(player, BLOOD_OF_LIZARDMAN, -1); addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } else dropItemsAlways(player, BLOOD_OF_LIZARDMAN, 1, 0); } break; case SERPENT_DEMON_KADESH: if (st.getCond() == 13) { if (player.getInventory().getItemIdFrom(Paperdoll.RHAND) == CRESCENT_MOON_BOW) { st.setCond(14); playSound(player, SOUND_MIDDLE); giveItems(player, TALISMAN_OF_KADESH, 1); } else addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } break; } } }  
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.