Ir para conteúdo
  • Cadastre-se

L2jfrozen 1132 + Mods + Source


Gabrieljdb

Posts recomendados

/*
 * 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.l2spike;
 
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
 
/**
 * @author Anarchy
 *
 */
public class PvpProtection
{
    private Map<KillStats, Long> killStats = null;
    private Map<Integer, List<Integer>> protections = null;
   
    protected PvpProtection()
    {
        killStats = new HashMap<>();
        protections = new HashMap<>();
    }
   
    public void checkKill(L2PcInstance killer, L2PcInstance victim)
    {
        if (killer.isGM())
            return;
       
        KillStats ks = null;
        for (KillStats k : killStats.keySet())
        {
            if (k.getKiller() == killer.getObjectId() && k.getVictim() == victim.getObjectId())
            {
                ks = k;
                break;
            }
        }
       
        if (ks != null)
        {
            if (System.currentTimeMillis() - killStats.get(ks) < 10*1000)
            {
                ks.addKill();
                killStats.put(ks, System.currentTimeMillis());
            }
            else
            {
                ks.removeKills();
                ks.addKill();
            }
           
            if (ks.getKills() >= 4)
                addNewProtection(killer, victim, ks);
        }
        else
        {
            final KillStats nfks = new KillStats(killer.getObjectId(), victim.getObjectId(), 1);
            killStats.put(nfks, System.currentTimeMillis());
        }
    }
   
    public void addNewProtection(L2PcInstance killer, L2PcInstance victim, KillStats ks)
    {
        killStats.remove(ks);
       
        if (protections.containsKey(victim))
            protections.get(victim).add(killer.getObjectId());
        else
        {
            List<Integer> temp = new ArrayList<>();
            temp.add(killer.getObjectId());
            protections.put(victim.getObjectId(), temp);
        }
       
        killer.sendMessage("Killing protection enabled. You may not be rewarded for killing "+victim+" for 15 minutes.");
        ThreadPoolManager.getInstance().scheduleGeneral(() -> protections.get(victim.getObjectId()).remove(killer.getObjectId()), 1000*60*15);
    }
   
    public boolean protectionExists(L2PcInstance killer, L2PcInstance victim)
    {
        if (!killer.isGM() && ((killer.getClan() != null && killer.getClan() == victim.getClan()) || (killer.getClan() != null && victim.getClan() != null && killer.getClan().getAllyName() != "" && killer.getClan().getAllyName() != null && killer.getClan().getAllyName().equals(victim.getClan().getAllyName())) || (killer.getClient().getConnection().getInetAddress().getHostAddress().equals(victim.getClient().getConnection().getInetAddress().getHostAddress()))))
            return true;
       
        if (protections.containsKey(victim.getObjectId()))
            if (protections.get(victim.getObjectId()).contains(killer.getObjectId()))
                return true;
       
        return false;
    }
   
    public static PvpProtection getInstance()
    {
        return SingletonHolder.instance;
    }
   
    private static class SingletonHolder
    {
        protected static final PvpProtection instance = new PvpProtection();
    }
   
    private class KillStats
    {
        private int killer;
        private int victim;
        private int kills;
       
        public KillStats(int killer, int victim, int kills)
        {
            this.killer = killer;
            this.victim = victim;
            this.kills = kills;
        }
       
        public void removeKills()
        {
            kills = 0;
        }
       
        public void addKill()
        {
            kills++;
        }
       
        public int getKills()
        {
            return kills;
        }
       
        public int getKiller()
        {
            return killer;
        }
       
        public int getVictim()
        {
            return victim;
        }
    }
}

Also, in L2PcInstance, find setPvpKills(getPvpKills()+1) and ABOVE it add:

		if (PvpProtection.getInstance().protectionExists(this, targetPlayer))
		{
			sendMessage("You did not get any rewards from this kill.");
			return;
		}
		PvpProtection.getInstance().checkKill(this, targetPlayer);

And in GameServer add:

PvpProtection.getInstance();

 

 

 

 

esse codigo bloqueia o ponto de pvp para

quem matar mesmo char 4x, matou as 4 bloqueia por 15min

bloqueia mesmo clan e ally

bloqueia ponto quando mata admin gm

e da mesma pt

e não deixa de entregar so o ponto

não entrega qualquer reward configurada como pvp point item

 

é só colocar o code em qualquer lugar da source

eu vou adicionar e deixar pra vcs testarem, blz

vou colocar aqui

com.l2jfrozen.gameserver

 

code aqui tmb

https://pastebin.com/hV9gqeE1

Editado por Gabrieljdb

Em breve novidades...

Link para o comentário
Compartilhar em outros sites


