I wrote and rewrote this script time's and times again, and just can't get it to work...
The main problem is that i can't make the script to understand a subcommand (ex.: play_sound sound_file)
Here's the script:
package com.l2jfrozen.gameserver.handler.voicedcommandhandlers;
import java.util.StringTokenizer;
import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.handler.IVoicedCommandHandler;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.serverpackets.PlaySound;
public class Music implements IVoicedCommandHandler
{
private static String[] _voicedCommands =
{
"play_music"
};
@Override
public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
if(command.startsWith("play_music"))
{
hearMusic(command, activeChar);
}
return true;
}
private void hearMusic(String command, L2PcInstance activeChar)
{
StringTokenizer st = new StringTokenizer(command, " ");
st.nextToken();
String music_name = st.nextToken();
PlaySound _snd = new PlaySound(1, music_name, 0, 0, 0, 0, 0);
activeChar.sendPacket(_snd);
activeChar.broadcastPacket(_snd);
//activeChar.sendMessage("Playing " + music_name + ".");
}
@Override
public String[] getVoicedCommandList()
{
return _voicedCommands;
}
}
it returns.:
Client: [Character: [Admin]Explos - Account: explos - IP: XX.XX.XX.XX] - Failed reading: [C] 38 Say2 ; null
java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Music.hearMusic(Music.java:32)
at com.l2jfrozen.gameserver.handler.voicedcommandhandlers.Music.useVoicedCommand(Music.java:22)
at com.l2jfrozen.gameserver.network.clientpackets.Say2.runImpl(Say2.java:463)
at com.l2jfrozen.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:75)
at com.l2jfrozen.gameserver.network.L2GameClient.run(L2GameClient.java:1202)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Yes, my java knowledge is less than mediocre, but I try hard to get myself in the wheel of it, and it seem's to be harder than i thought it to be, i am (like to call myself) a programmer (not java ofc...yet).
I'm new to OOP and other swears...so please help me..i don't know what to do from here and lost hope to understand my problem even with google by my side (god bless google xD).