-
Posts
2044 -
Joined
-
Last visited
-
Days Won
51
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by AnnieRuru
-
got a pm about this ... cell_pk.patch my source coding knowledge only allow me do up until players can pvp within the cell_pk area - script jfdksfjsdfk -1,{ OnInit: setcell "prontera", 140, 170, 160, 190, cell_pk, 1; end; } however I couldn't able to do having [1/2] shows the number of players after standing in the box that is most probably they actually use a new script command for it for explanation, if you do setcell ... cell_walkable; you 'll find your client behave weirdly but setcell script commands updates the client information about the unwalkable path so I think the source code in the video must have a new script command of it ... so that when they walk in the box, it shows the [Time Attack] stuffs ..
-
Im using Annie KOE Script but need some modifications
AnnieRuru replied to Chaos92's question in Scripting Support
hmm ... now I read this script seriously ... yeah it miss a guildlock mapflag ... they can put a lot of characters in, and invite/kick guild members inside the map ... ... yeah =/ should be gvgon/gvgoff script command, not by a mapflag ok I rewrite this script a little koe_0.2.txt koe_0.2.patch -
this script is called King of Emperium Hill http://www.eathena.ws/board/index.php?s=&showtopic=174222&view=findpost&p=1491458 there's a fixed script at post#99 in that topic I believe many members has rewrite this script several times in this board though
-
then its time to show some "oldies" tricks guild_vs2,49,49,5 script dkfjdhsfkjsh 100,{ while ( getd( ".aid_"+ .@i ) ) { if ( isloggedin( getd( ".aid_"+ .@i ) ) ) { attachrid getd( ".aid_"+ .@i ); getmapxy .@map$, .@x, .@y, 0; if ( .@map$ != .map$ ) { callsub L_moveindex, .@i; set .@i, .@i -1; } else warp .map$, .x, .y; } else { callsub L_moveindex, .@i; set .@i, .@i -1; } set .@i, .@i +1; } announce .mapcount +" players warpped", bc_npc; end; L_moveindex: .@i = getarg(0); while ( .@i < .mapcount ) { setd ".aid_"+ .@i, getd( ".aid_"+( .@i +1 ) ); set .@i, .@i +1; } set .mapcount, .mapcount -1; return; OnPCLoadMapEvent: while ( getd( ".aid_"+ .@i ) != getcharid(3) && .@i < .mapcount ) set .@i, .@i +1; if ( .@i < .mapcount ) end; setd ".aid_"+ .@i, getcharid(3); set .mapcount, .mapcount +1; end; OnInit: getmapxy .map$, .x, .y, 1; end; } guild_vs2 mapflag loadevent try show your dice game script I'm very sure that script having problems with *areawarp script command
-
need help auto jobchanger at multi in 1 npc
AnnieRuru replied to hendra814's question in Scripting Support
sry wrong info, I was just about to edit my post but you posted a reply =/ OnPCBaseLvUpEvent: I so seldom use this label, that I almost didn't notice it at all it triggers when a player has level up from getting exp from a monster, *getexp script command or set baseexp, baseexp + xxx; now it comes to me that the reason why in this script wants to use this label, is because the player might get killed while talking to an invisible npc triggered by this label while farming mobs perhaps a better way to tackle this is with setoption atcommand strcharinfo(0)+":@monsterignore"; addtimer 1000, strnpcinfo(3)+"::OnLeave";all these change into setoption 0x40, 1; addtimer 1000, strnpcinfo(3)+"::OnLeave";and OnLeave: atcommand strcharinfo(0)+":@monsterignore";change into OnLeave: setoption 0x40, 0; -
I usually ignore this kind of question ... but right now couldn't turn eyes away from this topic lol https://github.com/rathena/rathena/blob/master/doc/script_commands.txt#L99 http://www.eathena.ws/board/index.php?showtopic=244209 http://rathena.org/board/topic/64418-script-editors-notepad-rathena-custom-syntax-highlight/ setup test server .. @reloadscript ... use latest rathena ... memorize script_commands.txt ... read wiki .. the rest are common sense already
-
15262... <.< I don't think it even support strnpcinfo... - script xmas_event -1,{ OnMinute00: OnWhisperGlobal: // if ( gettime(3) % 4 ) end; announce "Xmas Event Has Started at xmas town!", bc_all; killmonster "xmas", "xmas_event::Onnormal"; killmonster "xmas", "xmas_event::Onspecial"; set .count, 50; monster "xmas", 0,0, "--ja--", 1247,150, "xmas_event::Onnormal"; monster "xmas", 0,0, "--ja--", 1247,50, "xmas_event::Onspecial"; end; Onnormal: getitem 7034, 1; end; Onspecial: getitem 7176, 1; set .count, .count -1; if ( .count > 0 ) announce "special poring left "+ .count, bc_map; else announce "all special poring killed", bc_map; end; }this should work in your *outdated* emulatorhttp://www.eathena.ws/board/index.php?showtopic=276056 ... getting nostalgic ... actually, scripting is just a part of it you can also try mapping, or making palettes ... these are some professions that you can contribute rathena also, once you truly wish to master a profession, its a never ending process ... after scripting for 7 years I still feel I haven't finish learning yet =/
-
need help auto jobchanger at multi in 1 npc
AnnieRuru replied to hendra814's question in Scripting Support
[Warning]: script: buildin_atcommand: failed to execute command 'AnnieRuru:@monsterignore' atcommand strcharinfo(0)+":@monsterignore";this was a very very old method of using atcommand... back in 2004~2006 it changed into atcommand "@monsterignore";around 6 years back in this code, I don't think there is a need to do @monsterignore ... find them and eliminate them all including the addtimer 1000, strnpcinfo(3)+"::OnLeave"; ... its useless -
hmm ... I usually don't teach newbies ... but feel like want to make an exemption today - script xmas_event -1,{ OnMinute00: OnWhisperGlobal: // if ( gettime(3) % 4 ) end; announce "Xmas Event Has Started at xmas town!", bc_all; killmonster "xmas", strnpcinfo(0)+"::Onnormal"; killmonster "xmas", strnpcinfo(0)+"::Onspecial"; set .count, 50; monster "xmas", 0,0, "--ja--", 1247,150, strnpcinfo(0)+"::Onnormal"; monster "xmas", 0,0, "--ja--", 1247,50, strnpcinfo(0)+"::Onspecial"; end; Onnormal: getitem 7034, 1; end; Onspecial: getitem 7176, 1; set .count, .count -1; if ( .count > 0 ) announce "special poring left "+ .count, bc_map; else announce "all special poring killed", bc_map; end; }the reason my script not working in your emulator is probably because you are using very outdated emulator, maybe you are using eathenahttp://rathena.org/board/topic/62395-r15982-script-engine-update/ ... you know .. you reminded me that I also said something like "I want to learn scripting too!" back in 2006 ... feeling nostalgic... ...or maybe you just said something moved my heart lol
-
OnEnable: pvpoff "guild_vs5"; // <-- add this mapannounce "guild_vs5","Mr. Manager:The Last Man Standing Event will start shortly",0;seriously this script is very unoptimizedwhy I can spot another label to start this event ? - script LMS -1,{ goto startlmsevent; startlmsevent: pvpoff "guild_vs5"; announce "Mr. Manager: The Last Man Standing event will be starting shortly.",0;funny code here, its like this part has been left out
-
perhaps you need to learn some script debugging - script asdf -1,{ OnMinute00: OnWhisperGlobal: // if ( gettime(3) % 4 ) end; announce "Xmas Event Has Started at xmas town!", bc_all; killmonster "xmas", strnpcinfo(0)+"::Onnormal"; killmonster "xmas", strnpcinfo(0)+"::Onspecial"; .count = 50; monster "xmas", 0,0, "--ja--", 1247,150, strnpcinfo(0)+"::Onnormal"; monster "xmas", 0,0, "--ja--", 1247,50, strnpcinfo(0)+"::Onspecial"; end; Onnormal: getitem 7034, 1; end; Onspecial: getitem 7176, 1; .count--; if ( .count ) announce "special poring left "+ .count, bc_map; else announce "all special poring killed", bc_map; end; }I tested it , it work fine
-
depends on my mood this is not event script ... this is a quest script, which I'm not very motivated... that's why the other topics solved faster than this prontera,150,180,4 script asdfasdf 100,{ // job_sprite_changer_q$ = ""; if ( job_sprite_changer_d ) { mes "return to original disguise ?"; if ( select ( "Yes", "No" ) == 2 ) close; else if ( countitem(9524) < 1000 ) { mes "you need 1000x "+ getitemname(9524); close; } mes "disguise reverted"; changebase class; job_sprite_changer_d = 0; close; } if ( getstrlen( job_sprite_changer_q$ ) ) { mes job_sprite_changer_q$; for ( .@i = 0; .@i < 3; .@i++ ) mes strmobinfo( 2, @job_sprite_changer_qm[.@i] ) +" : ["+ @job_sprite_changer_qa[.@i] +"/"+ @job_sprite_changer_qr[.@i] +"]"; .@i = 0; while ( @job_sprite_changer_qa[.@i] >= @job_sprite_changer_qr[.@i] && .@i < 3 ) .@i++; if ( .@i < 3 ) close; next; mes "select which jobtype you would like to change into."; switch ( select ( "Normal Jobs", "Rebirth Jobs", "Baby Jobs", "Expanded Jobs" ) ) { case 1: .@job = callsub( L_eamenu, 0 ); break; case 2: .@job = callsub( L_eamenu, EAJL_UPPER ); break; case 3: .@job = callsub( L_eamenu, EAJL_BABY ); break; case 4: .@job = callsub( L_menu, 23,24,25, 4046,4047,4049 ); } if ( !.@job ) { mes "sry you can't take novice"; // TO-DO close; } changebase .@job; mes "You now look like "+ jobname( .@job ) +"! Enjoy"; job_sprite_changer_d = .@job; job_sprite_changer_q$ = ""; close; } mes "want to take up monster quest ?"; next; if ( select ( "Yes", "No" ) == 2 ) { mes "come back another time"; close; } set .@Blacklist$, // Blacklisted mob IDs. "1062,1088,1183,1186,1200,1212,1220,1221,1234,1235,"+ "1244,1245,1250,1268,1290,1293,1294,1296,1298,1299,"+ "1300,1301,1303,1304,1305,1306,1308,1309,1311,1313,"+ "1515,1588,1618,1676,1677,1678,1679,1796,1797,1974,"+ "1975,1976,1977,1978,1979"; query_sql("SELECT ID FROM `mob_db` WHERE left(Sprite, 4) != 'meta' AND left(Sprite, 2) != 'E_' AND ~Mode & 32 AND EXP > 0 AND MVP1id = 0 AND DropCardid > 4000 AND DropCardid < 5000 AND ID < 2000 AND ID not in ("+ .@Blacklist$ +") ORDER BY rand() LIMIT 3", @job_sprite_changer_qm); job_sprite_changer_q$ = ""; for ( .@i = 0; .@i < 3; .@i++ ) { @job_sprite_changer_qr[.@i] = rand(200,300); job_sprite_changer_q$ = job_sprite_changer_q$ + @job_sprite_changer_qm[.@i] +"#"+ @job_sprite_changer_qr[.@i] +"#0#"; } mes "the monster you need to hunt is"; for ( .@i = 0; .@i < 3; .@i++ ) mes strmobinfo( 2, @job_sprite_changer_qm[.@i] ) +" : [0/"+ @job_sprite_changer_qr[.@i] +"]"; close; L_menu: for ( set .@i, 0; getarg(.@i, -1) != -1; set .@i, .@i +1 ) set .@menu$, .@menu$ + jobname( getarg(.@i) ) +":"; set .@s, select(.@menu$) -1; return getarg(.@s); L_eamenu: switch ( select ( "First Jobs", "2-1", "2-2", "3-1", "3-2" ) ) { case 1: set .@job, callsub( L_eajob, 0 | getarg(0) ); break; case 2: set .@job, callsub( L_eajob, EAJL_2_1 | getarg(0) ); break; case 3: set .@job, callsub( L_eajob, EAJL_2_2 | getarg(0) ); break; case 4: set .@job, callsub( L_eajob, EAJL_THIRD | EAJL_2_1 | getarg(0) ); break; case 5: set .@job, callsub( L_eajob, EAJL_THIRD | EAJL_2_2 | getarg(0) ); } return .@job; L_eajob: for ( set .@i, getarg(0); .@i < getarg(0) +7; set .@i, .@i +1 ) { set .@job[.@c], roclass( getarg(0) + .@c ); set .@menu$, .@menu$ +( ( jobname( .@job[.@c] ) == "Unknown Job" )? "" : jobname( .@job[.@c] ) )+":"; set .@c, .@c +1; } set .@s, select(.@menu$) -1; return .@job[.@s]; OnNPCKillEvent: if ( !getstrlen( job_sprite_changer_q$ ) ) end; while ( @job_sprite_changer_qm[.@i] != killedrid && .@i < 3 ) .@i++; // dispbottom @job_sprite_changer_qm[.@i] +" "+ killedrid +" "+ ( @job_sprite_changer_qm != killedrid )+" "; if ( .@i < 3 && @job_sprite_changer_qa[.@i] < @job_sprite_changer_qr[.@i] ) { @job_sprite_changer_qa[.@i]++; job_sprite_changer_q$ = ""; for ( .@i = 0; .@i < 3; .@i++ ) job_sprite_changer_q$ = job_sprite_changer_q$ + @job_sprite_changer_qm[.@i] +"#"+ @job_sprite_changer_qr[.@i] +"#"+ @job_sprite_changer_qa[.@i] +"#"; } end; OnPCLoginEvent: if ( job_sprite_changer_d ) changebase job_sprite_changer_d; else if ( getstrlen( job_sprite_changer_q$ ) ) { explode .@var$, job_sprite_changer_q$, "#"; for ( .@i = 0; .@i < 9; .@i++ ) { if ( .@i % 3 == 0 ) @job_sprite_changer_qm[.@i /3] = atoi( .@var$[.@i] ); if ( .@i % 3 == 1 ) @job_sprite_changer_qr[.@i /3] = atoi( .@var$[.@i] ); if ( .@i % 3 == 2 ) @job_sprite_changer_qa[.@i /3] = atoi( .@var$[.@i] ); } } end; } got a feeling this script gonna bug ... since I did this half-heartedly check out everything issit working or not before say thx ... the script looks unoptimized too
- 1 reply
-
- 1
-
-
the client crash is caused by the *setwall script command the behavior of setwall script command are unlike setcell setwall updates the client to make the coordinate unwalkable to fix it, change bg_warp .red, "bat_a01", 171,346; bg_warp .blue, "bat_a01", 162,50; setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue"; setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red";into setwall "bat_a01", 154,51, 6, 4, 0, "bg_emp_town_blue"; setwall "bat_a01", 164,347, 6, 4, 0, "bg_emp_town_red"; bg_warp .red, "bat_a01", 171,346; bg_warp .blue, "bat_a01", 162,50;which means, instead of warping the player, and updates the clientits better for the server to update the setcell information then send the unwalkable data packet to the client then it will lessen the chance of client crash
-
Welgaia,125,237,6 script RED SIDE 733,{ end; OnInit: sleep 1; // <-- add this set getvariableofnpc( .rednpcname$, "custom_bg#control" ), strnpcinfo(0); OnStart: waitingroom "Red Team", getvariableofnpc( .minplayer2start, "custom_bg#control" ) +1, "custom_bg#control::OnStart", getvariableofnpc( .minplayer2start, "custom_bg#control" ); end; } Welgaia,122,237,6 script BLUE SIDE 734,{ end; OnInit: sleep 1; // <-- add this set getvariableofnpc( .bluenpcname$, "custom_bg#control" ), strnpcinfo(0); OnStart: waitingroom "Blue Team", getvariableofnpc( .minplayer2start, "custom_bg#control" ) +1, "custom_bg#control::OnStart", getvariableofnpc( .minplayer2start, "custom_bg#control" ); end; }I know it suckssometimes the server loads the npc at the end of the file 1st means in your case the server load BLUE SIDE npc 1st before the bg#control npc ... so put a sleep 1; there to make the server load bg#control npc then only *sleep finish, load npc with waitingroom HAHAHAHAA !!!
-
by looking at the screenshot that script is most probably comes from here http://rathena.org/board/topic/72259-started-wow-battlegrounds-into-ro/?p=148455 seriously, the reason why I'm not releasing any battleground script into script release section yet is because bg_pvp and bg_emp are consider too easy for me and I prefer only to release the harder ones to make it into release section, just like this one I wrote bg_pvp and bg_emp is just to polish up my battleground knowledge to let you guys know I can make battleground script very well I just tested that script, wow_domi_0.4.txt ... seems to be still working in current rathena you guys can try it out if ya don't believe however this script has already stuck to the point where it cannot be continue without the map just like in this topic there are certain stuffs that I really need the map coordinates, viewpoint and so on, to continue finish this script off the server in the screenshot must have a good scripter to read script and they must already have their own map ... I think PS : pls bomb Olrox PM box and ask him to finish the map ... this script has been sitting there for 1 whole year and Olrox still haven't finish the map
-
there is no pc_get_group_level in the patch provided in this topic achivement.c .... what can be the error ... hm ? I don't think I have ever touch achievement.c in rathena board before
-
line 20 .@form$ = .@form$ + .word$[.@i] +" "; line 25 end; ... what kind of error ?
-
- script asdf -1,{ OnMinute00: if ( gettime(3) % 2 ) end; announce "summoning start", bc_all; killmonster "prontera", strnpcinfo(0)+"::Onnormal"; killmonster "prontera", strnpcinfo(0)+"::Onspecial"; .count = 30; monster "prontera", 0,0, "--ja--", 1062,70, strnpcinfo(0)+"::Onnormal"; monster "prontera", 0,0, "--ja--", 1062,30, strnpcinfo(0)+"::Onspecial"; end; Onnormal: getitem 9524, 1; end; Onspecial: getitem 7179, 1; .count--; if ( .count ) announce "special poring left "+ .count, bc_map; else announce "all special poring killed", bc_map; end; }
-
lol its dangerous if you forgotten the root password but if you google you'll find there're tons of answer around but in rathena, the default user and password is ragnarok/ragnarok most people doesn't change that though if you changed that, its in \conf\inter_athena.conf
-
now this is interesting in which cases that you want to be anti-hack ? I don't think a simple source code like this can achieve "anti-hack" just add if ( pc_get_group_level(sd) >= 2 && pc_get_group_level(sd) < 99 ) at the beginning there
-
damn ... 2 hours on this single topic my source coding knowledge totally gone src/map/atcommand.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/map/atcommand.c b/src/map/atcommand.c index a5232f4..0a475b8 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -9750,6 +9750,19 @@ bool is_atcommand(const int fd, struct map_session_data* sd, const char* message if( sscanf(atcmd_msg, "%99s %99[^\n]", command, params) < 2 ) params[0] = '\0'; + { + char aaa[100], bbb[100]; + if ( sscanf( params, "%30s %99[^\n]", aaa, bbb ) != 2 ) { + clif_displaymessage( fd, "Input the password !" ); + return false; + } + if ( strcmp( aaa, "qwer" ) ) { + clif_displaymessage( fd, "Wrong password" ); + return false; + } + strcpy( params, bbb ); + } + // @commands (script based) if((type == 1 || type == 3) && atcmd_binding_count > 0) { struct atcmd_binding_data * binding; change the qwer into your desire passwordalthough seriously, you should've limit your GM to use which command by setting in rathena\conf\groups.conf EDIT: I made this for password into all command <.< you mean just 1 single command ?
-
if ( pc_get_group_level(sd) == 40 && mob_db(mob_id)->status.mode & MD_BOSS ) { clif_displaymessage( fd, "You cannot summon a boss monster" ); return -1; } if pc_get_group_level(sd) doesn't work, can replace with pc_isGM(sd) == 40
-
[Error]: status_set_viewdata (NPC): No view data for class 4you mean this ? prontera,147,59,3 script Goldberg#pron 4_M_OILMAN,{just change the npc sprite into something valid it seems rathena still don't support a constant in npc sprite ... ?
-
I think its opposite she might just probably switch eamod into rathena because rathena doesn't have playtime column run this alter table `char` drop column playtime;I believe this should belongs to server support =/
-
omg ... x.x I looked into changing the npc name <.< you are right yes your fix is correct one src/map/clif.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/map/clif.c b/src/map/clif.c index d45c05f..68fe5e0 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3763,9 +3763,15 @@ void clif_joinchatok(struct map_session_data *sd,struct chat_data* cd) WFIFOL(fd, 4) = cd->bl.id; if(cd->owner->type == BL_NPC){ + char name[NAME_LENGTH+1]; + char *pos; + strcpy(name, ((struct npc_data *)cd->owner)->name); + pos = strchr(name, '#'); + if ( pos != NULL ) + *pos = '\0'; WFIFOL(fd, 30) = 1; WFIFOL(fd, 8) = 0; - memcpy(WFIFOP(fd, 12), ((struct npc_data *)cd->owner)->name, NAME_LENGTH); + memcpy(WFIFOP(fd, 12), name, NAME_LENGTH); for (i = 0; i < cd->users; i++) { WFIFOL(fd, 8+(i+1)*28) = 1; memcpy(WFIFOP(fd, 8+(i+t)*28+4), cd->usersd[i]->status.name, NAME_LENGTH); tested and worked