Bom, informo a vocês que estavam esperando pela 1ª versão do servidor que eu estou configurando que fiz uns testes aqui é contem muitos erros em alguns mods, e não vou ter tempo de resolve los antes de sair de ferias e hoje a noite ja estou saindo, então vai ter que ficar pra muito mais alem que planejamos.

 

Lado bom: 

  • Vamos ter mais tempo pra ter ideia novas.
  • Vamos poder planejar melhor tudo.
  • Quando eu voltar vou estar de cabeça limpa.

Lado nem tão bom:

  • Vou ficar fora 15 dias.
  • Vai demorar mais pra sair a 1ª versão
  • Quem queria pra agora vai ter que esperar.

 

Concluirmos então meus amiguinhos que vamos ter que esperar muito mais e depois ficaremos felizes pela espera.

Espero a compreensão de todos.

Vou deixar a data prevista no tópico.

Um abraço!

Em breve novidades...

Link para o comentário
Compartilhar em outros sites

 

Bom, informo a vocês que estavam esperando pela 1ª versão do servidor que eu estou configurando que fiz uns testes aqui é contem muitos erros em alguns mods, e não vou ter tempo de resolve los antes de sair de ferias e hoje a noite ja estou saindo, então vai ter que ficar pra muito mais alem que planejamos.

 

Lado bom: 

  • Vamos ter mais tempo pra ter ideia novas.
  • Vamos poder planejar melhor tudo.
  • Quando eu voltar vou estar de cabeça limpa.

Lado nem tão bom:

  • Vou ficar fora 15 dias.
  • Vai demorar mais pra sair a 1ª versão
  • Quem queria pra agora vai ter que esperar.

 

Concluirmos então meus amiguinhos que vamos ter que esperar muito mais e depois ficaremos felizes pela espera.

Espero a compreensão de todos.

Vou deixar a data prevista no tópico.

Um abraço!

Não se váaaa, não nos abandone pf, pois sem vc vou ficar louc♫

Link para o comentário
Compartilhar em outros sites

Lembra de por esse mod aqui:

https://www.l2jbrasil.com/index.php?/topic/119189-dressme-interlude-acis-l2jfrozen/

coloca ele pra poder usar pelo .menu tbm
e se possível adiciona essa config nele:

# Custom List Armor
EventChests = Draconic_Suit,19510;DarkKiller_Suit,19511;Light_Assasin,19512;Dark_Assassin,19513;Beleth_Suit,19514;
EventLegs = 0,0;0,0;0,0;0,0;
EventBoots = 0,0;0,0;0,0;0,0;
EventGloves = 0,0;0,0;0,0;0,0;
EventHair = Draconic_Suit,19515;DarkKiller_Suit,19516;Light_Assasin,19517;Dark_Assassin,19518;Beleth_Suit,19519;

Lembra de separar o golden scroll, entre grade B , A e S ao invés de um só pra todas as grades!

 

Coloca tbm no .menu a opção color name, pra poder alterar a cor do nome e titulo e pra poder usar é necessario ter X Item com X Quantia - Configuravel,
no caso o item que o player recebe ao matar outro player no pvp!

Editado por Kallisto

RawbUVC.jpgEstá com medo Ptista Safada?
É A NOVA ERA!qB2L169.jpg

Link para o comentário
Compartilhar em outros sites

 

O cara disse que dia 15 voltava,
hoje ja é 18 e nem as caras deu..
affs,  pq todo cara que começa um desenvolvimento bom de rev aqui no forum some ou para.. sinceramente ?

Paciência cara, deve ter acontecido algum imprevisto !!

vamos esperar para ver relaxe..

Posso todas as coisas naquele que me fortalece.

Filipenses 4:13 😀

Saimon Cordeiro.gif

Link para o comentário
Compartilhar em outros sites

 

A pedido do membro @Kallisto por uma Source L2jFrozen com alguns Mods da preferencia dele iniciarei aqui um desenvolvimento.

Peguei a Source limpa da jFrozen deste link: SVN

 

PROGRAMAS USADOS:

  1. Java: JDK 7 Update 2
  2. MySQL: 5.7
  3. Navicat: 8.0
  4. Eclipse: SDK 3.7.1
  5. Slik Subversion: 1.7.2
  6. Winrar

 

O QUE  FOI FEITO:

 Proteções:

  • No Trade in Combate
  • Aio no use gatekeeper
  • Aio no use class master
  • Aio no participe events
  • aio no use vip status item
  • vip no use aio status item
  •  

