Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Mensajes recientes

#81
L2 | Apartado de Soporte / Re:Reward Kill Player
Último mensaje por Swarlog - Nov 05, 2025, 11:27 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Hola comunidad, como dice el Titulo, alguien tendra el codigo o sabe que lugar hay que editar para hacer que al Matar un Player en un PvP o un PK, te de un Reward ??..

Usa el buscador, hay algunos como por ejemplo:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.
#82
L2 | Apartado de Soporte / Re:Verificar item en inventari...
Último mensaje por Swarlog - Nov 05, 2025, 11:25 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Hola, me gustaria saber si hay algun otro modo de verificar si un jugador tiene un item en su inventario, sin tener que utilizar:

final QuestState st = getQuestState(player, true);

Es para un comando, gracias.

Aun siendo un camando puedes seguir utilizando el "QuestState". Respondiendo a tu pregunta, sí. Aquí te dejo esta otra opción por ejemplo:

if (activeChar.getInventory().getInventoryItemCount(57, 0) >= 1000)

#83
L2 | Apartado de Soporte / Re:Evento Aniversario envia ma...
Último mensaje por Swarlog - Nov 05, 2025, 11:25 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Alguien sabe como evitar el envio masivo de mail box a los personajes durante este evento?

Fix para reparar el bug del evento Birthday Gift. y evitar asi el envio masivo de mail box a los personajes.

CitarCORE:

Editar: src/main/java/com/l2jserver/gameserver/taskmanager/tasks/TaskBirthday.java

  {
 	private static final String NAME = "birthday";
 	/** Get all players that have had a birthday since last check. */
-	private static final String SELECT_PENDING_BIRTHDAY_GIFTS = "SELECT charId, char_name, createDate, (YEAR(NOW()) - YEAR(createDate)) AS age " //
-		+ "FROM characters WHERE (YEAR(NOW()) - YEAR(createDate) > 0) AND (DATE_FORMAT(createDate, '%m-%d') > DATE_FORMAT(FROM_UNIXTIME(?), '%m-%d'))";
+	private static final String SELECT_PENDING_BIRTHDAY_GIFTS = "SELECT charId, char_name, createDate, (YEAR(NOW()) - YEAR(createDate)) AS age FROM characters WHERE (YEAR(NOW()) - YEAR(createDate) > 0) AND ((DATE_ADD(createDate, INTERVAL (YEAR(NOW()) - YEAR(createDate)) YEAR)) BETWEEN FROM_UNIXTIME(?) AND NOW())";
 	
 	@Override
 	public String getName()
#84
L2 | Apartado de Soporte / Re:Añadir nuevo item a verific...
Último mensaje por Swarlog - Nov 05, 2025, 11:24 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Hola de nuevo, quiero crear un item nuevo y que se verifique en el ware del clan o privado. Casi siempre se utiliza el valor "getAdena", ¿Donde se encuentra y como puedo añadir uno nuevo? Gracias!

1.- Se encuentra en "model/itemcontainer/ItemContainer.java"

2.- Podrias utilizar el que comentaste de ejemplo y lo modificas a tu gusto, ejemplo:

/**
	 * @return warehouse Adena.
	 */
	public long getAdena()
	{
		long count = 0;
		for (L2ItemInstance item : _items)
		{
			if ((item != null) && (item.getId() == Inventory.ADENA_ID))
			{
				count = item.getCount();
				return count;
			}
		}
		return count;
	}
#85
L2 | Apartado de Soporte / Re:Error al aplicar parche Tas...
Último mensaje por Swarlog - Nov 05, 2025, 11:23 PM
Hazlo manualmente...

1.- Entra en "TaskBirthday.java" --> en el core ;)

2.- Sustituye, elimina el que tienes y pon este otro:

private static final String SELECT_PENDING_BIRTHDAY_GIFTS = "SELECT charId, char_name, createDate, (YEAR(NOW()) - YEAR(createDate)) AS age FROM characters WHERE (YEAR(NOW()) - YEAR(createDate) > 0) AND ((DATE_ADD(createDate, INTERVAL (YEAR(NOW()) - YEAR(createDate)) YEAR)) BETWEEN FROM_UNIXTIME(?) AND NOW())";
#86
L2 | Apartado de Soporte / Re:Error al compilar - tools.j...
Último mensaje por Swarlog - Nov 05, 2025, 11:22 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Buenos dias, no puedo compilar me salta error, uso el ultimo l2jserver, antes si podia compilar todo normal, despues de tiempo vuelvo abrir el eclipse y me salta este problema, si alguno sabe como solucionarlo, le agradeceria que comparta la solucion, Saludos.

CitarCould not find tools.jar

