Secret Experience

Secret Experience (https://secretexperience.net/)
-   [Lineage] Java Mods (https://secretexperience.net/lineage-java-mods/)
-   -   [L2JServer] Treasure Box (https://secretexperience.net/lineage-java-mods/30655-treasure-box.html)

allanalcantara 05-04-2011 01:55 PM

Treasure Box
 
1 Anexo(s)
Tá ai em java o evento para fazer com tesouro..
Deverá pegar as LOC do game e adicionar ai , e o sistema irá pegar de forma aleatorio as coordenadas..
Sistema era de Evento de Boss porém a um tempo atrás fiz modificações para que seje de matar um certo Mob, porém no caso aqui você pode por uma baú ou qualquer coisa que seje para suprir suas necessidades.
Só muda os Dizeres.. ( OVER12)

Código:

/*
 * 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 events.TesouroPerdido;
 
import java.util.List;
import java.util.Map;

import javolution.util.FastList;
import javolution.util.FastMap;
 
import com.l2jserver.gameserver.Announcements;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.util.Rnd;
 
/**
 * @author TheOne
 * @version Over12 - Configurado , e Fixados erros.
 */
 
public class TesouroPerdido extends Quest
{
    private static final String qn = "TesouroPerdido";
    private static final int _eventInterval = 4 * 60 * 60 * 1000; // Intervalo do Evento em 4 em 4 horas.
    private static final int _firstStart = 10 * 60 * 1000; //Apos religar o servidor inicia o evento automaticamente 10 minuto.
    private static final int _mobInterval = 1 * 60 * 60 * 1000;//1 Hora ate matar o Mob.
    private static L2Npc RbSpawn = null;
    private static final String[][] Mobs = {
        { "Tesouro Perdido", "60001" }, //Npc para usar

  };
    private static final String[][] RbCoords = {  // Valores aleatorios.
        { "Primeval Isle", "10724,-23729,-3650" }, // Coordenadas de onde pode aparecer o mob ou tesouro , pegar Coordenadas no game e adicionar.
        { "Primeval Isle", "10724,-23729,-3650" },
       
    };
    private static final int MOUNT = 5;
    private static final int[][] REWARD = {//id,amount,chance
    { 9546, Rnd.get(1, MOUNT), 90 },//Fire Stone
    { 9552, Rnd.get(1, MOUNT), 7 },//Fire crystal
    { 9558, Rnd.get(1, MOUNT), 1 },//Fire jewel
   
    { 9547, Rnd.get(1, MOUNT), 90 },//Water Stone
    { 9553, Rnd.get(1, MOUNT), 7 },//Water crystal
    { 9559, Rnd.get(1, MOUNT), 1 },//Water jewel
   
    { 9548, Rnd.get(1, MOUNT), 90 },//Earth Stone
    { 9554, Rnd.get(1, MOUNT), 7 },//Earth crystal
    { 9560, Rnd.get(1, MOUNT), 1 },//Earth jewel
   
    { 9549, Rnd.get(1, MOUNT), 90 },//Wind Stone
    { 9555, Rnd.get(1, MOUNT), 7 },//Wind crystal
    { 9561, Rnd.get(1, MOUNT), 1 },//Wind jewel
   
    { 9550, Rnd.get(1, MOUNT), 90 },//Dark Stone
    { 9556, Rnd.get(1, MOUNT), 7 },//Dark crystal
    { 9562, Rnd.get(1, MOUNT), 1 },//Wind jewel
   
    { 9551, Rnd.get(1, MOUNT), 90 },//Divine Stone
    { 9557, Rnd.get(1, MOUNT), 7 },//Divine crystal
    { 9563, Rnd.get(1, MOUNT), 1 },//Divine jewel
       
        { 6393, Rnd.get(10, MOUNT), 90 },
        { 60020, Rnd.get(1, MOUNT), 90 },
   
    { 60021, Rnd.get(1, MOUNT), 40 },//Festival Adena
    { 14169, 1, 33 },//Top-Grade Life Stone - level 84
    };
    private static Map<Integer, String> Mobs_ = new FastMap<Integer, String>();
    private static List<Integer> MobsId = new FastList<Integer>();
    private static List<String> MobsLocName = new FastList<String>();
    private static List<Integer> MobsX = new FastList<Integer>();
    private static List<Integer> MobsY = new FastList<Integer>();
    private static List<Integer> MobsZ = new FastList<Integer>();
    static
    {
        for (String[] monster : Mobs)
        {
            Mobs_.put(Integer.valueOf(monster[1]), monster[0]);
            MobsId.add(Integer.valueOf(monster[1]));
        }
       
        for (String[] mobCoords : RbCoords)
        {
            String[] coords = mobCoords[1].split(",");
            MobsLocName.add(mobCoords[0]);
            MobsX.add(Integer.valueOf(coords[0]));
            MobsY.add(Integer.valueOf(coords[1]));
            MobsZ.add(Integer.valueOf(coords[2]));
        }
    }
   
    public TesouroPerdido(int questId, String name, String descr)
    {
        super(questId, name, descr);
        for (int mobsid : MobsId)
        {
            addKillId(mobsid);
        }
       
        this.startQuestTimer("raidSpawn", _firstStart, null, null);
    }
   
    @Override
    public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
    {
        if (event.equalsIgnoreCase("raidSpawn"))
        {
            int rbId = Rnd.get(MobsId.size());//id
            int rbLoc = Rnd.get(RbCoords.length);//loc
            String mob = Mobs_.get(MobsId.get(rbId));
            String location = MobsLocName.get(rbLoc);
            Announcements.getInstance().announceToAll("Mob Apareceu: " + mob + " em : " + location + ", Corra para mata-lo , em 1 hora ele sumira");
            System.out.println("# Mob Evento Iniciado (" + mob + ")!");
            RbSpawn = this.addSpawn(MobsId.get(rbId), MobsX.get(rbLoc), MobsY.get(rbLoc), MobsZ.get(rbLoc), 0, false, 0);
            this.startQuestTimer("RbDespawn", _mobInterval, null, null);
        }
       
        if (event.equalsIgnoreCase("RbDespawn"))
        {
            this.startQuestTimer("raidSpawn", _eventInterval, null, null);
            RbSpawn.deleteMe();
            Announcements.getInstance().announceToAll("Ninguem derrotou o Mob.");
            System.out.println("# Evento desapareu.!");
        }
        return null;
    }
   
    @Override
    public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
    {
        if (npc == RbSpawn)
        {
            if (npc.getObjectId() == RbSpawn.getObjectId())
            {
                for (L2PcInstance p : npc.getKnownList().getKnownPlayersInRadius(1300))
                {
                    if (!p.isDead())
                    {
                        p.sendMessage("Recompensa por ter Vencido!");
                        for (int[] item : REWARD)
                       
                        String name = player.getName();
                              Announcements.getInstance().announceToAll("Parabens derrotaram o Mob! " + name + " .");

                        {
                            switch (item[0])
                            {                             
                                default:
                                {
                                    if (Rnd.get(100) <= item[2])
                                        p.addItem(qn, item[0], item[1], player, true);
                                }
                                    break;
                            }
                        }

                    }
                }
            }
        }
        this.startQuestTimer("raidSpawn", _eventInterval, null, null);
        this.cancelQuestTimer("RbDespawn", null, null);
        Announcements.getInstance().announceToAll("Parabens derrotaram o Mob!");
        System.out.println("# Mob Morto !!");
        return null;
    }
   
    public static void main(String[] args)
    {
        new TesouroPerdido(-1, qn, "events");
        System.out.println(qn + " - ON");
    }
}

mais informações
Cria uma Npc Custom( Aparencia de Bau ) pega o ID dessa npc e adicione nessa linha:
Código:

{ "Tesouro Perdido", "60001" }
// Já ta alto explicativa o 60001 é o Id da npc, e o nome da Npc que será o Baú..

Se voce quiser adicionar várias areas.. para turma procurar , deverá ir no Game e digitar loc dos locais ( Principais ) e adicionar nessa linha:
Código:

{ "Primeval Isle", "10724,-23729,-3650" },
// Adiciona o Nome do Local ou adicionar alguma dica pra turma acha o Bau em uma area.. e o restant é o X, Y, e Z das coordenads do game. se for adicinar vários locais apenas copie a linha e vai adicinonando uma abaixo da outra.

Aqui você configura o que o seu Bau pode dar de item..
Código:

private static final int[][] REWARD = {//id,amount,chance
    { 9546, Rnd.get(1, MOUNT), 90 },//Fire Stone
Já ta meio explicando como que é ..

Por fim mude os Dizeres que irá surgir no Anuncio do Game..
Código:

l("Mob Apareceu: " + mob + " em : " + location + ", Corra para mata-lo , em 1 hora ele sumira");
O que tá de vermelho , não é bom tirar por que fiz umas concatenações que indica o Nome do Npc , ou Mob ou que for, e o Local que iráa aparecer ( Nao as coordenadas mais sim a area que vc por, Exemplo: Dica: Proximo a Hunter village e bla bla ) ..
Modifica apenas entre " "

Creio que deu pra entender.. ;)




[Adaptado Para Frozen diff]
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

[ INSTALAÇÃO DA DIFF]
Bom para colocalo no Frozen voce terar que ir em

1- C:\L2jFrozen 720\gameserver\data\scripts
2- Dentro desta pasta voce ira criar uma pasta chamada de "events"
3- Dentro da pasta "events" voce ira criar uma outra chamada "TesouroPerdido"
4,1- Dentro da pasta "TesouroPerdido" voce ira criar um arquivo com o bloco de notas
Chamado "TesouroPerdido.java"
4,2- Como crio este arquivo facil Dentro da pasta voce irar "clicar com o botao direito do mouse"
Depois "Novo > Documento de Texto" ira aparecer o arquivo neste arquivo nao de nome a ele ainda
Agora copie o codigo e cole dentro deste arquivo agora voce ira ir no topo do Programa Bloco de Notas
e va em Arquivo > Salvar como > TesouroPerdido.java ... pronto
5- volte a pasta "C:\L2jFrozen 720\gameserver\data" abra o arquivo scripts.cfg e add assim

#java MOD
events/TesouroPerdido/TesouroPerdido.java



SS: Do Evento Funcionando. :
[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

credits by TheOne
Correcoes by over12
adaptação para outra Pack: L2Meteoro

l2meteoro 03-05-2011 10:12 PM

Para adiantar para galera
Vou deixar o Codigo pronto para Frozen

[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

L2 DF 04-05-2011 09:24 AM

@l2meteoro

Eu testei no Frozen e não funcionou.

allanalcantara 04-05-2011 10:41 PM

faço a mesma pergunta que o DF fez:
Certeza que isso funciona pra frozen? vou testa-lo aqui ... e se dê pra add vou add mais codes, ai esterei postando pravocês. mas tenho que ter um tempo livre.

l2meteoro 05-05-2011 01:49 PM

SS funciona
Ja Coloquei a Nova Rev dele 737 com o Mod nao compilado pra fazerem as Configs la esta explicando



Breve irei colocar uma OP pra add nas configs para facilitar ainda mais

allanalcantara 05-05-2011 04:22 PM

posta um SS dele funcionando. será bem melhor que eu edito o post. lá acima.

l2meteoro 05-05-2011 07:54 PM

Ta ai a SS que vc tanto queria

[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

[Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]

allanalcantara 05-05-2011 10:51 PM

hmm vou da uma testada aqui no meu projeto
vo da umas configs nele pra vê se funfa.
se funfar aviso, ai eu aproveito e do uma SUPER MODIFICADA
pra deixar ele como : //treasurebox
ai pra iniciar e pararo evento e etc.
:]'
vou tentar aqui
qualquer coisa estamos ae mais valeu por compartilhar!

l2meteoro 05-05-2011 11:11 PM

Opa Manin Rev ta facil pra mim

Qual Rev vc esta usando pq tou com este evento para

Teon, Free, Dot"Wars", Frozen,Mack ETC quase todos da Atualidade


E so falar

allanalcantara 06-05-2011 01:25 AM

qual rev eu uso , a minha privada. aeuauehae.
mas é do mesmo estilo ? data/scrypt/treaseu...
pois eu vou fazer um mod tipo tvt mas só que como o evento.


Horários baseados na GMT -3. Agora são 05:31 AM.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.3.0