Modificações:

  • Days to Siege Config
  • Server Credits Config
  • replaces for welcome.htm
  • Banking System full edit config
  • Enchant System full edit config
  • New Propertie Status system
  • New Propertie Items handler
  • New Propertie Npcs core
  • Announce Obtained Status: Noble, Aio, Vip, Hero
  • Announce Login Status: Staff, Noble, Aio, Vip, Hero, Lord
  • Last Login in welcome.htm
  • Skills for Aio & Vip
  • Effects for Aio & Vip
  • Name / Title Color for Aio & Vip
  • Items Reward for Aio & Vip
  • Firework effect + ExScreenMsg use items handler
  •  

Zonas:

  • Newbie Zone
  • Hero Zone
  • Donator Zone
  • Multifuncional Zone
  • PvP Flag Zone
  • Clan War Zone
  •  

Npcs:

  • NPC Smart Shop
  • NPC Skill Seller
  • NPC Bug Report 
  • NPC Item Marketer
  • NPC Fast Augment
  • NPC Macro Buffer
  •  

Items:

  • Universal Enchant
  • Golden Enchant
  • Clan Full Item
  • Clan Skill Item
  • Clan Level Item
  • Clan Reputation Item
  • Change Sex Item
  • Change Name Item
  • Change Base Class Item
  • Aio Status Item
  • Vip Status Item
  • Noble Status Item
  • Hero Status Item
  • PvP Reward Item
  • Pk Reward Item
  •  

Comandos:

  • .menu
  • .info
  • .ctfjoin, leave, info
  • .tvtjoin, leave, info
  • .dmjoin, leave, info
  • .deposit
  • .withdraw
  • .aioinfo
  • .vipinfo
  • //mashero
  • //masrecal
  • //send donate
  • //setvip char days
  • //setaio char days
  •  

Sistemas:

  • Aio System
  • Vip System
  • Hero System
  • Noble System
  • Donator System
  • Auto Restart System
  • Bot Protection System
  • PvP / Pk Color System
  •  

Eventos:

  • Achievements
  • Trivia
  • Hitman
  • Arena 2x2
  • CTF
  • TVT
  • DM
  • TW
  • Pc Bang Points
  • Wedding
  • Champion Mobs

 

DOWNLOADS:

Patch:


====================================================
itemname-e.dat
====================================================

10000	Donator Scroll: Enchant Weapon		A scroll of enchantment that empowers a weapon. 	-1					0	0	0	
10001	Donator Scroll: Enchant Armor		A scroll of enchantment that empowers a armor 	-1					0	0	0	
10002	Donator Coin		Currency used to purchase valuable items.	-1					0	0	0	
10003	Gold Coin		Currency used to purchase valuable items.	-1					0	0	0	
10004	Gold Bar		Currency used to purchase valuable items.	-1					0	0	0	
10005	Noble Status Item			-1					0	0	0	
10006	Aio Status Item			-1					0	0	0	
10007	Vip Status Item			-1					0	0	0	
10008	Hero Status Item			-1					0	0	0	
10009	PvP Point			-1					0	0	0	
10010	Pk Point			-1					0	0	0	
10011	Clan Full			-1					0	0	0	
10012	Clan Skill			-1					0	0	0	
10013	Clan Level			-1					0	0	0	
10014	Clan Reputation			-1					0	0	0	

====================================================
etcitemgrp.dat
====================================================

2	10000	0	3	6	3	0	dropitems.drop_scroll_m00			dropitemstex.drop_scroll_t00			icon.Item_CanUse31					0	120	18	0	0	1		1		ItemSound.itemdrop_scroll		0	0	0
2	10001	0	3	6	3	0	dropitems.drop_scroll_m00			dropitemstex.drop_scroll_t00			icon.Item_CanUse30					0	120	18	0	0	1		1		ItemSound.itemdrop_scroll		0	0	0
2	10002	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_coin_of_fair_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10003	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_coins_gold_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10004	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_lump_yellow_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10005	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10006	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10007	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10008	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10009	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.skill1502					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10010	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.skill1501					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10011	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10012	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10013	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0
2	10014	0	3	2	5	0	dropitems.drop_sack_m00			dropitemstex.drop_sack_t00			icon.etc_l2_i00					0	0	18	0	0	1		1		ItemSound.itemdrop_sack		2	0	0

====================================================


PRINTS:

Aqui o primeiro álbum de fotos = https://imgur.com/a/tNg05Qb

ANDAMENTO: 65%

 

Créditos: @Gabrieljdb @L2JBRASIL FORUM

OBS: Se for para adicionar mais mods cole abaixo o link 

Se souber de algum Erro ou má configuração relate tambem.

O QUE ESTIVER AO ALCANCE DO MEU HUMILDE CONHECIMENTO ,FAREI.

 

 

 

Previsão para termino? DOM, 27/01/2019

 

Poderia forcecer teu mod de dias de siege e hero? To querendo colocar siege acada 7 dias e hero a cada 30.

 

Não acho como

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...
  • 3 weeks later...
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.