Ese error aparece por que no tienes en eclipse especificado que use el JDK 8.
#87
L2 | Apartado de Soporte / Re:Noble matando un mobs
Último mensaje por Swarlog - Nov 05, 2025, 11:22 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Para hacerte noble matando un mob? Sin que tenga que dropear un item.

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Para hacerte noble matando un mob? Sin que tenga que dropear un item.

/*
 * 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 xxxxx.ai.AutoKillNoble;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;

import ai.npc.AbstractNpcAI;

/**
 * Automatic Noble AI.
 * @author swarlog
 */

public final class AutoKillNoble extends AbstractNpcAI
{
	// Mobs
	private static final int BARAKIEL = 25325;
	
	public AutoKillNoble()
	{
		super(AutoKillHero.class.getSimpleName(), "xxxxx/ai");
		addKillId(BARAKIEL);
	}
	
	@Override
	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
	{
		if (npc.getId() == BARAKIEL)
		{
			if (!killer.isNoble())
			{
				killer.sendMessage("[NOBLE] Felicidades, ahora sois noble!");
				killer.setNoble(true);
			}
		}
		
		return super.onKill(npc, killer, isSummon);
	}
	
	public static void main(String[] args)
	{
		new AutoKillNoble();
	}
}

Ahí lo tienes ^^

Cita de: djjoseYa veo, gracias! Y para que lo de en party y/o en command channel? ambas opciones

Facil, solo debes de indicar que en X distancia del mob matado afecte lo indicado. En nuestro caso:

/*
 * 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 xxxxx.ai.AutoKillNoble;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;

import ai.npc.AbstractNpcAI;

/**
 * Automatic Noble AI.
 * @author swarlog
 */

public final class AutoKillNoble extends AbstractNpcAI
{
	// Mobs
	private static final int BARAKIEL = 25325;
	private static final int RANGO = 250;
	
	public AutoKillNoble()
	{
		super(AutoKillHero.class.getSimpleName(), "xxxxx/ai");
		addKillId(BARAKIEL);
	}
	
	@Override
	public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon)
	{
		if (npc.getId() == BARAKIEL)
		{
			for (L2PcInstance p : npc.getKnownList().getKnownPlayersInRadius(RANGO))
			{
				// Check if player is dead
				if (!p.isDead())
				{
					if (!p.isNoble())
					{
						p.sendMessage("[NOBLE] Felicidades, ahora sois noble!");
						p.setNoble(true);
					}
				}
			}
		}
		
		return super.onKill(npc, killer, isSummon);
	}
	
	public static void main(String[] args)
	{
		new AutoKillNoble();
	}
}
#88
L2 | Apartado de Soporte / Re:Crear Item que sin equipar ...
Último mensaje por Swarlog - Nov 05, 2025, 11:21 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Pues eso, no se como añadir una skill a un item y que funcione bien.

Primero crea el item, que sea tipo quest y que sea temporal (si quieres claro).

Luego tienes que ir a No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate., localizado en:

com.l2jserver.gameserver.network.clientpackets;

Y por último decirle al servidor que pasa cuando tienes equipado ese item.. algo por ejemplo como:

if (_itemId == 111000) // ID del objeto creado
{
	if (!item.isEquipped()) // No esta equipado
	{
		activeChar.getPlayer().addSkill(SkillData.getInstance().getSkill(208, 15), true); // Bow Mastery
	}
}

Cualquier cosa me avisas, suerte!
#89
L2 | Apartado de Soporte / Re:Efecto heroe en char (anima...
Último mensaje por Swarlog - Nov 05, 2025, 11:21 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.Como añadir el efecto de la animacion de heroe a un char?

Lo he pensado muchas veces, pero nunca me he puesto a ello la verdad. Ahora he estado mirando y lo único que encuentro es esto en "UserInfo .java"

writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // 0x01: Hero Aura

Lo que podrias hacer es crear una nueva variable en "L2PcInstance.java", como por ejemplo "_heroAura" y añadirselo a dicho opcode.

Si necesitas ayuda avisame ;)
#90
L2 | Apartado de Soporte / Re:Mostrar animacion al loguea...
Último mensaje por Swarlog - Nov 05, 2025, 11:20 PM
No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.activeChar.doCast?

activeChar.addSkill?

En ambos caso como se llama a la skill o animacion?  :'(

En casos como este lo idea es pensar si l2j ya lo tiene, en este caso tenemos el Vitality:

Asignamos la skills, id y level:

private static final SkillHolder JOY_OF_VITALITY = new SkillHolder(23180, 1);

Y por último el efecto:

player.doCast(GIFT_OF_VITALITY.getSkill());

Si lo que quieres es que pase cuando loguee un personaje, lo tienes que agregar al player cuando loguea, es decir, en la clase "EnterWorld.java" y listo ;)