Ir para conteúdo
  • Cadastre-se

L2J Mega Corrigido


Christian-SDM

Posts recomendados


31 minutos atrás, lTheLegenD disse:

os kra vem no topico so pra criticar e aumentar  os posts kkk

 

@Albeci Nogueira 

se poder me ajudar ja editei todos os arquivos e continua assim *-*2841453_Semttulo.png.ec4eb685e111335558b99458675fe26e.png

1º da uma olhada no nos arquivos dos itens que vc editou e ver se nenhuma tag esta faltando ou a mais, tipo assim:

<item id="4500" type="EtcItem" name="Greater Dye of INT (Int+1 Wit-2)">
    <set name="icon" val="icon.etc_int_hena_i01" />
    <set name="etcitem_type" val="dye" />
    <set name="material" val="LIQUID" />
    <set name="weight" val="150" />
    <set name="is_stackable" val="true" />
  </item> 
</item> (as vezes acontece de vc colocar duas tags dessa no copia e cola sem saber)

2º Ver se o arquivo da sua system (itemname) está direitinho

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

@Christian-SDM

Mano você acha que tem como adaptar esse mod do votesystemglobal para a rev desse projeto? segundo o site esse mod é para a rev 362 com java 8

http://www.votesystemglobal.com/downloads/L2JaCis_362_1.3.zip0

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Agora, Albeci Nogueira disse:

@Christian-SDM

Mano você acha que tem como adaptar esse mod do votesystemglobal para a rev desse projeto? segundo o site esse mod é para a rev 362 com java 8

http://www.votesystemglobal.com/downloads/L2JaCis_362_1.3.zip0

o mano, vc ta fugindo do assunto do tópico, isso que vc quer é um pedido, tem q se na area de pedido.

Link para o comentário
Compartilhar em outros sites

18 horas atrás, Christian-SDM disse:

PcBang para l2jmega, tudo certinho, só adicionar conforme a diff. Ja foi testado por mim. Deixe aquele like 😄

 

Galera esse pc bang é um evento de  um item se usado, pensei que era um evento de contagem, mas o restante do código ta no link abaixo.

https://pastebin.com/b2FCGS3m

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Christian-SDM disse:

Galera esse pc bang é um evento de  um item se usado, pensei que era um evento de contagem, mas o restante do código ta no link abaixo.

https://pastebin.com/b2FCGS3m

Quando testamos aqui no meu pc, vimos ele fazendo a contagem direitinho, mas realmente não adicionava o item para que possa ser usado no jogo como moeda de troca..

vou add aqui. 

muito atencioso de sua parte.

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Agora, Albeci Nogueira disse:

Quando testamos aqui no meu pc, vimos ele fazendo a contagem direitinho, mas realmente não adicionava o item para que possa ser usado no jogo como moeda de troca..

vou add aqui. 

muito atencioso de sua parte.

poisé eu não conheço o game direito, unico q joguei um tempo foi c4, e la não tinha esse PCBang,  mas falta pouca coisa no código, só analisar e adicionar.

Link para o comentário
Compartilhar em outros sites

11 horas atrás, lTheLegenD disse:

alguem me ajdua ai pfv.. 

@Albeci Nogueira

@Christian-SDM

 

entrei no forum agora, não tinha visto sua dúvida, mas ainda  bem que já resolveu, é assim mesmo, não pode desistir e ficar esperando sempre pelos outros,  tbm faço isso, posto a duvida mas fico procurando consertar. Parabens!

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

8 horas atrás, lTheLegenD disse:

qual os comandos dos fakes ? 

Segue os seguintes comandos
//fakes (mostra uma janela com o total de fakes e um link para vc dar spawn no fake)
//spawnrandom (dar spawn do player fake)
 //deletefake (seleciona o target do fake e digita esse comando para deletar )
//spawnenchante (dar spawn em um fake que simula encantando uma arma)

Esses comandos abaixos não funcionam
//takecontrol
//releasecontrol
 //spawnwalke

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

10 horas atrás, Albeci Nogueira disse:

Segue os seguintes comandos
//fakes (mostra uma janela com o total de fakes e um link para vc dar spawn no fake)
//spawnrandom (dar spawn do player fake)
 //deletefake (seleciona o target do fake e digita esse comando para deletar )
//spawnenchante (dar spawn em um fake que simula encantando uma arma)

