-
Help in Scripting!
hi , I could help me as I can add a change of music in eventscript ?
i have this...
Code:
importPackage(java.lang);
importPackage(Packages.tools.packet);
function scheduledTimeout(eim,player) {
player.getClient().getSession().write(CField.musicChange("nameMusic"));
eim.broadcastPlayerMsg(6, "Music Change");
}
but cant work u.u , show message in console:
Code:
Event nameMYQUEST, Instance name : Quest142, method Name : scheduledTimeout:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot call method "getClient" of undefined
need help, thank you :D
-
Re: Help in Scripting!
eim.changeMusic(songName); //"BGM14/Ariant"
-
Re: Help in Scripting!
and remove 'player'
Code:
function scheduledTimeout(eim,player) {
-
Re: Help in Scripting!
Thanks guys! :D
- - - Updated - - -
cant work guys
i use this:
Code:
function scheduledTimeout(eim) {
eim.changeMusic("Bgm00/Florallife");
}
and show this problem:
Code:
Event nameMIQUEST, Instance name : Quest142, method Name : scheduledTimeout:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function changeMusic in object scripting.EventInstanceManager@59c9491. (<Unknown source>#123) in <Unknown source>
so i create the function in EventInstanceM
Code:
public void changeMusic(final MapleCharacter chr) {
//"Bgm00/Florallife"
chr.getClient().getSession().write(CField.musicChange(name));
}
bump...
-
Re: Help in Scripting!
then
Code:
eim.broadcastPacket(CField.musicChange(songName));
-
Re: Help in Scripting!
dont work.... :c
Code:
Event nameMIQUEST, Instance name : Quest142, method Name : scheduledTimeout:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "CField" is not defined. (<Unknown source>#119)
use this:
Code:
function scheduledTimeout(eim) {
eim.broadcastPacket(CField.musicChange(Bgm08/PlotOfPixie));
}
-
Re: Help in Scripting!
oh, sorry.
hmm... didn't you delete
Code:
importPackage(Packages.tools.packet);
?
-
Re: Help in Scripting!
Quote:
Originally Posted by
Yuuroido
oh, sorry.
hmm... didn't you delete
Code:
importPackage(Packages.tools.packet);
?
delete or add?
-
Re: Help in Scripting!
I mean do not delete it.
Quote:
Originally Posted by
mixtamal6
hi ,
I could help me as I can add a change of music in eventscript ?
i have this...
Code:
importPackage(java.lang);
importPackage(Packages.tools.packet);
~~~
-
Re: Help in Scripting!
Quote:
Originally Posted by
mixtamal6
Code:
public void changeMusic(final MapleCharacter chr) {
//"Bgm00/Florallife"
chr.getClient().getSession().write(CField.musicChange(name));
}
That will never ever work. Where is name comming from? You don't specify a var for text.
Code:
public void changeMusic(final MapleCharacter chr, String name) {
//"Bgm00/Florallife"
chr.getClient().getSession().write(CField.musicChange(name));
}
followed by eim.changeMusic(chr, name);
also make sure you indeed import the proper packages. Why doesn't your compiler throw these issues?
EDIT as for doing it without an internal addition (the void musicChange) i think simply importing MapleCharacter in the script on your first post should do the trick... At least on java 7
-
Re: Help in Scripting!
AbstractPlayerInteraction has:
PHP Code:
public final void changeMusic(final String songName) {
getPlayer().getMap().broadcastMessage(CField.musicChange(songName)); }
So you can use with npc/reactor/portal(cm/rm/pi).changeMusic("Bgm00/Florallife") because they extends AbstractPlayerInteraction but EventInstanceManager does not.
@Novak
Do you know what the differences are?
EventInstanceManager:
PHP Code:
public final void changeMusic(final MapleCharacter chr, final String songName) {
//chr.getClient().getSession().write(CField.musicChange(songName)); whats the difference?
chr.getMap().broadcastMessage(CField.musicChange(songName)); }
Event Script:
1.
PHP Code:
importPackage(Packages.client.MapleCharacter);
function scheduledTimeout(eim) {
eim.changeMusic(chr, CField.musicChange("Bgm00/Florallife"));
eim.broadcastPlayerMsg(6, "Music Change"); }
Is better than these?
2.
PHP Code:
importPackage(Packages.client.MapleCharacter);
function scheduledTimeout(eim) {
//chr.getClient().getSession().write(CField.musicChange("Bgm00/Florallife")); whats the difference?
chr.getMap().broadcastMessage(CField.musicChange("Bgm00/Florallife"));
eim.broadcastPlayerMsg(6, "Music Change"); }
3.
PHP Code:
function scheduledTimeout(eim) {
eim.broadcastPacket(CField.musicChange("Bgm00/Florallife"));
eim.broadcastPlayerMsg(6, "Music Change"); }
4. add "player"?
https://forum.ragezone.com/f566/help...8/#post8502078 or?
4.1. add "player"?
PHP Code:
public void timeOut(final long delay, final EventInstanceManager eim, final MapleCharacter player) {
...
em.getIv().invokeFunction("scheduledTimeout", eim, player); }
public void restartEventTimer(long time, MapleCharacter player) {
...
timeOut(time, this, player); }
public void startEventTimer(long time, MapleCharacter player) {
restartEventTimer(time, player); }
PHP Code:
function scheduledTimeout(eim, player) {
eim.changeMusic(player, CField.musicChange("Bgm00/Florallife"));
eim.broadcastPlayerMsg(6, "Music Change"); }
5. add "mapid"
PHP Code:
public void timeOut(final long delay, final EventInstanceManager eim, final int mapid) {
...
em.getIv().invokeFunction("scheduledTimeout", eim, mapid); }
public void restartEventTimer(long time, int mapid) {
...
timeOut(time, this, mapid); }
public void startEventTimer(long time, int mapid) {
restartEventTimer(time, mapid); }
PHP Code:
function scheduledTimeout(eim, mapid) {
var map = eim.getMapInstance(mapid);
//or var map = getMap(eim);?
//or var map = em.getChannelServer().getMapFactory().getMap(mapid);?
map.broadcastMessage(CField.musicChange("Bgm00/Florallife"));
eim.broadcastPlayerMsg(6, "Music Change"); }
-
Re: Help in Scripting!
Ok, i try when go my home n.n
- - - Updated - - -
hi,thanks for replys, when use import
Code:
importPackage(Packages.client.MapleCharacter);
have error when loading server...
i try use this:
Code:
function scheduledTimeout(eim,player) {
eim.changeMusic(player, "Bgm08/PlotOfPixie");
eim.broadcastPlayerMsg(6, "Music Change");
}
public final void changeMusic(final MapleCharacter chr, final String songName) {
chr.getMap().broadcastMessage(CField.musicChange(songName));
}
have this problem now:
Code:
Event nameMIQUEST, Instance name : Quest142, method Name : scheduledTimeout:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: Can't find method scripting.EventInstanceManager.changeMusic(sun.org.mozilla.javascript.internal.Undefined,string).
-
Re: Help in Scripting!
use this (as I mentioned)
Code:
importPackage(java.lang);
importPackage(Packages.tools.packet);
function scheduledTimeout(eim) {
eim.broadcastPacket(CField.musicChange("Bgm08/PlotOfPixie"));
eim.broadcastPlayerMsg(6, "Music Change");
}
I tested it and worked fine.
------
Quote:
Originally Posted by
mixtamal6
~~~
Code:
Event nameMIQUEST, Instance name : Quest142, method Name : scheduledTimeout:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException: Can't find method scripting.EventInstanceManager.changeMusic(sun.org.mozilla.javascript.internal.Undefined,string).
Of course you'll get this error because you haven't defined "MapleCharacter(player)".
Quote:
Originally Posted by
mixtamal6
Code:
function scheduledTimeout(eim,player) {
eim.changeMusic(player, "Bgm08/PlotOfPixie");
eim.broadcastPlayerMsg(6, "Music Change");
}
There is no
Code:
scheduledTimeout(eim,player)
just
Code:
em.getIv().invokeFunction("scheduledTimeout", eim);
so if you want to do that, then you have to add "player"
Code:
em.getIv().invokeFunction("scheduledTimeout", eim, player);
Code:
public void timeOut(final long delay, final EventInstanceManager eim, MapleCharacter player) {
-
Re: Help in Scripting!
Thanks so much! work now! n.n
- - - Updated - - -
@Yuuroido
bro, how to use other method in maplecharacter, but example.
i have this method in maplecharacter
Code:
public void StageT(){
if (getMonsterCount(getMapId())== 0) {
//action...1
//but example show new message
dropMessage(-1,"Hi i am action 1");
} else {
//action 2
dropMessage(-1,"Sorry i am action 2");
}
}
use this??
Code:
function scheduledTimeout(eim) {
eim.broadcastPacket(StageT());
}
already use in npcConversation
cm.StageT();
and work fine n.n! but i dont know how to use in EventManager
-
Re: Help in Scripting!
no, eim.broadcastPacket(); is only used for packet(bytes)
Code:
function scheduledTimeout(eim) {
var players = eim.getPlayers();
for (i = 0; i < players.size(); i++) {
players.get(i).StageT();
}
}