-
Posts
2407 -
Joined
-
Last visited
-
Days Won
52
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Capuche
-
Like this? 5010,Indian_Hair_Piece,Indian Fillet,5,20,,100,,5,,0,0xFFFFFFFF,7,2,256,,0,1,96,{},{ sleep2 30000; unequip EQI_HEAD_TOP; },{} Refer unequip
-
Nope there is a wrong typo : it's hideonnpc, not hideoonnpc sorry Also add a mapwarp L_Champ: mapannounce "quiz_01","Dice: Come to me and tell me your name.",0; hideoffnpc "Dice#evnt1"; sleep 300000;// 5mins hideonnpc "Dice#evnt1"; mapwarp "quiz_01","prontera",150,150; end;
-
Because sometimes the script use disablenpc and hideoffnpc doesn't enable the npc -> replace all disablenpc by hideonnpc Also if the winner left the game without taking the prize, the next event someone can take the prize. You should add a timer~ L_Champ: mapannounce "quiz_01","Dice: Come to me and tell me your name.",0; hideoffnpc "Dice#evnt1"; sleep 300000;// 5mins hideoonnpc "Dice#evnt1"; end;
-
I suggest to initialize an array which contains all numbers, make a rand of index instead of a rand of number then delete the index Sample: for ( set .@i, 1; .@i < 17; .@i++ ) set .init_random_number[.@i-1], .@i;// initialize all number (1->16) in an array index (0->15) set .total_number, 16;// total: 16 index set .@random_number, rand( .total_number );// choose a random index in the array Player get number in index 1. deletearray .init_random_number[1], 1;// delete the number in index 1 set .total_number, .total_number -1;
-
It opens only once if the gold room never close
-
Custom Battleground 5vs5 with reward (Badges) GVG Mode
Capuche replied to Archetype Saber's question in Script Requests
http://rathena.org/board/topic/74606-battleground-red-vs-blue/?p=158097 -
It's possible repeatable? EDIT: Emistry's faster... I have to refresh all my windows when you are here xD
-
Like that? prontera,155,180,0 script color 100,{ function color; function Step; function int__; mes color( 999 ); mes color( 1000 ); mes color( 10000 ); mes color( 100000 ); mes color( 1000000 ); close; function color { .@tmp = getarg(0); .@value$ = int__( .@tmp ); while( .@i < .size && .@tmp < .step_value[.@i] ) .@i++; if ( .@i == .size ) .@i--; return ( ( .@tmp < .step_value[.size-1] ? "" : .color_value$[.@i] ) + .@value$ + "^000000" ); } function int__ { .@value$ = getarg(0); for ( .@i = .@j = getstrlen( .@value$ ); .@i > 0; .@i-- ) .@string$ = charat( .@value$, .@i -1 ) + ( ( .@j - .@i ) && ( .@j - .@i )%3 == 0 ? "," : "" ) + .@string$; return .@string$; } function Step { .step_value[.size] = getarg(0); .color_value$[.size] = getarg(1); .size++; } OnInit: // Step zeny desc Step( 1000000, "^ff0000" ); Step( 100000, "^ffff00" ); Step( 10000, "^00ff00" ); Step( 1000, "^0000ff" ); }
-
If the player rebirth he can use the npc 20 times and @Patskie You forgot to delete the item. I use your script if you don't mind prontera,155,180,0 script Leveler 100,{ if ( BaseLevel < 80 || BaseLevel > 90 || #GAIN == 10 ) end; .@item_id = 6011; // your item id required .@npc_name$ = strnpcinfo(1); mes "[ " + .@npc_name$ + " ]"; mes "Want to gain 1 level?"; next; if (select("Yes:No") - 1) end; if (!countitem(.@item_id)) { mes "[ " + .@npc_name$ + " ]"; mes "Sorry but you need a " +getitemname(.@item_id)+ " to gain 1 level"; close; } BaseLevel = BaseLevel + 1; #GAIN = #GAIN + 1; delitem .@item_id,1; mes "[ " + .@npc_name$ + " ]"; mes "Gained 1 level!"; close; }
-
prontera,128,213,5 script Coin Manager#1::CM 733,{ // Your Server Max Zeny Amount set .MaxZeny,1000000000; // Coins Item ID and each Coins Costs setarray .Coins[1],677; setarray .Zeny[1],10000000; set .@change_zeny_per_day, 2000000000; // Quest setarray .@item_need, 7227,5, 7444,100, 969,100, 999,100; .@size_need = getarraysize( .@item_need ); set @Menu$,""; for( set .@a,1; .@a < getarraysize( .Coins ); set .@a,.@a+1 ) set @Menu$,@Menu$ + getitemname( .Coins[.@a] )+":"; while( 1 ){ mes "Hello I am the Coin Manager, if you are interested in coins you have to talk with me,What can i help you with?"; next; switch( select( "I want trade Coin to Zeny:I want trade Zeny to Coin" ) ){ Case 1: mes "Very well. But im only interested on really expensive Coins made of Platinum:"; for( set .@a,1; .@a < getarraysize( .Coins ); set .@a,.@a+1 ){ mes "^0000FF"+getitemname( .Coins[.@a] )+" ^FF0000"+.Zeny[.@a]+"^000000 Zeny."; } next; set .@a,select( @Menu$ ); mes "Select the Amount of Coins you want to trade into Zeny."; mes "You have "+countitem( .Coins[.@a] )+" "+getitemname( .Coins[.@a] )+"."; input @Amount,0,countitem( .Coins[.@a] ); if( @Amount < 1 ){ mes "You don't have that quantity of Coins."; }else if( ( Zeny + ( @Amount * .Zeny[.@a] ) ) > .MaxZeny ){ mes "You can't hold this amount of Zeny."; }else{ set Zeny,Zeny + ( @Amount * .Zeny[.@a] ); delitem .Coins[.@a],@Amount; mes "Done, you have traded "+@Amount+" of "+getitemname(.Coins[.@a])+" into "+( @Amount * .Zeny[.@a] )+" Zeny."; } next; break; Case 2: if ( zeny_coin_quest < gettimetick(2) ) { mes "im sory but you have to make platinum permit quest to trade zeny into platinum coins, do you want to make platinum permit quest?"; next; if ( select( "yes", "no" ) -1 ) end; mes "you need :"; for ( .@i = 0; .@i < .@size_need; .@i += 2 ) mes "- "+ .@item_need[.@i+1] +" "+ getitemname( .@item_need[.@i] ); mes "and 100,000,000z"; next; if ( select( "give the items", "leave" ) -1 ) close; .@j = 0; for ( .@i = 0; .@i < .@size_need; .@i += 2 ) if ( countitem( .@item_need[.@i] ) < .@item_need[.@i+1] ) { if ( !.@j ) mes "I'm sorry you need"; mes "- "+ ( .@item_need[.@i+1] - countitem( .@item_need[.@i] ) ) +" "+ getitemname( .@item_need[.@i] ); .@j++; } if ( Zeny < 100000000 ) mes "You need "+ ( 100000000 - Zeny ) +" zeny."; if ( .@j || Zeny < 100000000 ) close; for ( .@i = 0; .@i < .@size_need; .@i += 2 ) delitem .@item_need[.@i], .@item_need[.@i+1]; Zeny = Zeny - 100000000; zeny_coin_quest = gettimetick(2) + 30 * 86400; close; } else if ( getstrlen( maxchange_zeny_per_day$ ) ) { explode( .@tmp$, maxchange_zeny_per_day$, "|" ); if ( atoi( .@tmp$ ) == gettime(4) && atoi( .@tmp$[1] ) > .@change_zeny_per_day ) { mes "I'm sorry you can't exchange more than "+ .@change_zeny_per_day +" zeny per day."; close; } else if ( atoi( .@tmp$ ) != gettime(4) ) .@tmp$[1] = 0; } mes "Very well. Here is the list on how much each coin is worth:"; for( set .@a,1; .@a < getarraysize( .Coins ); set .@a,.@a+1 ){ mes "^0000FF"+getitemname( .Coins[.@a] )+" ^FF0000"+.Zeny[.@a]+"^000000 Zeny."; } next; set .@a,select( @Menu$ ); mes "Select the Amount of Zeny you want to trade into "+getitemname( .Coins[.@a] )+"."; mes "You can get maximum of "+Zeny/.Zeny[.@a]+" "+getitemname( .Coins[.@a] )+"."; input @Amount,0,Zeny/.Zeny[.@a]; if( @Amount < 1 ){ mes "You don't have that quantity of Zeny."; }else{ set Zeny,Zeny - ( @Amount * .Zeny[.@a] ); getitem .Coins[.@a],@Amount; mes "Done, you have traded "+( @Amount * .Zeny[.@a] )+" Zeny into "+@Amount+" of "+getitemname(.Coins[.@a])+" ."; .@tmp$ = gettime(4); .@tmp$[1] = atoi( .@tmp$[1] ) + @Amount * .Zeny[.@a]; maxchange_zeny_per_day$ = implode( .@tmp$, "|" ); } next; break; } } close; } payon,164,222,2 duplicate(CM) Coin Manager#2 733 turbo_room,93,117,5 duplicate(CM) Coin Manager#3 733
-
Somebody can edit this script for me please? job master
Capuche replied to eboni001's question in Script Requests
Like this? //===== rAthena Script ======================================= //= Job Master //===== By: ================================================== //= Euphy //===== Current Version: ===================================== //= 1.3 //===== Compatible With: ===================================== //= rAthena SVN r16114+ //===== Description: ========================================= //= A fully functional job changer. //===== Additional Comments: ================================= //= 1.1 Fixed reset on Baby job change. [Euphy] //= 1.2 Added Expanded Super Novice support and initial Kagerou/Oboro support. [Euphy] //= 1.3 Kagerou/Oboro added. [Euphy] //============================================================ prontera,153,183,4 script Job Master#1::JM 743,{ function Job_Menu; function A_An; mes "[Job Master]"; if (Class > 4049) { mes "No more jobs are available."; close; } if (checkfalcon() || checkcart() || checkriding() || ismounting()) { mes "Please remove your "+((checkfalcon())?"falcon":"")+((checkcart())?"cart":"")+((checkriding())?"Peco":"")+((ismounting())?"mount":"")+" before proceeding."; close; } if (.SkillPointCheck && SkillPoint) { mes "Please use all your skill points before proceeding."; close; } set .@eac, eaclass(); set .@i, ((.ThirdClass)?roclass(.@eac&EAJ_UPPERMASK):Class); if (.@i > 6 && .@i < 22) { if (BaseLevel < .Rebirth[0] || JobLevel < .Rebirth[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .Rebirth[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } if (Class > 21) { mes "Switch to third class?"; next; Job_Menu(roclass(.@eac|EAJL_THIRD)); close; } while(1) { mes "Select an option."; next; set .@i, select(" ~ ^0055FFRebirth^000000:: ~ ^777777Cancel^000000"); if (.@i==3) close; mes "[Job Master]"; mes "Are you sure?"; next; Job_Menu(roclass(.@eac|EAJL_UPPER)); mes "[Job Master]"; } } set .@j1, roclass(.@eac|EAJL_2_1); set .@j2,roclass(.@eac|EAJL_2_2); if ((.@eac&EAJ_UPPERMASK) == EAJ_SUPER_NOVICE) setarray .@exp[0],roclass(.@eac|EAJL_THIRD),99; if (Class == Job_Ninja) setarray .@exp[0],.@j1,70; if (.@exp[0] && (.ThirdClass || Class == Job_Ninja)) { if (BaseLevel < .Rebirth[0] || JobLevel < .@exp[1]) { set .@blvl, .Rebirth[0]-BaseLevel; set .@jlvl, .@exp[1]-JobLevel; mes "You need "+((.@blvl>0)?.@blvl+" more base levels "+((.@jlvl>0)?"/ ":""):"")+((.@jlvl>0)?.@jlvl+" more job levels ":"")+"to continue."; close; } mes "Switch to "+jobname(.@exp[0])+"?"; next; Job_Menu(.@exp[0]); close; } if (.@eac&EAJL_2) if (.@eac&(EAJL_UPPER|EAJL_BABY) || roclass(.@eac|EAJL_UPPER) == -1) { mes "No more jobs are available."; close; } if ((.@eac&EAJ_BASEMASK) == EAJ_NOVICE) { if (JobLevel < .JobReq[0]) mes "A job level of "+.JobReq[0]+" is required to change into the 1st Class."; else if (Class == 4001 && .LastJob && lastJob) { mes "Switch classes now?"; next; Job_Menu(roclass((eaclass(lastJob)&EAJ_BASEMASK)|EAJL_UPPER)); } else switch(Class) { case 0: Job_Menu(1,2,3,4,5,6,23,4046,24,25,4023); case 4001: Job_Menu(4002,4003,4004,4005,4006,4007); case 4023: Job_Menu(4024,4025,4026,4027,4028,4029,4045); default: mes "An error has occurred."; break; } close; } if (roclass(.@eac|EAJL_2_1) == -1 || roclass(.@eac|EAJL_2_2) == -1) mes "No more jobs are available."; else if (!(.@eac&EAJL_2) && JobLevel < .JobReq[1]) mes "A job level of "+.JobReq[1]+" is required to change into the 2nd Class."; else if (.LastJob && lastJob && (.@eac&EAJL_UPPER)) { mes "Switch classes now?"; next; Job_Menu(lastJob+4001); } else Job_Menu(.@j1,.@j2); close; function Job_Menu { while(1) { if (getargcount() > 1) { mes "Select a job."; set .@menu$,""; for(set .@i,0; .@i<getargcount(); set .@i,.@i+1) set .@menu$, .@menu$+" ~ "+jobname(getarg(.@i))+":"; set .@menu$, .@menu$+" ~ ^777777Cancel^000000"; next; set .@i, getarg(select(.@menu$)-1,0); if (!.@i) close; if ((.@i == 23 || .@i == 4045) && BaseLevel < .SNovice) { mes "[Job Master]"; mes "A base level of "+.SNovice+" is required to turn into a "+jobname(.@i)+"."; close; } mes "[Job Master]"; mes "Are you sure?"; next; } else set .@i, getarg(0); if (select(" ~ Change into ^0055FF"+jobname(.@i)+"^000000 class: ~ ^777777"+((getargcount() > 1)?"Go back":"Cancel")+"^000000") == 1) { mes "[Job Master]"; mes "You are now "+A_An(jobname(.@i))+"!"; if (.@i==4001 && .LastJob) set lastJob, Class; jobchange .@i; if (.@i==4001 || .@i==4023) resetlvl(1); specialeffect2 338; specialeffect2 432; if (.Platinum) callsub Get_Platinum; close; } if (getargcount() == 1) return; mes "[Job Master]"; } end; } function A_An { setarray .@A$[0],"a","e","i","o","u"; set .@B$, "_"+getarg(0); for(set .@i,0; .@i<5; set .@i,.@i+1) if (compare(.@B$,"_"+.@A$[.@i])) return "an "+getarg(0); return "a "+getarg(0); } Get_Platinum: skill 142,1,0; switch(BaseClass) { case 0: if (Class !=23) skill 143,1,0; break; case 1: skill 144,1,0; skill 145,1,0; skill 146,1,0; break; case 2: skill 157,1,0; break; case 3: skill 147,1,0; skill 148,1,0; break; case 4: skill 156,1,0; break; case 5: skill 153,1,0; skill 154,1,0; skill 155,1,0; break; case 6: skill 149,1,0; skill 150,1,0; skill 151,1,0; skill 152,1,0; break; default: break; } switch(BaseJob) { case 7: skill 1001,1,0; break; case 8: skill 1014,1,0; break; case 9: skill 1006,1,0; break; case 10: skill 1012,1,0; skill 1013,1,0; break; case 11: skill 1009,1,0; break; case 12: skill 1003,1,0; skill 1004,1,0; break; case 14: skill 1002,1,0; break; case 15: skill 1015,1,0; skill 1016,1,0; break; case 16: skill 1007,1,0; skill 1008,1,0; skill 1017,1,0; skill 1018,1,0; skill 1019,1,0; break; case 17: skill 1005,1,0; break; case 18: skill 238,1,0; break; case 19: skill 1010,1,0; break; case 20: skill 1011,1,0; break; default: break; } return; OnInit: setarray .Rebirth[0],0,50; // Minimum base level, job level to rebirth OR change to third class setarray .JobReq[0],10,50; // Minimum job level to turn into 1st class, 2nd class set .ThirdClass,0; // Enable third classes? (1: yes / 0: no) set .SNovice,50; // Minimum base level to turn into Super Novice set .LastJob,1; // Enforce linear class changes? (1: yes / 0: no) set .SkillPointCheck,1; // Force player to use up all skill points? (1: yes / 0: no) set .Platinum,0; // Get platinum skills automatically? (1: yes / 0: no) end; } payon,148,231,6 duplicate(JM) Job Master#2 743 -
Show me your quest
-
prontera,150,150,5 script special warper 456,{ function t; .@item_required = 607; .@timer_allow = 3600; // allow to warp 1h .@level_required = 99; .@special_map$ = "geffen"; if ( #allow_use_warper && #allow_use_warper > gettimetick(2) ) { mes "you can use the warp for "+ t( #allow_use_warper - gettimetick(2) ); next; } else { if ( #allow_use_warper && #allow_use_warper < gettimetick(2) ) { #allow_use_warper = 0; setd ".allow_"+ getcharid(3), 0; } if ( BaseLevel < .@level_required ) { mes "you must be level "+ .@level_required +" to go further."; close; } else if ( countitem( .@item_required ) < 0 ) { mes "you need a "+ getitemname( .@item_required ); close; } else if ( #delay_special_warp > gettimetick(2) ) { mes "I'm sorry you can't use this warper. you must wait "+ t( #delay_special_warp - gettimetick(2) ); close; } } select( "use warper" ); warp .@special_map$,0,0; // your warp map if ( !#allow_use_warper ) { #allow_use_warper = gettimetick(2) + .@timer_allow; #delay_special_warp = gettimetick(2) + 86400 * 7; // 1 week of delay } if ( !getd( ".allow_"+ getcharid(3) ) ) { setd ".allow_"+ getcharid(3), 1; attachnpctimer; initnpctimer; } end; OnTimer300000: // check timer every 5mins OnTimer600000: OnTimer900000: OnTimer1200000: OnTimer1500000: OnTimer1800000: OnTimer2100000: OnTimer2400000: OnTimer2700000: OnTimer3000000: OnTimer3300000: OnTimer3600000: if ( strcharinfo(3) == .@special_map$ && #allow_use_warper && #allow_use_warper < gettimetick(2) ) { stopnpctimer; warp "prontera",0,0; message strcharinfo(0), "end of time"; setd ".allow_"+ getcharid(3), 0; } else if ( strcharinfo(3) != .@special_map$ ) stopnpctimer; end; function t { function s; set .@left, getarg(0); if ( .@left <= 0 ) return getarg(0); set .@day, .@left / 86400; set .@hour, .@left % 86400 / 3600; set .@min, .@left % 3600 / 60; set .@sec, .@left % 60; return ( ( .@day ? .@day +" day"+ s( .@day ) : "" ) + ( .@hour ? .@hour +" hour"+ s( .@hour ) : "" ) + ( .@min ? .@min +" min"+ s( .@min ) : "" ) + ( .@sec ? .@sec +" sec"+ s( .@sec,1 ) : "" ) ); function s { return ( ( getarg(0) > 1 ? "s" : "" ) + ( getarg(1,0) ? "" : " " ) ); } } } Try this one
-
Like this? prontera,150,150,5 script gold room 456,{ function t { function s; set .@left, getarg(0); if ( .@left <= 0 ) return getarg(0); set .@day, .@left / 86400; set .@hour, .@left % 86400 / 3600; set .@min, .@left % 3600 / 60; set .@sec, .@left % 60; return ( ( .@day ? .@day +" day"+ s( .@day ) : "" ) + ( .@hour ? .@hour +" hour"+ s( .@hour ) : "" ) + ( .@min ? .@min +" min"+ s( .@min ) : "" ) + ( .@sec ? .@sec +" sec"+ s( .@sec,1 ) : "" ) ); function s { return ( ( getarg(0) > 1 ? "s" : "" ) + ( getarg(1,0) ? "" : " " ) ); } } if ( enter_gold_room > gettimetick(2) ) { mes "I'm sorry you can't enter in the gold room. you must wait "+ t( enter_gold_room - gettimetick(2) ); close; } select( "enter in the gold room" ); warp "geffen",0,0; // your gold room map attachnpctimer; initnpctimer; enter_gold_room = gettimetick(2) + 86400 * 7; // 1 week of delay end; OnTimer1800000: // 30 mins stopnpctimer; warp "prontera",0,0; message strcharinfo(0), "end of time for the gold room"; end; } Read the comment in the script
-
Like this? EDIT: take the last script
-
or like this? - script dual_client -,{ OnInit: setarray .@map$, "alberta","geffen"; // yours maps no dual .@size = getarraysize( .@map$ ); for ( .@i = 0; .@i < .@size; .@i++ ) if ( !getmapflag( .@map$[.@i], mf_loadevent ) ) setmapflag .@map$[.@i], mf_loadevent; .map_list$ = implode( .@map$, "|" ); .@count = query_sql( "select `login`.`last_ip`, `char`.`name`, `char`.`char_id` from `login` left join `char` on `char`.`account_id`=`login`.`account_id` where `char`.`online`=1", .@last_ip$, .@name$, .@char_id ); for ( .@i = 0; .@i < .@count; .@i++ ) { getmapxy .@map$, .@x, .@y, 0, .@name$[.@i]; if ( !compare( .map_list$, .@map$ ) ) continue; .@size = 0; .@variable$ = ".ip_"+ .@last_ip$[.@i] +"$"; if ( getd( .@variable$ ) != "" ) { .@size = getarraysize( getd( .@variable$ ) ); for ( .@j = 0; .@j < .@size; .@j++ ) { getmapxy .@map2$, .@x, .@y, 0, getd( .@variable$ +"["+ .@j +"]" ); if ( .@map$ == .@map2$ ) { warpchar "prontera",150,150, .@char_id[.@i]; message .@name$[.@i], "No dual account on this map."; break; } } } if ( .@j == .@size ) setd .@variable$ +"["+ .@size +"]", .@name$[.@i]; } end; OnPCLoadMapEvent: if ( !compare( .map_list$, strcharinfo(3) ) ) end; .@map$ = strcharinfo(3); .@myname$ = strcharinfo(0); .@variable$ = ".ip_"+ getcharip() +"$"; .@size = getarraysize( getd( .@variable$ ) ); for ( .@j = 0; .@j < .@size; .@j++ ) { if ( .@myname$ == getd( .@variable$ +"["+ .@j +"]" ) ) { .@is_in = 1; continue; } getmapxy .@map2$, .@x, .@y, 0, getd( .@variable$ +"["+ .@j +"]" ); .@compare = compare( .map_list$, .@map2$ ); if ( !.@compare ) { .@tmp$ = .@variable$ +"["+ .@j +"]"; deletearray getd( .@tmp$ ), 1; .@size--; } else if ( .@map$ == .@map2$ ) { warpchar "prontera",150,150, getcharid(0); message .@myname$, "No dual account on this map."; end; } } if ( !.@is_in ) setd .@variable$ +"["+ .@size +"]", .@myname$; end; }
-
Then it should be useful to return the gid of monster in monster, summon, clone commands
-
Nice try xD however empty string is not a valid delimiter
-
Make famous PvP Ladder works only in specific PvP rooms?
Capuche replied to Currently's question in Scripting Support
add right after OnPCKillEvent: if ( getgmlevel() >= $@LadderGM ) end; theses lines .@map$ = strcharinfo(3); if ( .@map$ != "pvp_n_1-3" && .@map$ != "arena_4" && .@map$ != "final_dest" ) end; -
Party Vs Party ( again lol ) Read Please :)
Capuche replied to Virtue's question in Scripting Support
Like that? OnSubscriptionTeam: getpartymember($@TeamID2),0; getpartymember($@TeamID2),1; getpartymember($@TeamID2),2; copyarray $@partymembercidtc2[0],$@partymembercid[0],$@members; copyarray $@partymemberaidc2[0],$@partymemberaid[0],$@members; for (set .@i,0; .@i<$@members; set .@i,.@i+1) { if(isloggedin($@partymemberaidc2[.@i],$@partymembercidtc2[.@i])) set .@countx,.@countx+1; } if(.@countx < $@members) { announce "Team War : "+getpartyname($@TeamID2)+"are not all online the match has been canceled",0; announce "Team War : registration for 2 new teams are now available",0; goto lend; } if ( $@TeamID2 && $@partymembercount != $@members ) { announce getpartyname($@TeamID2) +" has extra party members !", 0; goto lend; } if ( callsub( L_checkjob ) ) goto lend; getpartymember($@TeamID1),0; getpartymember($@TeamID1),1; getpartymember($@TeamID1),2; copyarray $@partymembercidtc1[0],$@partymembercid[0],$@members; copyarray $@partymemberaidc1[0],$@partymemberaid[0],$@members; for (set .@i,0; .@i<$@members; set .@i,.@i+1) { if(isloggedin($@partymemberaidc1[.@i],$@partymembercidtc1[.@i])) set .@countz,.@countz+1; } if(.@countz < $@members) { announce "Team War : "+getpartyname($@TeamID1)+"are not all online the match has been canceled",0; announce "Team War : registration for 2 new teams are now available",0; goto lend; } if ( $@TeamID1 && $@partymembercount != $@members ) { announce getpartyname($@TeamID1) +" has extra party members !", 0; goto lend; } if ( callsub( L_checkjob ) ) goto lend; if($@TeamID1!=0 && $@TeamID2!=0){ announce "Team War : We have 2 Teams signed up now : "+getpartyname($@TeamID1)+" and "+getpartyname($@TeamID2)+".",bc_blue|bc_map; set @win1, 0; set @win2, 0; goto Onstart; } end; L_checkjob: while( .@i < $@partymembercount ) { .@job$ = jobname( readparam( 19, $@partymembername$[.@i] ) ); if ( compare( .@concat_job$, .@job$ ) ) return 1; .@concat_job$ = .@concat_job$ + .@job$ +"|"; .@i++; } return 0; I just add if ( callsub( L_checkjob ) ) goto lend; and the label L_checkjob: while( .@i < $@partymembercount ) { .@job$ = jobname( readparam( 19, $@partymembername$[.@i] ) ); if ( compare( .@concat_job$, .@job$ ) ) return 1; .@concat_job$ = .@concat_job$ + .@job$ +"|"; .@i++; } return 0; -
Replace sleep 1000; announce "Event: 'Novice Vs. Zombie' has begun!!",0,0x00FF00; monster "quiz_01",42,369,"Zombie",1015,1; disablenpc "Novice vs. Zombie"; sleep 10000; by sleep 1000; disablenpc "Novice vs. Zombie"; if ( getmapusers( "quiz_01" ) < 2 ) {// stop the script and warp player if less than 2 players on quiz map announce "Event: 'Novice Vs. Zombie' has end!!",0,0x00FF00; mapwarp "quiz_01","prontera",0,0; end; } announce "Event: 'Novice Vs. Zombie' has begun!!",0,0x00FF00; monster "quiz_01",42,369,"Zombie",1015,1; sleep 10000;
-
That means... well it's already fully explained. To solve it, increase MAX_EVENTQUEUE's value in map.h (source side)
-
- script fsdddg -1,{ OnNPCKillEvent: if ( getmonsterinfo( killedrid,1 ) > 50 ) { // if the lvl > 50 .@boss = getmonsterinfo( killedrid,21 )& 0x0020; // check if b is boss .@percent_gift = .@boss ? 50 : 25; // 5% for boss, 2.5% for other .@random_number = rand(1000); if ( .@random_number < .@percent_gift ) { getmapxy .@map$, .@x, .@y, 0; makeitem 501, 1, .@map$, .@x, .@y; } } end; } There is getmonsterinfo(<mob ID>,<type>)