Java mod help

Find the proper support area, Saga-Version.
Forum rules
READ NOW: L2j Forums Rules of Conduct
Post Reply
shippou
Posts: 74
Joined: Thu Jun 25, 2009 9:27 pm

Java mod help

Post by shippou »

Hello!

I want to build a new shop system to the game, based on the medal event.

Im encountering a problem one particular piece of the code. If its not linking the html-s to the shop it get to the loaded state. I will mark red, that is causing the problem for me, when i put it in the code.

Versions
Server version = 6445
DP version = 9641


package events.OrenShopLvl;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.event.LongTimeEvent;
import com.l2jserver.gameserver.model.quest.QuestState;

public class OrenShopLvl extends LongTimeEvent
{
private final static int NPC1 = 30163;
private final static int NPC2 = 30164;
private final static int NPC3 = 30165;
private final static int NPC4 = 30166;
private final static int NPC5 = 30178;
private final static int NPC6 = 30179;
private final static int NPC7 = 30180;
private final static int NPC8 = 30181;

//Adatok behivasa
public OrenShopLvl(String name, String descr)
{
super(name, descr);

addStartNpc(NPC1);
addTalkId(NPC1);
addFirstTalkId(NPC1);

addStartNpc(NPC2);
addTalkId(NPC2);
addFirstTalkId(NPC2);

addStartNpc(NPC3);
addTalkId(NPC3);
addFirstTalkId(NPC3);

addStartNpc(NPC4);
addTalkId(NPC4);
addFirstTalkId(NPC4);

addStartNpc(NPC5);
addTalkId(NPC5);
addFirstTalkId(NPC5);

addStartNpc(NPC6);
addTalkId(NPC6);
addFirstTalkId(NPC6);

addStartNpc(NPC7);
addTalkId(NPC7);
addFirstTalkId(NPC7);

addStartNpc(NPC8);
addTalkId(NPC8);
addFirstTalkId(NPC8);
}

@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
String htmltext = event;
int level = checkLevel(st.QuestState);
{
htmltext = String.valueOf(npc.getNpcId()) + "-lvl-" + String.valueOf(level) + ".htm";
}


This is an alternates i tried.

}
@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
String htmltext = event;
int level = checkLevel(player);
{
htmltext = String.valueOf(npc.getId()) + "-lvl-" + String.valueOf(level) + ".htm";
}
return htmltext;
}


@Override //NPC Player string Shop
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (player.getQuestState(getName()) == null)
{
newQuestState(player);
}
return npc.getNpcId() + ".htm";
}

public int checkLevel(QuestState st)
{
int _lev = 0;
if (st.hasQuestItems(24011))
{
_lev = 4;
}
else if (st.hasQuestItems(24010))
{
_lev = 3;
}
else if (st.hasQuestItems(24009))
{
_lev = 2;
}
else if (st.hasQuestItems(24008))
{
_lev = 1;
}
return _lev;
}

public static void main(String[] args)
{
new OrenShopLvl(OrenShopLvl.class.getSimpleName(), "events");
}
}


Thanks fowardly.
shippou
Posts: 74
Joined: Thu Jun 25, 2009 9:27 pm

Re: Java mod help

Post by shippou »

This is the original code, i wanted to remove the winnie cat part basically first.
Somthing messed up i can upload it as a file, so copy pasted it.

package events.HeavyMedal;

import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.event.LongTimeEvent;
import com.l2jserver.gameserver.model.quest.QuestState;

public class HeavyMedal extends LongTimeEvent
{
private final static int CAT_ROY = 31228;
private final static int CAT_WINNIE = 31229;
private final static int GLITTERING_MEDAL = 6393;
private final static int WIN_CHANCE = 50;
private final static int[] MEDALS =
{
5,
10,
20,
40
};
private final static int[] BADGES =
{
6399,
6400,
6401,
6402
};

public HeavyMedal(String name, String descr)
{
super(name, descr);
addStartNpc(CAT_ROY);
addStartNpc(CAT_WINNIE);
addTalkId(CAT_ROY);
addTalkId(CAT_WINNIE);
addFirstTalkId(CAT_ROY);
addFirstTalkId(CAT_WINNIE);
}

@Override
public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
{
final QuestState st = player.getQuestState(getName());
if (st == null)
{
return getNoQuestMsg(player);
}

String htmltext = event;
int level = checkLevel(QuestState st);

if (event.equalsIgnoreCase("game"))
{
htmltext = st.getQuestItemsCount(GLITTERING_MEDAL) < MEDALS[level] ? "31229-no.htm" : "31229-game.htm";
}
else if (event.equalsIgnoreCase("heads") || event.equalsIgnoreCase("tails"))
{
if (st.getQuestItemsCount(GLITTERING_MEDAL) < MEDALS[level])
{
htmltext = "31229-" + event.toLowerCase() + "-10.htm";
}
else
{
st.takeItems(GLITTERING_MEDAL, MEDALS[level]);

if (getRandom(100) > WIN_CHANCE)
{
level = 0;
}
else
{
if (level > 0)
{
st.takeItems(BADGES[level - 1], -1);
}
st.giveItems(BADGES[level], 1);
st.playSound(QuestSound.ITEMSOUND_QUEST_ITEMGET);
level++;
}
htmltext = "31229-" + event.toLowerCase() + "-" + String.valueOf(level) + ".htm";
}
}
else if (event.equalsIgnoreCase("talk"))
{
htmltext = String.valueOf(npc.getNpcId()) + "-lvl-" + String.valueOf(level) + ".htm";
}
return htmltext;
}

@Override
public String onFirstTalk(L2Npc npc, L2PcInstance player)
{
if (player.getQuestState(getName()) == null)
{
newQuestState(player);
}
return npc.getNpcId() + ".htm";
}

public int checkLevel(QuestState st)
{
int _lev = 0;
if (st.hasQuestItems(6402))
{
_lev = 4;
}
else if (st.hasQuestItems(6401))
{
_lev = 3;
}
else if (st.hasQuestItems(6400))
{
_lev = 2;
}
else if (st.hasQuestItems(6399))
{
_lev = 1;
}
return _lev;
}

public static void main(String[] args)
{
new HeavyMedal(HeavyMedal.class.getSimpleName(), "events");
}
}
User avatar
Gladicek
Posts: 634
Joined: Wed Jan 19, 2011 6:25 pm
Location: Czech Republic

Re: Java mod help

Post by Gladicek »

1) Post it on gist or something like that... this is just mess.
2) This should more like AbstractNpcAI logic instead of LongTimeEvent
3) You can put it as addStartNpc(NpcId1, NpcId2)... etc
4) You don't need to check QS (quest state)
5) You don't need to use onAdvEvent, when you are not using any events (timers, bypasses etc)

So just make basic NpcAi with firsttalk + check for levels/items. That's it.
Not sure what version are you using.. just basic advices.
ImageImage
L2J retired
Post Reply