Ir para conteúdo
  • Cadastre-se
Gabrieljdb

L2jfrozen 1132 + Mods + Source

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisando de Dedicado ou VPS?

Conheça a L2JCenter

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites
 

Vou deixar a data prevista no tópico.

Um abraço!

Poxa desanimei agr!
tava contando com essa rev pra por meu serve on agora em janeiro 😞 💔

Compartilhar este post


Link para o post
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♫

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguns prints pra vcs

ja estao no links no topico principal

h5teLmL.jpg

R0W6H66.jpg

kQKx0bU.jpg

 

7O1VXFg.jpg

 

ja ja vou estar de volta e nós completaremos a 1 versão

Compartilhar este post


Link para o post
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
  • Gostei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Mudanças no Login

    Preste atenção às mudanças no método de login.

    Com a migração para nomes de usuário IPB4 não existe mais.

    Você deve usar seu nome de exibição ou email em vez de nome de usuário.




     



×