Autor Tema: [Consulta] - Utilizacion de Scripts en L2JAdmins  (Leído 154 veces)

canonmagic

  • Jr. Member
  • **
  • Mensajes: 52
  • Karma: +0/-0
    • Ver Perfil
[Consulta] - Utilizacion de Scripts en L2JAdmins
« en: Junio 30, 2018, 04:39:01 pm »
Buenas, Vengo a ustedes en busca de algo de informacion acerca del datapack, hace poco estuve por aqui por un evento que estuve adaptando; todo resulto bien hasta el punto donde decidi aplicar condiciones adicionales. Se trata de una quest ligada a un evento de drop global de Event Medals. Gracias a una ayuda de fissban la quest funciono correctamente, pero el evento de drop global el cual lo tenia en el EngineMods me limitaba mucho debido a que mi intencion era aplicarle un efecto "DeepBlue" a los drops, cosa que el CharacterHolder me limito debido a que no tenia forma de recuperar los lvls; ademas de que tampoco me permitia realizar dropeos a jugadores dentro de una party a traves del random drop sino directamente a la mochila del asesino "Pobres supps  :'(". Asi que tome el evento y lo introduje en la quest. Pero sucede ahora que no logro activar el evento del dropeo, Al realizar el trigger de onKill no me devuelve mas que una ventana con "null" y un "NullPointerException" en la consola. Intente realizar lo siguiente:

Código
	@Override
public String onKill(L2Npc npc, L2PcInstance player, boolean isPet)
{
L2PcInstance partyMember = getRandomPartyMemberState(player, npc, ScriptStateType.STARTED);
ScriptState st = player.getScriptState(getName());
for (RewardHolder reward : ConfigData.ITEMID)
{
if (player.getLevel() - npc.getLevel() < 8)
{
if (Rnd.get(100) <= reward.getRewardChance())
{
int MIN = reward.getRewardMin();
int MAX = reward.getRewardMax();
int count = (int) (Math.random() * (MAX - MIN + 1) + MIN);
partyMember.getScriptState(getName()).dropItems(NORMAL_MEDAL, 1, 0, 1000000);
player.getScriptState(getName()).dropItems(reward.getRewardId(), count, 0, 1000000);
st.giveItems(NORMAL_MEDAL, 1);
}
}
}
return null;
}

Si se fijan utilize varios metodos y algunos los tomaba copiandolos de otras quest como GatherTheFlames y QuestForFishingShot. Tambien pense que necesitaria primero iniciar la quest, pero el metodo "startQuest();" solo funciona con un QuestState anterior de "CREATED" ademas de que segun los comentario no debe aplicarse a Quests custom. Asi que si podrian porfavor darme un par de tips acerca del uso de los metodos de Scripts "O quests" Les agradecesco por adelantado  :)

fissban

  • Administrador
  • Full Member
  • *
  • Mensajes: 196
  • Karma: +0/-0
    • Ver Perfil
Re:[Consulta] - Utilizacion de Scripts en L2JAdmins
« Respuesta #1 en: Julio 01, 2018, 04:22:06 am »
queres q suba al engine el evento de drop de medallas?

canonmagic

  • Jr. Member
  • **
  • Mensajes: 52
  • Karma: +0/-0
    • Ver Perfil
Re:[Consulta] - Utilizacion de Scripts en L2JAdmins
« Respuesta #2 en: Julio 01, 2018, 05:00:17 am »
Osea realmente mi idea es hacerlo funcionar por mis medios, estoy alterando un poco de cada cosa. lo uso como medio de aprendizaje pero como todavia no estoy completamente adaptado del funcionamiento del datapack me causa algunos problemas en ciertas cosas que desconozco su funcionamiento. Por eso es que preguntaba la manera en que ustedes generan los drops en una quest "Si es que necesita una condicion previa". Por el hecho de que en vez de darme el drop lo unico que me devuelve al activarse el drop es una pantalla con un "Null".

fissban

  • Administrador
  • Full Member
  • *
  • Mensajes: 196
  • Karma: +0/-0
    • Ver Perfil
Re:[Consulta] - Utilizacion de Scripts en L2JAdmins
« Respuesta #3 en: Julio 01, 2018, 05:16:11 am »
mira si quieres aprender hacelo mediante el engine, la herramienta que falte la agregare pero tienes un monton...mira esto

Código
	@Override
public void onKill(CharacterHolder killer, CharacterHolder victim, boolean isPet)
{
if (Util.areObjectType(L2Attackable.class, victim) && Util.checkLvlDifference(killer, victim, 9))
{
var chance = Rnd.get(100);

if (chance < 5) // 5%
{
UtilInventory.giveItems((PlayerHolder) killer, EVENT_GLITTERING_MEDAL, 1);
}
else if (chance < 50) // 45%
{
UtilInventory.giveItems((PlayerHolder) killer, EVENT_MEDAL, 1);
}
}
}

canonmagic

  • Jr. Member
  • **
  • Mensajes: 52
  • Karma: +0/-0
    • Ver Perfil
Re:[Consulta] - Utilizacion de Scripts en L2JAdmins
« Respuesta #4 en: Julio 01, 2018, 05:25:52 am »
Vaya lo que necesitaba estuvo siempre delante de mi y no me di cuenta  :o, bueno tomare tu consejo y me instruire a traves del engine "Y revisare nuevamente todas las clases". Como siempre muy atento fissban  ;D muchisimas gracias.