Esses comandos abaixos não funcionam
//takecontrol
//releasecontrol
 //spawnwalke

 

aqui os random nao se atacam .. todo mundo parado kk

www.facebook.com/marcelojunior07
Seja diferente !

Link para o comentário
Compartilhar em outros sites

16 horas atrás, lTheLegenD disse:

 

aqui os random nao se atacam .. todo mundo parado kk

da spawn neles la em primeval isle (area pvp)

e na area de farm quando vc colocar eles, rita algum e verás um ataque mortal, todos se unem para te matar depois eles se matam

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

12 horas atrás, luisalberto disse:

Como hago aparecer los npc custom del servidor porfavor.

gameserver/data/xml/npcs (arquivo CustomNpcs.xml)

Abre esse arquivo e verás os id's dos mesmo.

com o char Admin vai até o lugar onde quer colocar e use o comando //spawn id (do npc)

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Em 08/01/2020 at 15:02, Christian-SDM disse:

Source v4 ( ja implementado a correção do dagger)

Pack v5 ( correção do dagger, não tava tirando dano no backtab entre outras skills, só tirava dano quando pegava o lethal)

Patch Limpo (system+systerures)

Mysql 5.5 Caso não consiga fazer,por conta do erro.

JDK 8 64 BITS

Correção da class para quem ja edito e adicionou outros mods, para não recomeçar do zero.

Procure a Class Blow.java e coloque todo o codigo Abaixo!

  Mostrar conteúdo oculto

 

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package net.sf.l2j.gameserver.handler.skillhandlers;

import net.sf.l2j.gameserver.handler.ISkillHandler;
import net.sf.l2j.gameserver.model.L2Effect;

import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.model.ShotType;
import net.sf.l2j.gameserver.model.WorldObject;
import net.sf.l2j.gameserver.model.actor.Creature;
import net.sf.l2j.gameserver.model.actor.instance.Player;
import net.sf.l2j.gameserver.network.SystemMessageId;
import net.sf.l2j.gameserver.network.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.skills.Env;
import net.sf.l2j.gameserver.skills.Formulas;
import net.sf.l2j.gameserver.skills.basefuncs.Func;
import net.sf.l2j.gameserver.templates.skills.L2SkillType;

/**
 * @author Steuf
 */
public class Blow implements ISkillHandler
{
    private static final L2SkillType[] SKILL_IDS =
    {
        L2SkillType.BLOW
    };
    
    public static final int FRONT = 50;
    public static final int SIDE = 60;
    public static final int BEHIND = 70;
    
    @Override
    public void useSkill(Creature activeChar, L2Skill skill, WorldObject[] targets)
    {
        if (activeChar.isAlikeDead())
            return;
        
        final boolean ss = activeChar.isChargedShot(ShotType.SOULSHOT);
        
        for (WorldObject obj : targets)
        {
            if (!(obj instanceof Creature))
                continue;
            
            final Creature target = ((Creature) obj);
            if (target.isAlikeDead())
                continue;
            
            byte _successChance = SIDE;
            
            if (activeChar.isBehindTarget())
                _successChance = BEHIND;
            else if (activeChar.isInFrontOfTarget())
                _successChance = FRONT;
            
            // If skill requires Crit or skill requires behind, calculate chance based on DEX, Position and on self BUFF
            boolean success = true;
            if ((skill.getCondition() & L2Skill.COND_BEHIND) != 0)
                success = (_successChance == BEHIND);
            if ((skill.getCondition() & L2Skill.COND_CRIT) != 0)
                success = (success && Formulas.calcBlow(activeChar, target, _successChance));
            
            if (success)
            {
                // Calculate skill evasion
                boolean skillIsEvaded = Formulas.calcPhysicalSkillEvasion(target, skill);
                if (skillIsEvaded)
                {
                    if (activeChar instanceof Player)
                        ((Player) activeChar).sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_DODGES_ATTACK).addCharName(target));
                    
                    if (target instanceof Player)
                        ((Player) target).sendPacket(SystemMessage.getSystemMessage(SystemMessageId.AVOIDED_S1_ATTACK).addCharName(activeChar));
                    
                    // no futher calculations needed.
                    continue;
                }
                
                // Calculate skill reflect
                final byte reflect = Formulas.calcSkillReflect(target, skill);
                if (skill.hasEffects())
                {
                    if (reflect == Formulas.SKILL_REFLECT_SUCCEED)
                    {
                        activeChar.stopSkillEffects(skill.getId());
                        skill.getEffects(target, activeChar);
                        activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(skill));
                    }
                    else
                    {
                        final byte shld = Formulas.calcShldUse(activeChar, target, skill);
                        target.stopSkillEffects(skill.getId());
                        if (Formulas.calcSkillSuccess(activeChar, target, skill, shld, true))
                        {
                            skill.getEffects(activeChar, target, new Env(shld, false, false, false));
                            target.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.YOU_FEEL_S1_EFFECT).addSkillName(skill));
                        }
                        else
                            activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_RESISTED_YOUR_S2).addCharName(target).addSkillName(skill));
                    }
                }
                
                byte shld = Formulas.calcShldUse(activeChar, target, skill);
                
                // Crit rate base crit rate for skill, modified with STR bonus
                boolean crit = false;
                if (Formulas.calcCrit(skill.getBaseCritRate() * 10 * Formulas.getSTRBonus(activeChar)))
                    crit = true;
                
                double damage = (int) Formulas.calcBlowDamage(activeChar, target, skill, shld, ss);
                if (crit)
                {
                    damage *= 2;
                    
                    // Vicious Stance is special after C5, and only for BLOW skills
                    L2Effect vicious = activeChar.getFirstEffect(312);
                    if (vicious != null && damage > 1)
                    {
                        for (Func func : vicious.getStatFuncs())
                        {
                            final Env env = new Env();
                            env.setCharacter(activeChar);
                            env.setTarget(target);
                            env.setSkill(skill);
                            env.setValue(damage);
                            
                            func.calc(env);
                            damage = (int) env.getValue();
                        }
                    }
                }
                
                target.reduceCurrentHp(damage, activeChar, skill);
                
                // vengeance reflected damage
                if ((reflect & Formulas.SKILL_REFLECT_VENGEANCE) != 0)
                {
                    if (target instanceof Player)
                        target.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.COUNTERED_S1_ATTACK).addCharName(activeChar));
                    
                    if (activeChar instanceof Player)
                        activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.S1_PERFORMING_COUNTERATTACK).addCharName(target));
                    
                    // Formula from Diego post, 700 from rpg tests
                    double vegdamage = (700 * target.getPAtk(activeChar) / activeChar.getPDef(target));
                    activeChar.reduceCurrentHp(vegdamage, target, skill);
                }
                
                // Manage cast break of the target (calculating rate, sending message...)
                Formulas.calcCastBreak(target, damage);
                
                if (activeChar instanceof Player)
                    ((Player) activeChar).sendDamageMessage(target, (int) damage, false, true, false);
            }
            else
                activeChar.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.ATTACK_FAILED));
            
            // Possibility of a lethal strike
            Formulas.calcLethalHit(activeChar, target, skill);
            
            if (skill.hasSelfEffects())
            {
                final L2Effect effect = activeChar.getFirstEffect(skill.getId());
                if (effect != null && effect.isSelfEffect())
                    effect.exit();
                
                skill.getEffectsSelf(activeChar);
            }
            activeChar.setChargedShot(ShotType.SOULSHOT, skill.isStaticReuse());
        }
    }
    
    @Override
    public L2SkillType[] getSkillIds()
    {
        return SKILL_IDS;
    }
}

 

 


 

esse sao os links. mas tem q compilar a source com java 8 para nao da erro na hora de logar.

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, The HakaiShin Kira GM disse:

Os links da source nao ta disponivel

https://mega.nz/#!O5A1GA6Y!p8D_wJeZtRx5BFdBhDbEQXxaEsMCR4me7cuFupxMOUI

ta normal acabei de abrir Source v4

giphy.gif 
Se te ajudei não custa nada Curtir  ou Agradecer😉

Link para o comentário
Compartilhar em outros sites

Em 15/01/2020 at 13:00, Albeci Nogueira disse:

da spawn neles la em primeval isle (area pvp)

e na area de farm quando vc colocar eles, rita algum e verás um ataque mortal, todos se unem para te matar depois eles se matam

aqui nao se atacam coloquei 5 la bati em todos e nada ...

www.facebook.com/marcelojunior07
Seja diferente !

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • 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.