-
Posts
794 -
Joined
-
Last visited
-
Days Won
3
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by AinsLord
-
how to make SQL for Euphys Mission QUest
AinsLord replied to AinsLord's question in Scripting Support
this sql is for Emistry quest board and i fix that already the not working one is the Euphy Mission Quest board i dunno why i dunno where to get the SQL for that all i have is the SQL for Emistry T_T -
after editing the accename.lub this mysterious txt shown up check the highlighted one i dunno why or how that txt shows up in the notepad file it doesnt show up once i drag it on my grf it shows can anyone help me please T_T bump this
-
link for the latest in github thnx in advance
-
extended vending system that works on rathena version SVN r218?
-
can u put several items like skulls on pvp emperium or any items?? thnx in advance
-
does this work on SVN r218?
-
dont know how to do the sql table for the mission quest please help thnx in advance
-
i really dont know how to do it please help me thnx in advance i have the script but it shows like this /* Credits : AnnieRuru [major bug fixes] */ /* DROP TABLE IF EXISTS `mission_board`; CREATE TABLE IF NOT EXISTS `mission_board` ( `id` int(11) unsigned NOT NULL, `title` varchar(30) NOT NULL default '', `desc` varchar(255) NOT NULL default '', `mob_list` varchar(50) NOT NULL default '', `mob_qty` varchar(50) NOT NULL default '', `item_list` varchar(50) NOT NULL default '', `item_qty` varchar(50) NOT NULL default '', `class_limitation` int(11) unsigned NOT NULL default '0', `class_branch` int(11) unsigned NOT NULL default '0', `min_lv` smallint(6) unsigned NOT NULL default '1', `max_lv` smallint(6) unsigned NOT NULL default '99', `repeat` smallint(6) unsigned NOT NULL default '0', `duration` int(11) unsigned NOT NULL default '0', `reward_list` varchar(50) NOT NULL default '', `reward_qty` varchar(50) NOT NULL default '', `base_exp` int(11) unsigned NOT NULL default '0', `job_exp` int(11) unsigned NOT NULL default '0', `zeny` int(11) unsigned NOT NULL default '0', `cash` int(11) unsigned NOT NULL default '0', `aid` int(11) unsigned NOT NULL default '0', `name` varchar(30) NOT NULL default '', `time_update` datetime NOT NULL default '0000-00-00 00:00:00', `npc_id` varchar(255) NOT NULL default '', `redo_delay` smallint(6) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS `player_mission`; CREATE TABLE IF NOT EXISTS `player_mission` ( `id` int(11) unsigned NOT NULL, `mission_id` int(11) unsigned NOT NULL, `aid` int(11) unsigned NOT NULL default '0', `cid` int(11) unsigned NOT NULL default '0', `name` varchar(30) NOT NULL default '', `mob_hunt` varchar(50) NOT NULL default '', `expire` int(11) unsigned NOT NULL default '0', `starting` datetime NOT NULL default '0000-00-00 00:00:00', `completion` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; */ - script mission_board -1,{ .@gm_level = getgmlevel(); .@npc_name$ = strnpcinfo(1); .@mission_npc_num = atoi( strnpcinfo(2) ); // check npc if it's a valid npc with number 1 ~ 500 if( !.@mission_npc_num || .@mission_npc_num > 500 ){ message strcharinfo(0),"This NPC isnt working, invalid <'"+strnpcinfo(2)+"'>"; disablenpc strnpcinfo(0); end; } // to assign offset index. .@mission_npc_num--; query_sql( "SELECT COUNT(`id`) FROM `mission_board` WHERE `npc_id` LIKE '%|"+.@mission_npc_num+"|%' ",.@mission_count ); query_sql( "SELECT `id`,`mission_id`,`mob_hunt`,`expire` FROM `player_mission` WHERE `mission_id` IN ( SELECT `id` FROM `mission_board` WHERE `npc_id` LIKE '%|"+.@mission_npc_num+"|%' ) AND `cid` = "+getcharid(0)+" AND `completion` = '0000-00-00 00:00:00' ",.@id,.@mission_id,.@mob_hunt$,.@expire ); .@current_mission_size = getarraysize( .@id ); mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "A mission board may provide various missions for adventures. Each players may pick "; mes " ^FF0000"+.max_mission_per_char+" missions^000000"; mes "from each mission npc."; next; switch( select( ( .@current_mission_size )?"Submit Mission":"", ( .@current_mission_size < .max_mission_per_char )?"Pick Mission":"", ( .@current_mission_size )?"Drop Mission":"", ( .@gm_level < .gm_level || !.@mission_count )?"":"^FF0000[GM] Update Mission^000000", ( .@gm_level < .gm_level )?"":"^FF0000[GM] Setup Mission^000000", ( .@gm_level < .gm_level || !.@mission_count )?"":"^FF0000[GM] Delete Mission^000000" ) ){ case 1: .@current_time = gettimetick(2); query_sql( "SELECT `id`,`title`,`min_lv`,`max_lv` FROM `mission_board` WHERE `npc_id` LIKE '%|"+.@mission_npc_num+"|%' AND `id` IN ( SELECT `mission_id` FROM `player_mission` WHERE `cid` = "+getcharid(0)+" AND `completion` = '0000-00-00 00:00:00' )",.@mission_id,.@title$,.@min_lv,.@max_lv ); .@size = getarraysize( .@mission_id ); for( .@i = 0; .@i < .@size; .@i++ ){ if( .@expire[.@i] && .@expire[.@i] < .@current_time ) .@submit_menu$ = .@submit_menu$ + "^FF0000[Expired]^000000"; .@submit_menu$ = .@submit_menu$ + "["+.@min_lv[.@i]+"~"+.@max_lv[.@i]+"] "+.@title$[.@i] +":"; } .@i = select( .@submit_menu$ ) - 1; if( .@expire[.@i] && .@expire[.@i] < .@current_time ){ dispbottom " ~ Mission expired "+callsub( OnTime2Str,( gettimetick(2) + ( .@current_time - .@expire[.@i] ) ) )+" ago."; dispbottom " ~ You may drop this mission."; close; } // get mission data from sql query_sql( "SELECT * FROM `mission_board` WHERE `id` = "+.@mission_id[.@i]+" LIMIT 1", .@mission_id, .@title$, .@description$, .@mob_list$, .@mob_qty$, .@item_list$, .@item_qty$, .@base_job_bitmask, .@job_branch_bitmask, .@min_lv, .@max_lv, .@repeatable, .@timelimit, .@reward_list$, .@reward_qty$, .@baseexp, .@jobexp, .@zeny, .@cash, .@aid, .@name$, .@time_update$, .@npc_id$, .@redo_delay ); // explode all saved strings to array value. .@monster_size = callsub( OnExplodeArray,.@mob_list$,.@monster_list,0 ); if( .@monster_size ) callsub( OnExplodeArray,.@mob_qty$,.@monster_qty,0 ); .@item_size = callsub( OnExplodeArray,.@item_list$,.@item_list,0 ); if( .@item_size ) callsub( OnExplodeArray,.@item_qty$,.@item_qty,0 ); .@reward_size = callsub( OnExplodeArray,.@reward_list$,.@reward_list,0 ); if( .@reward_size ) callsub( OnExplodeArray,.@reward_qty$,.@reward_qty,0 ); .@selected_npc_size = callsub( OnExplodeArray,.@npc_id$,.@selected_npc_array$,1 ); setarray .@level_range,.@min_lv,.@max_lv; // display the information of mission .@result = callsub( OnDisplayMissionInfo, .@mission_id, .@title$, .@description$, .@level_range, .@repeatable, .@expire[.@i], .@monster_list, .@monster_qty, .@item_list, .@item_qty, .@base_job_bitmask, .@job_branch_bitmask, .@baseexp, .@jobexp, .@cash, .@zeny, .@reward_list, .@reward_qty, .@selected_npc_array$, .@time_update$, .@redo_delay, 1|2|4|8 ); // submit mission or not if( .@result ){ message strcharinfo(0),"Failed to submit this mission."; }else{ next; if( select( "Submit Completed Mission","Cancel" ) == 1 ){ for( .@ms = ( @ms_size - 1 ); .@ms >= 0; .@ms-- ) if( @ms_list$[.@ms] == ""+.@mission_id ){ mes "^0055FF[ "+.@npc_name$+" ]^000000"; query_sql( "UPDATE `player_mission` SET `completion` = NOW() WHERE `cid` = "+getcharid(0)+" AND `mission_id` = "+.@mission_id +" AND `completion` = '0000-00-00 00:00:00'" ); mes "Mission accomplished."; @ms_size--; // clear requirement. setd( "@ms_"+.@mission_id+"_expire" ),0; deletearray getd( "@ms_"+.@mission_id+"_list" ); deletearray getd( "@ms_"+.@mission_id+"_qty" ); deletearray getd( "@ms_"+.@mission_id+"_hunt" ); if( .@item_size ) for( .@i = 0; .@i < .@item_size; .@i++ ){ // debugmes getitemname( .@item_list[.@i] )+" - "+.@item_qty[.@i]; delitem .@item_list[.@i],.@item_qty[.@i]; } mes "Gained some mission's rewards."; // rewards getexp .@baseexp,.@jobexp; if( .@reward_size ) for( .@i = 0; .@i < .@reward_size; .@i++ ) getitem .@reward_list[.@i],.@reward_qty[.@i]; #CASHPOINTS += .@cash; Zeny += .@zeny; break; } mes "Something went wrong .."; } } break; case 2: // get info from SQL. do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; deletearray .@id; query_sql( "SELECT `id`,`title`,`min_lv`,`max_lv` FROM `mission_board` WHERE `npc_id` LIKE '%|"+.@mission_npc_num+"|%' AND `id` NOT IN ( SELECT `mission_id` FROM `player_mission` WHERE `cid` = "+getcharid(0)+" AND `completion` = '0000-00-00 00:00:00' ) LIMIT "+.max_page_size+" OFFSET "+.@offset,.@id,.@title$,.@min_lv,.@max_lv ); .@offset += .max_page_size; .@size = getarraysize( .@id ); if( !.@size ){ mes "There are no other available missions to pick."; close; }else{ mes "Pick a mission."; .@mission_menu$ = ""; for( .@i = 0; .@i < .@size; .@i++ ) .@mission_menu$ = .@mission_menu$ + "["+.@min_lv[.@i]+"~"+.@max_lv[.@i]+"] "+.@title$[.@i] +":"; } next; .@i = select( .@mission_menu$+ ( ( .@size < .max_page_size )?"":"- next page" ) ) - 1; }while( .@i == .@size ); query_sql( "SELECT * FROM `mission_board` WHERE `id` = "+.@id[.@i]+" LIMIT 1", .@mission_id, .@title$, .@description$, .@mob_list$, .@mob_qty$, .@item_list$, .@item_qty$, .@base_job_bitmask, .@job_branch_bitmask, .@min_lv, .@max_lv, .@repeatable, .@timelimit, .@reward_list$, .@reward_qty$, .@baseexp, .@jobexp, .@zeny, .@cash, .@aid, .@name$, .@time_update$, .@npc_id$, .@redo_delay ); // explode all saved strings to array value. .@monster_size = callsub( OnExplodeArray,.@mob_list$,.@monster_list,0 ); .@monster_size = callsub( OnExplodeArray,.@mob_qty$,.@monster_qty,0 ); .@item_size = callsub( OnExplodeArray,.@item_list$,.@item_list,0 ); .@item_size = callsub( OnExplodeArray,.@item_qty$,.@item_qty,0 ); .@reward_size = callsub( OnExplodeArray,.@reward_list$,.@reward_list,0 ); .@reward_size = callsub( OnExplodeArray,.@reward_qty$,.@reward_qty,0 ); .@selected_npc_size = callsub( OnExplodeArray,.@npc_id$,.@selected_npc_array$,1 ); setarray .@level_range,.@min_lv,.@max_lv; // display the information of mission .@result = callsub( OnDisplayMissionInfo, .@mission_id, .@title$, .@description$, .@level_range, .@repeatable, ( .@timelimit + gettimetick(2) ), .@monster_list, .@monster_qty, .@item_list, .@item_qty, .@base_job_bitmask, .@job_branch_bitmask, .@baseexp, .@jobexp, .@cash, .@zeny, .@reward_list, .@reward_qty, .@selected_npc_array$, .@time_update$, .@redo_delay, 1|8 ); // check completed how many times. if ( .@repeatable ) { query_sql "select count(id) from player_mission where mission_id = "+ .@id[.@i] +" and completion != '0000-00-00 00:00:00' and cid = "+ getcharid(0), .@mission_completed; if( .@mission_completed >= .@repeatable ) { next; mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes " "; mes "You cant pick this mission, you have mission completion reach the max repeatable attempt of "+.@mission_completed+" times."; close; } } if ( .@redo_delay ) { query_sql "select timestampdiff( hour, completion, now() ), unix_timestamp( date_add( completion, interval "+ .@redo_delay +" hour ) ) from player_mission where cid = "+ getcharid(0) +" and mission_id = "+ .@id[.@i] +" order by completion desc limit 1", .@diff_delay, .@deny_time; if ( .@diff_delay < .@redo_delay ) { next; mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes " "; mes "You cant pick this mission, you have mission redo delay isnt finish yet."; mes "^FF0000"+ callfunc( "Time2Str", .@deny_time ) +"^000000"; close; } } if( .@result ){ message strcharinfo(0),"Failed to pick this mission."; }else{ if( select( "Pick Mission","Cancel" ) == 1 ){ query_sql( "INSERT INTO `player_mission` VALUES ( "+gettimetick(2)+","+.@mission_id+","+getcharid(3)+","+getcharid(0)+",'"+escape_sql( strcharinfo(0) )+"','',"+( ( .@timelimit )? ( .@timelimit + gettimetick(2) ) : 0 )+",NOW(),'0000-00-00 00:00:00' );" ); message strcharinfo(0),"Picked Mission # "+.@mission_id; @ms_list$[ @ms_size ] = ""+.@mission_id; @ms_title$[ @ms_size ] = ""+.@title$; @ms_size++; copyarray getd( "@ms_"+.@mission_id+"_list[0]" ),.@monster_list[0],.@monster_size; copyarray getd( "@ms_"+.@mission_id+"_qty[0]" ),.@monster_qty[0],.@monster_size; deletearray getd( "@ms_"+.@mission_id+"_hunt" ); if ( .@timelimit ) { setd( "@ms_"+.@mission_id+"_expire" ),( .@timelimit + gettimetick(2) ); addtimer ( .@timelimit * 1000 ),.npc_name$+"::OnTimeCheck"; } } } break; case 3: query_sql( "SELECT `id`,`title`,`min_lv`,`max_lv` FROM `mission_board` WHERE `npc_id` LIKE '%|"+.@mission_npc_num+"|%' AND `id` IN ( SELECT `mission_id` FROM `player_mission` WHERE `cid` = "+getcharid(0)+" AND `completion` = '0000-00-00 00:00:00' )",.@id,.@title$,.@min_lv,.@max_lv ); .@id_size = getarraysize( .@id ); for( .@i = 0; .@i < .@id_size; .@i++ ) .@mission_menu$ = .@mission_menu$ + "["+.@min_lv[.@i]+"~"+.@max_lv[.@i]+"] "+.@title$[.@i] +":"; mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Pick a Mission to remove."; next; .@i = select( .@mission_menu$ ) - 1; mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Confirm remove ^0055FFMission # "+.@id[.@i]+"^000000?"; mes "Title : ^0055FF"+.@title$[.@i]+"^000000"; mes "^777777( this cant be un-done )^000000"; if( select( "nope","Confirm" ) == 2 ){ message strcharinfo(0),"Dropped Mission # "+.@id[.@i]; query_sql( "DELETE FROM `player_mission` WHERE `mission_id` = "+.@id[.@i]+" AND `cid` = "+getcharid(0)+" AND `completion` = '0000-00-00 00:00:00'" ); setd( "@ms_"+.@id[.@i]+"_expire" ),0; deletearray getd( "@ms_"+.@id[.@i]+"_list" ); deletearray getd( "@ms_"+.@id[.@i]+"_qty" ); deletearray getd( "@ms_"+.@id[.@i]+"_hunt" ); for( .@ms = 0; .@ms < @ms_size; .@ms++ ) if( ""+.@id[.@i] == @ms_list$[.@ms] ){ deletearray @ms_list$[.@ms],1; deletearray @ms_title$[.@ms],1; @ms_size--; break; } } break; case 4: // get info from SQL. do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; deletearray .@id; query_sql( "SELECT `id`,`title`,`min_lv`,`max_lv` FROM `mission_board` WHERE `npc_id` LIKE '%|"+.@mission_npc_num+"|%' LIMIT "+.max_page_size+" OFFSET "+.@offset,.@id,.@title$,.@min_lv,.@max_lv ); .@offset += .max_page_size; .@size = getarraysize( .@id ); if( !.@size ){ mes "There are no available mission to update."; close; }else{ mes "Pick a mission."; .@mission_menu$ = ""; for( .@i = 0; .@i < .@size; .@i++ ) .@mission_menu$ = .@mission_menu$ + "["+.@min_lv[.@i]+"~"+.@max_lv[.@i]+"] "+.@title$[.@i] +":"; } next; .@i = select( .@mission_menu$+ ( ( .@size < .max_page_size )?"":"- next page" ) ) - 1; }while( .@i == .@size ); query_sql( "SELECT * FROM `mission_board` WHERE `id` = "+.@id[.@i], .@new_mission_id, .@title$, .@description$, .@mob_list$, .@mob_qty$, .@item_list$, .@item_qty$, .@base_job_bitmask, .@job_branch_bitmask, .@min_lv, .@max_lv, .@repeatable, .@timelimit, .@reward_list$, .@reward_qty$, .@baseexp, .@jobexp, .@zeny, .@cash, .@aid, .@name$, .@time_update$, .@npc_id$, .@redo_delay ); // explode all saved strings to array value. .@monster_size = callsub( OnExplodeArray,.@mob_list$,.@monster_list,0 ); .@monster_size = callsub( OnExplodeArray,.@mob_qty$,.@monster_qty,0 ); .@item_size = callsub( OnExplodeArray,.@item_list$,.@item_list,0 ); .@item_size = callsub( OnExplodeArray,.@item_qty$,.@item_qty,0 ); .@reward_size = callsub( OnExplodeArray,.@reward_list$,.@reward_list,0 ); .@reward_size = callsub( OnExplodeArray,.@reward_qty$,.@reward_qty,0 ); .@selected_npc_size = callsub( OnExplodeArray,.@npc_id$,.@selected_npc_array$,1 ); setarray .@level_range,.@min_lv,.@max_lv; case 5: do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; // display the information of mission callsub( OnDisplayMissionInfo, .@new_mission_id, .@title$, .@description$, .@level_range, .@repeatable, ( .@timelimit + gettimetick(2) ), .@monster_list, .@monster_qty, .@item_list, .@item_qty, .@base_job_bitmask, .@job_branch_bitmask, .@baseexp, .@jobexp, .@cash, .@zeny, .@reward_list, .@reward_qty, .@selected_npc_array$, .@time_update$, .@redo_delay, 0 ); // check if required info complete for setup mission .@incomplete = 0; if( .@title$ == "" ) .@incomplete |= 1; if( .@description$ == "" ) .@incomplete |= 2; if( !.@monster_size && !.@item_size ) .@incomplete |= 4; if( getarraysize( .@level_range ) != 2 || !.@base_job_bitmask || !.@job_branch_bitmask ) .@incomplete |= 8; if( !.@reward_size && !.@baseexp && !.@jobexp && !.@cash && !.@zeny ) .@incomplete |= 16; if( !.@selected_npc_size ) .@incomplete |= 32; .@main_option = select( "Edit Title "+(( .@incomplete & 1 )?"^FF0000-incomplete-^000000":"" ), "Edit Description "+(( .@incomplete & 2 )?"^FF0000-incomplete-^000000":"" ), "Edit Monster List "+(( .@incomplete & 4 )?"^FF0000-incomplete-^000000":( ( !.@monster_size )?"^777777-none-^000000":"" )), "Edit Item List "+(( .@incomplete & 4 )?"^FF0000-incomplete-^000000":( ( !.@item_size )?"^777777-none-^000000":"" )), "Edit Class/Level Limitation "+(( .@incomplete & 8 )?"^FF0000-incomplete-^000000":"" ), "Edit Time/Repeat/Mission Limitation ", "Edit Reward List "+(( .@incomplete & 16 )?"^FF0000-incomplete-^000000":"" ), "Edit NPC Limitation "+(( .@incomplete & 32 )?"^FF0000-incomplete-^000000":"" ), ( .@incomplete )?"":"^0055FF - Complete Setup Mission^000000" ); next; switch( .@main_option ){ case 1: mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Enter Title"; mes "^777777( Length: 4 ~ 30 )^000000"; while( input( .@title$,4,30 ) ); .@input_result = replacestr( .@title$,":"," " ); break; case 2: .@description$ = ""; do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Enter Description"; mes "^777777( Length: 4 ~ 255 )^000000"; mes " "; mes "^0055FF"+.@description$+"^000000"; .@length = getstrlen( .@description$ ); do{ .@input_result = input( .@temp_input$,4,255 ); if( .@input_result ) message strcharinfo(0),"Input length must between 4 ~ 255"; }while( .@input_result ); .@description$ = .@description$ + " "+ .@temp_input$; mes "^0055FF"+.@temp_input$+"^000000"; .@length = getstrlen( .@description$ ); next; }while( select( ( .@length >= 255 )?"":"add more ^777777( left "+( 255 - .@length )+" words )^000000","-back" ) == 1 ); .@description$ = replacestr( .@description$,":"," " ); break; case 3: if( .@new_mission_id ){ dispbottom "Editing monster list might caused unwanted behaviours of scripts. Which may included :"; dispbottom " > Script/Missions isnt working properly."; dispbottom " > Deletion of player mission's progress."; dispbottom " > etc."; dispbottom "Overall it's not suggested to edit monster list that you have set early."; dispbottom "( Recommend for Re-Adding mission, if needed )"; } do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Monster List:"; if( .@monster_size ){ .@mob_menu$ = ""; .@current_mob_list$ = "|"; deletearray .@current_mob$; for( .@i = 0; .@i < .@monster_size; .@i++ ){ .@mob_name$ = getmonsterinfo( .@monster_list[.@i],MOB_NAME ); .@mob_menu$ = .@mob_menu$ + .@monster_qty[.@i] +" x "+.@mob_name$ +":"; mes " ^777777 ~ "+.@monster_qty[.@i]+" x "+.@mob_name$+"^000000"; .@current_mob_list$ = .@current_mob_list$ + .@monster_list[.@i] +"|"; } }else{ mes " ^777777 ~ none ^000000"; } mes " "; .@option = select( ( .@monster_size >= .max_required_monster )?"":"Add Monster",( .@monster_size )?"Delete Monster":"","- Back" ); switch( .@option ){ case 1: mes "Enter Monster ID"; do{ input .@mob_id; if( !.@mob_id ) break; .@mob_name$ = getmonsterinfo( .@mob_id,MOB_NAME ); }while( .@mob_name$ == "null" ); if( .@mob_name$ != "null" && .@mob_id ){ mes "How many "+.@mob_name$+" need to hunt ?"; input .@amount,0,30000; if( .@amount ){ if( compare( "|"+.@current_mob_list$+"|","|"+.@mob_id+"|" ) ){ for( .@i = 0; .@i < .@monster_size; .@i++ ) if( .@monster_list[.@i] == .@mob_id ){ .@monster_qty[.@i] += .@amount; break; } }else{ .@monster_list[.@monster_size] = .@mob_id; .@monster_qty[.@monster_size] = .@amount; .@monster_size++; } } } break; case 2: mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Pick a Monster to Remove."; .@i = select( .@mob_menu$+"- Back" ) - 1; if( .@i < .@monster_size ){ deletearray .@monster_list[.@i],1; deletearray .@monster_qty[.@i],1; .@monster_size--; } default: break; } if( .@option < 3 ) next; }while( .@option < 3 ); break; case 4: do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Required Item List: "; if( .@item_size ){ .@item_menu$ = ""; .@current_item_list$ = "|"; deletearray .@current_item$; for( .@i = 0; .@i < .@item_size; .@i++ ){ .@item_name$ = getitemname( .@item_list[.@i] ); .@item_menu$ = .@item_menu$ + .@item_qty[.@i] +"x "+.@item_name$ +":"; mes " ^777777 ~ "+.@item_qty[.@i]+" x "+.@item_name$+"^000000"; .@current_item_list$ = .@current_item_list$ + .@item_list[.@i] + "|"; } }else{ mes " ^777777 ~ none ^000000"; } mes " "; .@option = select( ( .@item_size >= .max_required_item )?"":"Add Item",( .@item_size )?"Delete Item":"","- Back" ); switch( .@option ){ case 1: do{ input .@item_id; if( !.@item_id ) break; .@item_name$ = getitemname( .@item_id ); }while( .@item_name$ == "null" || .@item_name$ == "" ); if( .@item_id && .@item_name$ != "null" && .@item_name$ != "" ){ mes "How many "+.@item_name$+" need to collect ?"; input .@amount,0,30000; if( .@amount ){ if( compare( "|"+.@current_item_list$+"|","|"+.@item_id+"|" ) ){ for( .@i = 0; .@i < .@item_size; .@i++ ) if( .@item_list[.@i] == .@item_id ){ .@item_qty[.@i] += .@amount; break; } }else{ .@item_list[.@item_size] = .@item_id; .@item_qty[.@item_size] = .@amount; .@item_size++; } } } break; case 2: mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Pick an Item to Remove."; .@i = select( .@item_menu$+" - Back" ) - 1; if( .@i < .@item_size ){ mes "Removed "+.@item_qty[.@i]+" x "+getitemname( .@item_list[.@i] ); deletearray .@item_list[.@i],1; deletearray .@item_qty[.@i],1; .@item_size--; } default: break; } if( .@option < 3 ) next; }while( .@option < 3 ); break; case 5: // class limitation if( !.@base_job_bitmask ){ // enable all job by default. for( .@i = 0; .@i < .base_job_size; .@i++ ){ .@bitmask_value = ( 1 << .@i ); .@base_job_bitmask |= .@bitmask_value; } // enable all inherited classes by default. for( .@i = 0; .@i < .job_branch_size; .@i++ ){ .@bitmask_value = ( 1 << .@i ); .@job_branch_bitmask |= .@bitmask_value; } } do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Level Range : "+( ( .@level_range[1] )? "^777777"+.@level_range[0]+" ~ "+.@level_range[1]:"^FF0000-incomplete-" )+"^000000"; mes "Available Job Setting"; if( .@base_job_bitmask ){ for( .@i = 0; .@i < .base_job_size; .@i++ ) if( .@base_job_bitmask & ( 1 << .@i ) ) mes " ^777777 ~ "+jobname( roclass( .base_job[.@i] ) )+" ^000000"; }else{ mes " ^FF0000 -incomplete-^000000"; } mes " "; mes "Inherited Branch Setting"; if( .@job_branch_bitmask ){ for( .@i = 0; .@i < .job_branch_size; .@i++ ) if( .@job_branch_bitmask & ( 1 << .@i ) ) mes " ^777777 ~ "+.job_branch_name$[.@i]+" ^000000"; }else{ mes " ^FF0000 -incomplete-^000000"; } next; .@option = select( "Edit Base Job","Edit Job Branch","Edit Level Range","- Back" ); switch( .@option ){ case 1: dispbottom "[ Base Job Class ] RED = Disable , GREEN = Enable"; do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Available Job List:"; .@base_job_menu$ = ""; for( .@i = 0; .@i < .base_job_size; .@i++ ){ .@job_name$ = jobname( roclass( .base_job[.@i] ) ); if( .@base_job_bitmask & ( 1 << .@i ) ) mes " ^777777 ~ "+.@job_name$+" ^000000"; .@base_job_menu$ = .@base_job_menu$ + (( .@base_job_bitmask & ( 1 << .@i ) )?"^4EEE94":"^FF0000" ) + .@job_name$ +"^000000:"; } next; .@i = select( .@base_job_menu$+"- Back" ) - 1; if( .@i < .base_job_size ){ .@bitmask_value = ( 1 << .@i ); if( .@base_job_bitmask & .@bitmask_value ) .@base_job_bitmask -= .@bitmask_value; else .@base_job_bitmask |= .@bitmask_value; } }while( .@i < .base_job_size ); break; case 2: dispbottom "[ Inherited Job Branch ] RED = Disable , GREEN = Enable"; do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Inherited Job Branch List:"; .@job_branch_menu$ = ""; for( .@i = 0; .@i < .job_branch_size; .@i++ ){ if( .@job_branch_bitmask & ( 1 << .@i ) ) mes " ^777777 ~ "+.job_branch_name$[.@i]+" ^000000"; .@job_branch_menu$ = .@job_branch_menu$ + (( .@job_branch_bitmask & ( 1 << .@i ) )?"^4EEE94":"^FF0000" ) + .job_branch_name$[.@i] +"^000000:"; } next; .@i = select( .@job_branch_menu$+"- Back" ) - 1; if( .@i < .job_branch_size ){ .@bitmask_value = ( 1 << .@i ); if( .@job_branch_bitmask & .@bitmask_value ) .@job_branch_bitmask -= .@bitmask_value; else .@job_branch_bitmask |= .@bitmask_value; } }while( .@i < .job_branch_size ); break; case 3: mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Minimum Level"; input .@level_range[0],1,.server_max_level ; mes "Maximum Level"; input .@level_range[1],.@level_range[0],.server_max_level; default: break; } if( .@option < 4 ) next; }while( .@option < 4 ); break; case 6: // mission limitation do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Repeatable: ^777777"+( ( !.@repeatable )?"unlimit":""+.@repeatable )+" time^000000"; mes "Redo Delay: ^777777"+( ( !.@redo_delay )?"none":callsub( OnTime2Str,( ( .@redo_delay * 3600 ) + gettimetick(2) ) ))+"^000000"; mes "Time Limit: ^777777"+( ( !.@timelimit )?"none":callsub( OnTime2Str,( .@timelimit + gettimetick(2) ) ) )+"^000000"; .@option = select( "Edit Repeatable Status","Edit Time Limit","Edit Re-do Delay","Edit Required Mission","- Back" ); switch( .@option ){ case 1: mes "How many time can this mission repeat ??"; mes "^777777( 0 = unlimited )^000000"; input .@repeatable,0,100; break; case 2: mes "Time Limit of mission"; mes " 1 = 1 minute"; mes " 60 = 1 hour"; mes "1440 = 1 day"; input .@timelimit,0,50000; .@timelimit *= 60; break; case 3: mes "Time Delay to re-take the mission"; mes " 1 = 1 hour"; mes " 24 = 1 day"; mes " 720 = 30 day"; input .@redo_delay,0,50000; break; case 4: mes "This is not fully implemented yet.. still in beta test"; break; do{ mes "Required Mission:"; if( .@required_mission_size ){ for( .@i = 0; .@i < .@required_mission_size; .@i++ ){ mes " ^777777 ~ "+.@required_mission$[.@i]+"^000000"; .@required_mission_menu$ = .@required_mission_menu$ + .@required_mission$[.@i] +":"; } }else{ mes "^777777 none ^000000"; } next; .@sub_option = select( ( .@required_mission_size < .max_required_mission )?"Add required mission":"", ( .@required_mission_size )?"Remove required mission":"", "- Back"); switch( .@sub_option ){ case 1: mes "Enter mission ID"; mes "^777777( enter 0 to cancel )^000000"; do{ input .@mission_id$; if( .@mission_id$ == "0" ) break; }while( compare( "|"+.@required_mission_menu$+"|","|"+.@mission_id$+"|" ) ); .@mission_id$ = replacestr( .@mission_id$,":","" ); if( .@mission_id$ != "0" ){ .@required_mission$[.@required_mission_size] = .@mission_id$; .@required_mission_size++; } break; case 2: mes "Select a mission to remove."; .@i = select( .@required_mission_menu$ ) - 1; deletearray .@required_mission$[.@i],1; default: break; } }while( .@sub_option < 3 ); default: break; } if( .@option < 5 ) next; }while( .@option < 5 ); break; case 7: // reward list do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes " "; mes "Cash : ^777777"+( ( .@cash )? .@cash:"none" )+"^000000"; mes "Zeny : ^777777"+( ( .@zeny )? .@zeny:"none" )+"^000000"; mes "Reward Item List: "; if( .@reward_size ){ .@reward_menu$ = ""; deletearray .@current_reward$; for( .@i = 0; .@i < .@reward_size; .@i++ ){ .@reward_name$ = getitemname( .@reward_list[.@i] ); .@reward_menu$ = .@item_menu$ + .@reward_qty[.@i] +"x "+.@reward_name$ +":"; .@current_reward$[.@i] = .@reward_name$; mes " ^777777 ~ "+.@reward_qty[.@i]+" x "+.@reward_name$+"^000000"; } .@current_reward_list$ = implode( .@current_reward$,"|" ); }else{ mes " ^777777 ~ none ^000000"; } mes "Base EXP : ^777777"+( ( .@baseexp )? .@baseexp:"none" )+"^000000"; mes "Job EXP : ^777777"+( ( .@jobexp )? .@jobexp:"none" )+"^000000"; mes " "; next; .@option = select( ( .@reward_size >= .max_required_item )?"":"Add Item Reward", ( .@reward_size )?"Delete Item Reward":"", "Edit Cash Reward", "Edit Zeny Reward", "Edit Base EXP Reward", "Edit Job EXP Reward", "- Back" ); mes "^0055FF[ "+.@npc_name$+" ]^000000"; switch( .@option ){ case 1: mes "Enter Reward Item ID"; do{ input .@reward_id; if( !.@reward_id ) break; .@reward_name$ = getitemname( .@reward_id ); }while( .@reward_name$ == "null" || .@reward_name$ == "" ); if( .@reward_id && .@reward_name$ != "null" && .@reward_name$ != "" ){ mes "How many "+.@reward_name$+" will be rewarded ?"; input .@amount,0,30000; if( .@amount ){ if( compare( "|"+.@current_reward_list$+"|","|"+.@reward_name$+"|" ) ){ for( .@i = 0; .@i < .@reward_size; .@i++ ) if( .@reward_list[.@i] == .@item_id ){ .@reward_qty[.@i] += .@amount; break; } }else{ .@reward_list[.@reward_size] = .@reward_id; .@reward_qty[.@reward_size] = .@amount; .@reward_size++; } } } break; case 2: mes "Pick an Reward to Remove."; .@i = select( .@reward_menu$ ) - 1; mes "Removed "+.@reward_qty[.@i]+"x "+getitemname( .@reward_list[.@i] ); deletearray .@reward_list[.@i],1; deletearray .@reward_qty[.@i],1; .@reward_size--; break; case 3: mes "How many Cash will be given ?"; mes "^777777( value: 0 ~ "+.max_integer_value+" )^000000"; input .@cash,0,.max_integer_value; break; case 4: mes "How many Zeny will be given ?"; mes "^777777( value: 0 ~ "+.max_integer_value+" )^000000"; input .@zeny,0,.max_integer_value; break; case 5: mes "How many Base EXP reward ?"; mes "^777777( value: 0 ~ "+.max_integer_value+" )^000000"; input .@baseexp,0,.max_integer_value; break; case 6: mes "How many Job EXP reward ?"; mes "^777777( value: 0 ~ "+.max_integer_value+" )^000000"; input .@jobexp,0,.max_integer_value; default: break; } next; }while( .@option < 7 ); break; case 8: // npc limitation mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "By default, the mission will be available from each mission board npc ^FF0000unless you have specified which NPC may offer this mission.^000000"; mes " "; mes "Just pick all the NPC that may offer this mission if you wish."; next; if( !getarraysize( .@selected_npc_array$ ) ) for( .@i = 0; .@i < .mission_npc_count; .@i++ ){ .@selected_npc_array$[.@i] = ""+.@i; .@selected_npc_size++; } dispbottom "[ NPC Limitation ] RED = Disable , GREEN = Enable"; do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Mission offered by: "; .@selected_npc_menu$ = ""; if( .@selected_npc_size >= 2 ){ .@selected_npc$ = "|"+implode( .@selected_npc_array$,"|" )+"|"; }else{ .@selected_npc$ = "|"+.@selected_npc_array$+"|"; } for( .@i = 0; .@i < .mission_npc_count; .@i++ ){ getmapxy( .@map$,.@x,.@y,1,.npc_unique_list$[.@i] ); .@sub_npc_name$ = ( ( compare( "|"+.@selected_npc$+"|","|"+.@i+"|" ) )?"^44EE00":"^FF0000" ); .@sub_npc_name$ = .@sub_npc_name$ + .npc_name_list$[.@i]; mes "^777777("+.@map$+") "+.@sub_npc_name$; .@selected_npc_menu$ = .@selected_npc_menu$ + .@sub_npc_name$ +":"; } next; .@option = select( .@selected_npc_menu$+"^000000- Back" ) - 1; if( .@option < .mission_npc_count ){ if( compare( "|"+.@selected_npc$+"|","|"+.@option+"|" ) ) .@selected_npc_array$[.@option] = ""; else .@selected_npc_array$[.@option] = ""+.@option; .@selected_npc_size = getarraysize( .@selected_npc_array$ ); } // dispbottom "["+rand(10,99)+"] "+implode( .@selected_npc_array$,"|" ); }while( .@option < .mission_npc_count ); break; default: break; } next; }while( .@main_option < 9 ); // finalise all variable if( .@monster_size ){ .@final_mob_list$ = "|"; .@final_mob_qty$ = "|"; for( .@i = 0; .@i < .@monster_size; .@i++ ){ .@final_mob_list$ = .@final_mob_list$ + .@monster_list[.@i] +"|"; .@final_mob_qty$ = .@final_mob_qty$ + .@monster_qty[.@i] +"|"; } } if( .@item_size ){ .@final_item_list$ = "|"; .@final_item_qty$ = "|"; for( .@i = 0; .@i < .@item_size; .@i++ ){ .@final_item_list$ = .@final_item_list$ + .@item_list[.@i] +"|"; .@final_item_qty$ = .@final_item_qty$ + .@item_qty[.@i] +"|"; } } if( .@reward_size ){ .@final_reward_list$ = "|"; .@final_reward_qty$ = "|"; for( .@i = 0; .@i < .@reward_size; .@i++ ){ .@final_reward_list$ = .@final_reward_list$ + .@reward_list[.@i] +"|"; .@final_reward_qty$ = .@final_reward_qty$ + .@reward_qty[.@i] +"|"; } } if( .@selected_npc_size ){ .@final_npc_list$ = "|"; for( .@i = 0; .@i < .@selected_npc_size; .@i++ ) .@final_npc_list$ = .@final_npc_list$ + .@selected_npc_array$[.@i] +"|"; } if( !.@new_mission_id ){ .@new_mission_id = gettimetick(2); message strcharinfo(0),"Mission # "+.@new_mission_id+" has been added."; }else{ message strcharinfo(0),"Mission # "+.@new_mission_id+" has been updated."; // attach and inform other online players. callsub( OnRemoveMission,.@new_mission_id,"A GM updated Mission # "+.@new_mission_id ); } // add new mission into SQL query_sql( "REPLACE INTO `mission_board` VALUES ( " + .@new_mission_id+", " + "'"+escape_sql( .@title$ )+"', " + "'"+escape_sql( .@description$ )+"', " + "'"+escape_sql( .@final_mob_list$ )+"', " + "'"+escape_sql( .@final_mob_qty$ )+"', " + "'"+escape_sql( .@final_item_list$ )+"', " + "'"+escape_sql( .@final_item_qty$ )+"', " + .@base_job_bitmask+", " + .@job_branch_bitmask+", " + .@level_range[0]+", " + .@level_range[1]+", " + .@repeatable+", " + .@timelimit+", " + "'"+escape_sql( .@final_reward_list$ )+"', " + "'"+escape_sql( .@final_reward_qty$ )+"', " + .@baseexp+", " + .@jobexp+", " + .@zeny+", " + .@cash+", " + getcharid(3)+", " + "'"+escape_sql( strcharinfo(0) )+"', " + "NOW(), " + "'"+escape_sql( .@final_npc_list$ )+"', " + .@redo_delay + " ); " ); break; case 6: // delete mission do{ mes "^0055FF[ "+.@npc_name$+" ]^000000"; deletearray .@id; query_sql( "SELECT `id`,`title`,`min_lv`,`max_lv` FROM `mission_board` WHERE `npc_id` LIKE '%|"+.@mission_npc_num+"|%' LIMIT "+.max_page_size+" OFFSET "+.@offset,.@id,.@title$,.@min_lv,.@max_lv ); .@offset += .max_page_size; .@size = getarraysize( .@id ); if( !.@size ){ mes "There are no available mission to update."; close; }else{ mes "Pick a mission."; for( .@i = 0; .@i < .@size; .@i++ ) .@mission_menu$ = .@mission_menu$ + "["+.@min_lv[.@i]+"~"+.@max_lv[.@i]+"] "+.@title$[.@i] +":"; } next; .@i = select( .@mission_menu$+ ( ( .@size < .max_page_size )?"":"- next page" ) ) - 1; }while( .@i == .@size ); .@mission_id = .@id[.@i]; mes "^0055FF[ "+.@npc_name$+" ]^000000"; mes "Are you sure to remove this mission ?"; if( select( "nope","Delete Mission" ) == 2 ){ query_sql( "DELETE FROM `mission_board` WHERE `id` = "+.@mission_id+" LIMIT 1" ); mes "Removed mission from mission list."; // attach other online players and remove the missions. callsub( OnRemoveMission,.@mission_id,"A GM removed Mission # "+.@mission_id ); query_sql( "DELETE FROM `player_mission` WHERE `completion` = '0000-00-00 00:00:00' AND `mission_id` = "+.@mission_id ); mes "Removed mission from all players."; } default: break; } close; OnInit: initnpctimer "mission_board"; // initialize settings if( strnpcinfo(0) == "mission_board" ){ // gm level to access panel .gm_level = 90; // max no. of required monster .max_required_monster = 10; // max no. of required item .max_required_item = 10; // max no. of required mission ( un-implement yet ) .max_required_mission = 10; // max no. of available mission .max_mission_available = 50; // max value of integer input .max_integer_value = 2000000000; // max amount of mission per page .max_page_size = 30; // max mission per npc take by character .max_mission_per_char = 4; // predefined values. .npc_name$ = strnpcinfo(0); .server_max_level = MAX_LEVEL; setarray .base_job, EAJ_SWORDMAN, EAJ_MAGE, EAJ_ARCHER, EAJ_ACOLYTE, EAJ_MERCHANT, EAJ_THIEF, EAJ_TAEKWON, EAJ_GUNSLINGER, EAJ_NINJA; .base_job_size = getarraysize( .base_job ); setarray .job_branch_name$, "2-1 Classes", "2-2 Classes", "Rebirth Classes", "Baby Classes", "Third Classes"; setarray .job_branch, EAJL_2_1, EAJL_2_2, EAJL_UPPER, EAJL_BABY, EAJL_THIRD; .job_branch_size = getarraysize( .job_branch ); bindatcmd "mission", strnpcinfo(0)+"::OnCommand"; }else{ // delay the process .@num = atoi( strnpcinfo(2) ); if( .@num && .@num <= 500 && .mission_npc_count < 100 ){ sleep( .@num + 1 ); .npc_name_list$[ .mission_npc_count ] = strnpcinfo(1); .npc_unique_list$[ .mission_npc_count ] = strnpcinfo(0); // debugmes "["+.mission_npc_count+"]"+.npc_name_list$[ .mission_npc_count ]+"|"+.npc_unique_list$[ .mission_npc_count ]; .mission_npc_count++; end; }else if( !.@num ){ debugmes "[Removed] "+strnpcinfo(0)+", invalid <num:'"+strnpcinfo(2)+"'>"; }else if( .mission_npc_count >= 100 ){ debugmes "[Skipped] "+strnpcinfo(0)+", max: 100 Total NPC."; } disablenpc strnpcinfo(0); } end; // just used to display how many total Mission Board NPC. OnTimer1000: stopnpctimer; debugmes "[ Mission Board ] Total NPC Loaded : "+.mission_npc_count+" ..."; end; OnCommand: if ( !strcmp( strnpcinfo(0), .npc_name$ ) ) { if ( @ms_size ) { for ( .@i = 0; .@i < @ms_size; .@i++ ) { .@mob_size = getarraysize( getd( "@ms_"+ @ms_list$[.@i] +"_list" ) ); query_sql "select id, title, item_list, item_qty from mission_board where id = "+ @ms_list$[.@i], .@m_id, .@title$, .@item_id$, .@item_amount$; if ( .@mob_size ) { if ( getd( "@ms_"+ .@m_id +"_expire" ) ) dispbottom "[Mission '"+ .@title$ +"' Progress] Time limit -> "+ callfunc( "Time2Str", getd( "@ms_"+ .@m_id +"_expire" ) ); for ( .@j = 0; .@j < .@mob_size; .@j++ ) dispbottom "[Mission '"+ .@title$ +"' Progress] Hunted "+ getd( "@ms_"+ @ms_list$[.@i] +"_hunt["+ .@j +"]" ) +"/"+ getd( "@ms_"+ @ms_list$[.@i] +"_qty[" + .@j +"]" ) +" x "+ getmonsterinfo( getd( "@ms_"+ @ms_list$[.@i] +"_list["+ .@j +"]" ), MOB_NAME ); explode .@item_id_array$, .@item_id$, "|"; explode .@item_amount_array$, .@item_amount$, "|"; .@size = getarraysize( .@item_id_array$ ); for ( .@j = 1; .@j < .@size; .@j++ ) dispbottom "[Mission '"+ .@title$ +"' Progress] Collected "+ countitem( atoi( .@item_id_array$[.@j] ) ) +"/"+ .@item_amount_array$[.@j] +" x "+ getitemname( atoi( .@item_id_array$[.@j] ) ); } } } } end; OnPCLoginEvent: if( strnpcinfo(0) == .npc_name$ ){ .@timetick = gettimetick(2); .@nb = query_sql( "SELECT `mission_id`,`expire`,`mob_hunt` FROM `player_mission` WHERE `completion` = '0000-00-00 00:00:00' AND `cid` = "+getcharid(0),@ms_list$,.@expire,.@mob_hunt$ ); @ms_size = .@nb; if( @ms_size ){ for( .@i = 0; .@i < @ms_size; .@i++ ) { query_sql( "SELECT `title`,`mob_list`,`mob_qty` FROM `mission_board` WHERE `id` = "+@ms_list$[.@i],@ms_title$,.@mob_list$,.@mob_qty$ ); if ( .@expire[.@i] ) { .@timeleft = ( .@expire[.@i] - .@timetick ); addtimer ( .@timeleft * 1000 ),.npc_name$+"::OnTimeCheck"; dispbottom "[ Mission Progress : "+@ms_title$+" , expire in "+ callfunc( "Time2Str", .@timeleft + .@timetick )+" ]"; } else dispbottom "[ Mission Progress : "+@ms_title$ +" ]"; setd( "@ms_"+@ms_list$[.@i]+"_expire" ),.@expire[.@i]; if( callsub( OnExplodeArray,.@mob_list$,getd( "@ms_"+@ms_list$[.@i]+"_list" ),0 ) ){ callsub( OnExplodeArray,.@mob_hunt$[.@i],getd( "@ms_"+@ms_list$[.@i]+"_hunt" ),0 ); .@monster_size = callsub( OnExplodeArray,.@mob_qty$,getd( "@ms_"+@ms_list$[.@i]+"_qty" ),0 ); // for( .@mob = 0; .@mob < .@monster_size; .@mob++ ) // dispbottom " ~ killed "+getd( "@ms_"+@ms_list$[.@i]+"_hunt["+.@mob+"]" )+"/"+getd( "@ms_"+@ms_list$[.@i]+"_qty["+.@mob+"]" )+" x "+getmonsterinfo( getd( "@ms_"+@ms_list$[.@i]+"_list["+.@mob+"]" ),MOB_NAME ); } } } } end; OnPCLogoutEvent: if( strnpcinfo(0) == .npc_name$ ){ if( @ms_size ) for( .@ms = 0; .@ms < @ms_size; .@ms++ ){ debugmes "Saving "+@ms_list$[.@ms]; .@mob_size = getarraysize( getd( "@ms_"+@ms_list$[.@ms]+"_list" ) ); if( .@mob_size ){ copyarray .@temp_array[0],getd( "@ms_"+@ms_list$[.@ms]+"_list[0]" ),.@mob_size; .@mob_hunt$ = "|"; for( .@mob = 0; .@mob < .@mob_size; .@mob++ ) .@mob_hunt$ = .@mob_hunt$ + getd( "@ms_"+@ms_list$[.@ms]+"_hunt["+.@mob+"]" ) +"|"; query_sql( "UPDATE `player_mission` SET `mob_hunt` = '"+escape_sql( .@mob_hunt$ )+"' WHERE `mission_id` = "+@ms_list$[.@ms]+" AND `completion` = '0000-00-00 00:00:00' AND `cid` = "+getcharid(0) ); } } } end; OnNPCKillEvent: if( strnpcinfo(0) == .npc_name$ ){ if( @ms_size ){ .@map$ = strcharinfo(3); // by default mission wont work in PVP,GVG,Instance,Event maps if( compare( .@map$,"@" ) || getmapflag( .@map$,mf_gvg ) || getmapflag( .@map$,mf_pvp )){ // dispbottom "[Mission Board] PvP/GvG Map , Instance Map , Event Map , include monsters will not affect Mission Progress."; end; } .@timetick = gettimetick(2); for( .@ms = ( @ms_size - 1 ); .@ms >= 0; .@ms-- ){ if( getd( "@ms_"+@ms_list$[.@ms]+"_expire" ) && getd( "@ms_"+@ms_list$[.@ms]+"_expire" ) < .@timetick ){ setd( "@ms_"+@ms_list$[.@ms]+"_expire" ),0; deletearray getd( "@ms_"+@ms_list$[.@ms]+"_list" ); deletearray getd( "@ms_"+@ms_list$[.@ms]+"_qty" ); deletearray getd( "@ms_"+@ms_list$[.@ms]+"_hunt" ); dispbottom "[Mission # "+@ms_title$[.@ms]+"] Mission removed due to expired. "; deletearray @ms_list$[.@ms],1; @ms_size--; }else{ .@mob_size = getarraysize( getd( "@ms_"+@ms_list$[.@ms]+"_list" ) ); if( .@mob_size ){ copyarray .@temp_array[0],getd( "@ms_"+@ms_list$[.@ms]+"_list[0]" ),.@mob_size; for( .@mob = 0; .@mob < .@mob_size; .@mob++ ) if( .@temp_array[.@mob] == killedrid ){ .@value = getd( "@ms_"+@ms_list$[.@ms]+"_hunt["+.@mob+"]" ) + 1; setd( "@ms_"+@ms_list$[.@ms]+"_hunt["+.@mob+"]" ),.@value; // dispbottom "[Mission # "+@ms_title$[.@ms]+" Progress] Hunted "+.@value+" x "+getmonsterinfo( .@temp_array[.@mob],MOB_NAME ); break; } deletearray .@temp_array; } } } } } end; OnTimeCheck: if( @ms_size ){ .@timetick = gettimetick(2); for( .@i = ( @ms_size - 1 ); .@i >= 0; .@i-- ){ if( getd( "@ms_"+@ms_list$[.@i]+"_expire" ) <= .@timetick ){ setd( "@ms_"+@ms_list$[.@i]+"_expire" ),0; deletearray getd( "@ms_"+@ms_list$[.@i]+"_list" ); deletearray getd( "@ms_"+@ms_list$[.@i]+"_qty" ); deletearray getd( "@ms_"+@ms_list$[.@i]+"_hunt" ); dispbottom "[Mission # "+@ms_title$[.@i]+"] Mission removed due to expired. "; deletearray @ms_list$[.@i],1; deletearray @ms_title$[.@i],1; @ms_size--; } } } end; OnRemoveMission: .@mission_id = getarg(0); .@message$ = getarg(1); query_sql( "SELECT `aid`,`cid` FROM `player_mission` WHERE `cid` IN ( SELECT `char_id` FROM `char` WHERE `online` = 1 ) AND `mission_id` = "+.@mission_id+" AND `completion` = '0000-00-00 00:00:00' LIMIT 128",.@aid,.@cid ); .@aid_size = getarraysize( .@aid ); .@i = 0; .@origin_aid = getcharid(3); while( .@i < .@aid_size ){ if( isloggedin( .@aid[.@i],.@cid[.@i] ) ){ attachrid( .@aid[.@i] ); for( .@ms = @ms_size; .@ms >= 0; .@ms-- ) if( @ms_list$[.@ms] == ""+.@mission_id ){ message strcharinfo(0),.@message$; dispbottom "Please visit Mission NPC to gain latest information."; setd( "@ms_"+@ms_list$[.@ms]+"_expire" ),0; deletearray getd( "@ms_"+@ms_list$[.@ms]+"_list" ); deletearray getd( "@ms_"+@ms_list$[.@ms]+"_qty" ); deletearray getd( "@ms_"+@ms_list$[.@ms]+"_hunt" ); deletearray @ms_list$[.@ms],1; deletearray @ms_title$[.@ms],1; @ms_size--; break; } detachrid; .@count++; } .@i++; } attachrid( .@origin_aid ); dispbottom "Total "+.@count+" online players affected."; return; // usage : // .@timeleft = callsub( OnTime2Str,<time> ); OnTime2Str: .@time = getarg(0); .@left = ( .@time - gettimetick(2) ); .@hour = ( .@left / 3600 ); .@min = ( .@left % 3600 / 60 ); .@sec = ( .@left % 60 ); if( !.@left ) return "none"; else return "^777777"+( ( .@hour )? .@hour+" hr ":"" ) + ( ( .@hour || .@min )? .@min+" min ":"" ) +.@sec+" sec^000000"; // usage : // .@new_array_size = callsub( OnExplodeArray,<old string variable>,<new array variable>,<save '0'> ); OnExplodeArray: .@type = getarg(2); explode( getarg(0),getarg(0),"|" ); .@size = getarraysize( getarg(0) ); if ( !.@size ) return 0; while( .@i < .@size ){ if( !.@type ){ .@value = atoi( getelementofarray( getarg(0),.@i ) ); if( .@value ){ set getelementofarray( getarg(1),.@new_size ),.@value; .@new_size++; } }else{ set getelementofarray( getarg(1),.@new_size ),getelementofarray( getarg(0),.@i ); .@new_size++; } .@i++; } return .@new_size; // display mission information + optional progress checking OnDisplayMissionInfo: .@mission_id = getarg(0); .@title$ = getarg(1); .@description$ = getarg(2); .@repeatable = getarg(4); .@timelimit = getarg(5); .@monster_size = getarraysize( getarg(6) ); .@item_size = getarraysize( getarg(8) ); .@base_job_bitmask = getarg(10); .@job_branch_bitmask = getarg(11); .@baseexp = getarg(12); .@jobexp = getarg(13); .@cash = getarg(14); .@zeny = getarg(15); .@reward_size = getarraysize( getarg(16) ); .@selected_npc_size = getarraysize( getarg(18) ); .@time_update$ = getarg(19); .@redo_delay = getarg(20); .@check_progress = getarg(21); if( .@check_progress & 8 ) .@eac = eaclass(); // display mission info mes ""+(( .@mission_id )? "^FF0000Mission ID # "+.@mission_id:" " )+"^000000"; mes "Title : "+( ( .@title$ != "" )?"^777777"+.@title$:"^FF0000-incomplete-" )+"^000000"; mes "Description : "+( ( .@description$ != "" )?"^777777"+.@description$:"^FF0000-incomplete-" )+"^000000"; mes "Level Range : "+( ( getelementofarray( getarg(3),0 ) )? "^777777"+getelementofarray( getarg(3),0 )+" ~ "+getelementofarray( getarg(3),1 ):"^FF0000-incomplete-" )+"^000000"; if( .@check_progress & 1 ) if( BaseLevel >= getelementofarray( getarg(3),0 ) && BaseLevel <= getelementofarray( getarg(3),1 ) ) .@lv_progress = 1; mes "Repeatable: ^777777"+( ( !.@repeatable )?"unlimit":.@repeatable+" time" )+"^000000"; mes "Redo Delay: ^777777"+( ( !.@redo_delay )?"none":callsub( OnTime2Str,( ( .@redo_delay * 3600 ) + gettimetick(2) ) ) )+"^000000"; mes "Expire in: ^777777"+( ( !.@timelimit )?"none":callsub( OnTime2Str,.@timelimit ) )+"^000000"; mes " "; .@word$ = (( !.@monster_size && !.@item_size )?"^FF0000incomplete":"^777777none" ); mes "Monster List : "+( ( .@monster_size )?"":.@word$ )+"^000000"; if( .@monster_size ) for( .@i = 0; .@i < .@monster_size; .@i++ ){ .@mob_id = getelementofarray( getarg(6),.@i ); .@quantity = getelementofarray( getarg(7),.@i ); if( .@check_progress & 2 ){ .@killed_count = getd( "@ms_"+.@mission_id+"_hunt["+.@i+"]" ); if( .@killed_count >= .@quantity ){ .@monster_progress++; .@temp_color$ = "44EE99"; }else{ .@temp_color$ = "FF0000"; } } mes " ^777777"+.@quantity+" x "+getmonsterinfo( .@mob_id,MOB_NAME )+" "+( ( .@check_progress & 2 )?"^"+.@temp_color$+"(killed "+.@killed_count+")":"" )+"^000000"; } mes "Item List : "+( ( .@item_size )?"":.@word$ )+"^000000"; if( .@item_size ) for( .@i = 0; .@i < .@item_size; .@i++ ){ .@item_id = getelementofarray( getarg(8),.@i ); .@quantity = getelementofarray( getarg(9),.@i ); .@item_type = getiteminfo( .@item_id,2 ); if( .@check_progress & 4 ){ .@item_count = countitem( .@item_id ); if( .@item_count >= .@quantity ){ .@item_progress++; .@temp_color$ = "44EE99"; }else{ .@temp_color$ = "FF0000"; } } mes " ^777777"+.@quantity+" x "+getitemname( .@item_id )+" "+( ( .@item_type == 4 || .@item_type == 5 )?"["+getitemslots( .@item_id )+"]":"" )+" "+( ( .@check_progress & 4 )?"^"+.@temp_color$+"(have "+.@item_count+")":"" )+"^000000"; } mes " "; mes "Available Job Classes :"; if( .@base_job_bitmask ){ deletearray .@available_job$; deletearray .@available_branch$; .@available_job_size = 0; .@available_branch_size = 0; for( .@i = 0; .@i < .base_job_size; .@i++ ) if( .@base_job_bitmask & ( 1 << .@i ) ){ .@class = roclass( .base_job[.@i] ); .@available_job$[.@available_job_size] = jobname( .@class ); if( .@check_progress & 8 && BaseClass == .@class ) .@class_progress = 1; .@available_job_size++; } mes " ^777777"+implode( .@available_job$,"," )+" ^000000"; if( .@job_branch_bitmask && .@class_progress ){ for( .@i = 0; .@i < .job_branch_size; .@i++ ) if( .@job_branch_bitmask & ( 1 << .@i ) ){ if( .@check_progress & 8 && ( .@eac & .job_branch[.@i] ) ) .@branch_progress++; .@available_branch$[.@available_branch_size] = .job_branch_name$[.@i]; .@available_branch_size++; } mes "Inherited: ^777777"+implode( .@available_branch$,", " )+" ^000000"; } }else{ mes " ^FF0000-incomplete^000000"; } mes " "; mes "Reward List : "; mes "^777777 ~ Base EXP: "+( ( .@baseexp )? .@baseexp:"none" )+"^000000"; mes "^777777 ~ Job EXP: "+( ( .@jobexp )? .@jobexp:"none" )+"^000000"; mes "^777777 ~ Cash: "+( ( .@cash )? .@cash:"none" )+"^000000"; mes "^777777 ~ Zeny: "+( ( .@zeny )? .@zeny:"none" )+"^000000"; mes "Reward Item List: "+( ( .@reward_size )?"":"^777777none" )+"^000000"; if( .@reward_size ) for( .@i = 0; .@i < .@reward_size; .@i++ ){ .@item_id = getelementofarray( getarg(16),.@i ); .@item_type = getiteminfo( .@item_id,2 ); mes " ^777777 ~ "+getelementofarray( getarg(17),.@i )+" x "+getitemname( .@item_id )+" "+( ( .@item_type == 4 || .@item_type == 5 )?"["+getitemslots( .@item_id )+"]":"" )+"^000000"; } mes " "; mes "Mission Offered by: "+( ( .@selected_npc_size )?"":"^FF0000-incomplete" )+"^000000"; if( .@selected_npc_size ){ if( .@selected_npc_size >= 2 ) .@selected_npc$ = "|"+implode( getarg(18),"|" )+"|"; else .@selected_npc$ = "|"+getarg(18)+"|"; for( .@i = 0; .@i < .mission_npc_count; .@i++ ) if( ( compare( "|"+.@selected_npc$+"|","|"+.@i+"|" ) ) ){ getmapxy( .@map$,.@x,.@y,1,.npc_unique_list$[.@i] ); .@sub_npc_name$ = "^777777("+.@map$+") "; .@sub_npc_name$ = .@sub_npc_name$ + .npc_name_list$[.@i] + "^000000"; mes " ~ "+.@sub_npc_name$; } mes " "; } if( .@time_update$ != "0000-00-00 00:00:00" && .@time_update$ != "" ){ mes "Last Mission Update:"; mes "^777777"+.@time_update$+"^000000"; } if( .@check_progress ){ if( .@check_progress & 1 && !.@lv_progress ){ dispbottom "[Failed] Your level didnt meet the requirements."; .@check_result |= 1; } if( .@check_progress & 2 && .@monster_size != .@monster_progress ){ dispbottom "[Failed] Your Monsters Hunt didnt meet the requirements."; .@check_result |= 2; } if( .@check_progress & 4 && .@item_size != .@item_progress ){ dispbottom "[Failed] Your Items collecting didnt meet the requirements."; .@check_result |= 4; } if( .@check_progress & 8 && ( !.@branch_progress && !.@class_progress ) ){ dispbottom "[Failed] Your Class didnt meet the requirements."; .@check_result |= 8; } } return .@check_result; } // the number behind the NPC name must be NUMBER with range of ( 1 ~ 500 ) // the number should stay the same for eternity, if you change it frequently, it might affect your missions for each NPC. // ( to conclude, once you assigned the number, dont change it for the sake of your mission board ... ) prontera,147,166,6 duplicate(mission_board) Hard Mission#1 837 //prontera,154,174,4 duplicate(mission_board) Mission B#2 837 //prontera,156,176,4 duplicate(mission_board) Mission C#3 837 //prontera,159,179,4 duplicate(mission_board) Mission D#4 837 //prontera,151,161,4 duplicate(mission_board) Mission E#5 837 //prontera,154,164,4 duplicate(mission_board) Mission F#6 837 //prontera,156,166,4 duplicate(mission_board) Mission G#7 837 //prontera,159,169,4 duplicate(mission_board) Mission H#8 837 and found this script somewhere here i tried it and after i created the mission it shows that no mission available **RESOLVE** Tnx for some guides here i found out how to fix Emistry sql quest board but i dunno how to fix euphys quest boad T_T bump TY in advance
-
is this working fine??
-
thnx a lot for some help
-
- script ItemGiver 1,{ OnPCLoginEvent: if(!#givenStartItems) { set #givenStartItems, 1; //=== Freebies getitem <item_id>, <quantity>; } end; } thnx in advance
-
i changed it still nothing changed
-
any variables??
-
// _______ __ ____ ____ __ __ ____ __ __ __ __ __ __ __ ____ _ ____ // /__ __/ / / / __ \ / __ \ / / / / /__ \ / / /_/ __/ /_ / // / / /__/ / /__ \ / /__ / __ \ _____ // / / / /_ / /_/ / / / / / / / / / ____/ / / / __ /_ __// // / / _ _ / ____/ / / // / / /_/ / / __ \ // / / / __ \ / ____/ / / / / / / / / / __ / / / / / / / \_ / / // /// / __ / / __/ / ____/ / / /_/ // / / / / / / / /__ / /_/ /_ / /_/ / / /_/ / / / / / / / __/ / / // /// / /_/ / / _ \ / /__ / / ///_/ /_/ /_/ \____/ \_______/ \____/ \____/ /_/ /_/ /_/ \__/ /_//_/// \____/ /_/ \_\ \____/ /_/ //============================================================================= // // Gold Room Advance Script - Mining Gold for wealth - Please Leave Credit \\ //============================================================================= //POWERED by: rudolp //[The Quality Maker] //Time Finished :6:28 PM 6/7/2009 //Please Report any bug and suggestions. //===== Compatible With: ================================================================= //= Any eAthena Version //=============Gold Room Settings=================== //This should always be enable for a better Gold Room System. //================================================== //ordeal_1-2 mapflag noskill ordeal_1-2 mapflag nomemo ordeal_1-2 mapflag nobranch ordeal_1-2 mapflag noloot ordeal_1-2 mapflag noexp ordeal_1-2 mapflag nodrop ordeal_1-2 mapflag novending ordeal_1-2 mapflag nowarpto //ordeal_1-2 mapflag noreturn //================================================= ordeal_1-2,0,0,0 script Gold Room -1,{ OnInit: //No. of Mine Guardian. //For golden peko it is default to 100 and 4 seconds~2 seconds spawn rate. set .guardian,100; //Type of guardian. 0 = normal 1 = extreme set .@guardiantype,1; if(.@guardiantype == 0){ monster "ordeal_1-2",0,0,"Guard Pacific",1369,.guardian,""; }else{ monster "ordeal_1-2",0,0,"Guard Pacific",1369,.guardian,""; } end; OnNPCKillEvent: //===== Configurations: ======================================================================== //Max gold can a player get after killing 1 golden peko (default 5 note:this will increase if luk bonus is enable). set .@maxgaingold,5; //Apply gold penalty. 0 = no 1 = yes set .@penalty1,0; //The Maximum no. of gold Penalty. set .@maxpenalty1,0; //Apply speed & HP penalty. 0 = no 1 = yes set .@penalty2,1; //Gold limitation penalty must be enable set .@maxgold,2000; //The maximum no. of hp penalty by %. set .@maxpenalty2,90; //Enable luk bonus. 0=no 1=yes set .@lukbonus,0; //If luk Bonus is enable,luk divider default 49 w/ 99 max parameter. Note: the quotient of your max parameter and .@lukdiv must not grater than 5 to avoid over mining. set .@lukdiv,49; //Show Server Name. 0=no 1=yes set .@showservername,1; //Name of your Server set .@servername$,"[DreamWorks Ragnarok Online]"; //========================================================================================= if (getmapxy(@mapname$,@mapx,@mapy,0) == -1) goto L_Finish; if (@mapname$ == "ordeal_1-2"){ set @bonus,0; set @deduction,0; set @gain,rand (.@maxgaingold); //Luk bonus if (.@lukbonus != 0){ set @bonus,readparam(bLuk)/.@lukdiv; } //Gold Penalty if (.@penalty1 != 0){ set @deduction,rand(.@maxpenalty1); if(@deduction == 0) set @deduction,1; } set @gain, @gain + @bonus - @deduction; set gold, gold + @gain ; //Displaying Gained Gold if(.@showservername != 0){ if(gold%5 == 0){ //Show Server Name every 10 gold gain. dispbottom "===============Brought to you by==============="; dispbottom "==============" + .@servername$ +"=============="; } } if(@gain){ dispbottom "-|You got: " +@gain+ " gold| - |Total: " +gold+ " gold|- "; }else{ dispbottom "-|You got: NOTHING! |- "; } if (.@penalty2 != 0){ if (gold >= .@maxgold/2 && gold <=.@maxgold/2+20){ sc_start SC_DECREASEAGI,240000,10; }else if(gold >.@maxgold){ percentheal (.@maxpenalty2*-1),(.@maxpenalty2*-1); heal 0,0; //For him to die } } if(paid == 0){ mapannounce "ordeal_1-2"," x( "+strcharinfo(0)+" is a cheater!",bc_map; dispbottom "Go out you bastard!"; set gold,0; warp "prontera", 173, 160; } end; } OnPCDieEvent: if (getmapxy(@mapname$,@mapx,@mapy,0) == -1) goto L_Finish; if (@mapname$ == "ordeal_1-2"){ dispbottom "Holy Shit you died!"; dispbottom "All of your gold will gone!"; set alive, 0; set paid, 0; end; } L_Finish: end; } //=============================================== //warper //=============================================== ordeal_1-2,154,156,5 script Gold Miner 813,{ mes "[Gold Miner]"; if(gold >=50){ goto wa; } mes "Want to go now?"; mes "Your gold is just "+gold+" you can still get more."; end; wa: mes "Want to go now?"; if(select("Yes", "No") == 1) { set alive,1; warp "prontera", 156, 188; } end; } prontera,164,157,3 script Gold Room#pront 907,{ set @name$,"prontera"; callfunc "goldmain"; } aldebaran,133,116,4 script Gold Room Warperer#alde 813,{ set @name$,"aldebaran"; callfunc "goldmain"; end; } alberta,23,247,4 script Gold Room Warperer#alb 813,{ set @name$,"alberta"; callfunc "goldmain"; end; } payon,151,182,4 script Gold Room Warperer#pay 813,{ set @name$,"payon"; callfunc "goldmain"; end; } geffen,115,74,4 script Gold Room Warperer#gef 813,{ set @name$,"geffen"; callfunc "goldmain"; end; } function script goldmain { if (getgmlevel() >= 90){ mes "[Gold Room Warperer]"; if(sex != 0){ mes "Hello Sir what can I do for you?"; }else{ mes "Hello Maam what can I do for you?"; } next; menu "Enter Mining Site",start,"Please end the mine Site. Now!",-,"Please Open the mine Site. Now!",G_open,"Nothing",C_s; next; mes "[Gold Room Warperer]"; mapannounce "ordeal_1-2","Excuse me Miners.",bc_map; mes "Ok."; next; mapannounce "ordeal_1-2",strcharinfo(0) +" wants to end the Gold Room for a while",bc_map; mes "Just a second I will just ask them to"; mes "go out in the mining site"; next; mapannounce "ordeal_1-2","Please settle your things and move quitely",bc_map; mes "[Gold Room Warperer]"; mes "............."; mes "........"; next; mes "[Gold Room Warperer]"; mes "Ok your done"; set .opengoldroom,1; areawarp "ordeal_1-2",21,286,286,22,"prontera", 156, 105; OnInit: waitingroom "Hunting Gold Room",0; end; } if(.opengoldroom == 0){ goto start; }else{ mes "[Gold Room Warperer]"; mes "Sorry!"; mes "The Mining Site is endd."; end; } G_open: mes "[Gold Room Warperer]"; mes "Ok."; mes "Mining Site is Already Available."; announce " Gold Room is open for public!",bc_map; set .opengoldroom,0; end; start: if ( alive == 0){ set gold,0; } mes "[Gold Room Warperer]"; mes "What do you want?"; next; menu "To the Gold Room",-,"Exchange Gold",exchange,"Nothing",C_s; mes "[Gold Room Warperer]"; mes "Hmm.."; mes "It cost 100,000z"; mes "Would you like to go now to the gold room?"; if(select("Yes", "No") == 1) { if(@name$ == "prontera") savepoint "prontera", 173, 160; if(@name$ == "aldebaran") savepoint "aldebaran",166, 163; if(@name$ == "alberta") savepoint "alberta",16, 246; if(@name$ == "payon") savepoint "payon",160, 179; if(@name$ == "geffen") savepoint "geffen",124, 85; if (Zeny < 100000) goto nomoney; set Zeny, Zeny - 100000; set alive, 1; set paid, 1; warp "ordeal_1-2", 156, 155; } end; nomoney: mes "[Gold Room Warperer]"; mes "Sorry insufficient balance"; end; exchange: mes "[Gold Room Warperer]"; mes "Hmm...let me see"; mes "You have " +gold+ "."; if (gold == 0) goto nogold; mes "Ok get this."; next; if (checkweight(969,gold) == 0) goto L_OverWeight; getitem 969, gold; set gold, 0; emotion e_gg; end; L_OverWeight: mes "[Gold Room Warperer]"; mes "Sorry your overweight"; end; nogold: end; C_s: end; } //============================================================ //=========================================================== //======================================== //warps you may edit this one for your convenience //======================================== ordeal_1-2,73,265,0 warp ord500 1,1,prontera,156,188 ordeal_1-2,129,194,0 warp ord501 1,1,prontera,156,188 ordeal_1-2,130,194,0 warp ord502 1,1,prontera,156,188 ordeal_1-2,178,193,0 warp ord503 1,1,prontera,156,188 ordeal_1-2,290,130,0 warp ord504 1,1,prontera,156,188 ordeal_1-2,241,281,0 warp ord505 1,1,prontera,156,188 ordeal_1-2,66,25,0 warp ord506 1,1,prontera,156,188 ordeal_1-2,202,129,0 warp ord509 1,1,prontera,156,188 ordeal_1-2,105,154,0 warp ord510 1,1,prontera,156,188 //============Spawns================= ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,0,0,0 ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,0,0,0 ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,0,0,0 ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,0,0,0 //ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,0,0,0 //ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,0,0,0 //ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,40000,20000,0 //ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,40000,20000,0 //ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,40000,20000,0 //ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,40000,20000,0 //ordeal_1-2,0,0,0,0 monster Golden Pecopeco 1369,1,40000,20000,0 even though i adjusted the amount of mobs in the gold room still have plenty of golden peco inside dunno whats wrong T_T
-
like when you double click the item it will automatically warp/teleport your character to the specific map or area thnx in advance
-
ayo_in02,100,169,4 script Sigmund 806,{ set @np$,"[ ^808080Sigmund^000000 ]"; setarray .SReq[0],714,5,7018,5,1053,10,7297,10,710,50,984,5,985,5,968,5,989,1,1008,30,1007,30,969,25,7017,50,7023,50,949,1000,1000,5,7069,500,1059,1250,1019,150,983,5,975,5,978,5,982,5,7446,10,7445,10,7447,10,7448,10,7436,5,7437,5,7438,5,7439,5; setarray .Max[0],255,120,255; setarray .@i[0],countitem(7420); if(Hero_01==1) { mes @np$; mes "Greeting..Have you spoken with ^808080Blacksmith Regin^000000 at the ^0000A0Blacksmith Guild^000000 in ^0000FFEinbroch^000000 for your equipment?"; close; } if (BaseLevel < .Max[0]) { mes @np$; mes "You must be level " + .Max[0] + " to use this feature."; close; } if ((JobLevel < .Max[1]) || (Class == 23 && JobLevel < .Max[2])) { mes @np$; mes "You must master your class before using this feature."; close; } if(countitem(18049) < 1) goto N_noscale; if(countitem(7420) > 50) goto N_req; mes @np$; mes "You have not acquired ^0000FF100^000000 human"; mes "^FF0000Skull^000000. I can convert the"; mes "^FF0000Skull^000000 you have collected so they are stackable."; menu "-View Requirements",-,"-Convert ^FF0000Skull^000000",N_skull,"-More Info",N_info; next; mes @np$; mes "First, you are to defeat ^0000FFLord "; mes "Draconus^000000 and bring me ^FF0000Draconu's Scale^000000"; next; mes @np$; mes "^6698FFLord Draconus^000000 can be found in the"; mes "deep caves of the ^808080Magma Dungeon.^000000"; mes "Beware, for he is the King of"; mes "dragons. "; next; mes @np$; mes "He shall bear no mercy upon your"; mes "challenge."; next; mes @np$; mes "Second, you are to bring to me the"; mes "^FF0000Skull^000000 of ^0000FF100^000000 people. Control your"; mes "emotions, and bear your fists."; next; mes @np$; mes "Third, you are to gather material"; mes "that shall later construct some"; mes "equipment which you can use to"; mes "your liking. "; next; mes @np$; if (getarraysize(.SReq)) { mes "Gather the following list of"; mes "items:"; mes " "; set .@i,0; while (.@i < getarraysize(.SReq)) { mes " - ^FFA000"+getitemname(.SReq[.@i])+"^000000 ^808080"+.SReq[.@i+1]+"^000000^808080x^000000"; set .@i, .@i+2; } next; mes @np$; mes "I shall give you further"; mes "instructions upon your return with"; mes "these tasks completed."; next; mes @np$; mes "Best of luck and godspeed."; close; N_noItems: mes @np$; mes "dont have req"; close; N_skull: next; mes @np$; mes "I shall now convert the ^FF0000Skull^000000."; next; mes @np$; mes "I have converted "+countitem(7420)+" skull Speak"; mes "with me should you require further"; mes "assistance."; delitem 7420,.@i; getitem 7420,.@i; close; N_info: next; mes @np$; mes "You are about embark on the"; mes "^808080Trials of Glory^000000, several"; mes "extremely difficult quests that you"; mes "are required to complete in order"; mes "to become a ^0000FFHero.^000000 "; next; mes @np$; mes "As a ^0000FFHero^000000, you will be granted the"; mes "following privileges:"; mes " -Ability to equip ^808080Glorified Armor.^000000"; mes " -Access to difficult ^808080quests^000000, and ^808080god equipment.^000000"; mes "^0000FF500^000000 ^808080Stats Points^000000 and ^0000FF60^000000 ^808080skill Points^000000 boost."; mes " -Additional ^808080Weapon^000000 and ^808080Armor^000000 bonuses."; next; mes @np$; mes "However, to become a hero, you must"; mes "give up your Base and Job levels."; mes "In other words, you will be reborn"; mes "as a ^808080Lv 1/1^000000 ^0000FFplayer job^000000 after"; mes "you`ve completed the quest. "; close; N_noscale: mes @np$; mes "You have not yet acquired"; mes "^FF0000Draconu's Scale^000000! Here are"; mes "the trials you must complete.."; next; menu "-View Requirements",-,"-More Info",N_info; next; mes @np$; mes "First, you are to defeat ^6698FFLord "; mes "Draconus^000000 and bring me ^FF0000Draconu's Scale.^000000"; next; mes @np$; mes "^6698FFLord Draconus^000000 can be found in the"; mes "deep caves of the ^808080Magma Dungeon.^000000"; mes "Beware, for he is the King of"; mes "dragons. "; next; mes @np$; mes "He shall bear no mercy upon your"; mes "challenge."; next; mes @np$; mes "Second, you are to bring to me the"; mes "^FF0000Skull^000000 of ^0000FF100^000000 people. Control your"; mes "emotions, and bear your fists."; next; mes @np$; mes "Third, you are to gather material"; mes "that shall later construct some"; mes "equipment which you can use to"; mes "your liking. "; next; mes @np$; if (getarraysize(.SReq)) { mes "Gather the following list of"; mes "items:"; mes " "; set .@i,0; while (.@i < getarraysize(.SReq)) { mes " - ^FFA000"+getitemname(.SReq[.@i])+"^000000 ^808080"+.SReq[.@i+1]+"^000000^808080x^000000"; set .@i, .@i+2; } next; mes @np$; mes "I shall give you further"; mes "instructions upon your return with"; mes "these tasks completed."; next; mes @np$; mes "Best of luck and godspeed."; close; N_req: set .@i,0; if (.@i < getarraysize(.SReq)) { if (countitem(.SReq[.@i]) < .SReq[.@i+1]) { mes @np$; mes "Have you completed the task? You are missing items for the third trial! Here are the trials you must complete."; next; menu "-View Requirements",-,"-More Info",N_info; next; mes @np$; mes "First, you are to defeat ^0000FFLord "; mes "Draconus^000000 and bring me ^FF0000Draconu's Scale^000000"; next; mes @np$; mes "^6698FFLord Draconus^000000 can be found in the"; mes "deep caves of the ^808080Magma Dungeon^000000"; mes "Beware, for he is the King of"; mes "dragons. "; next; mes @np$; mes "He shall bear no mercy upon your"; mes "challenge."; next; mes @np$; mes "Second, you are to bring to me the"; mes "^FF0000Skull^000000 of ^0000FF100^000000 people. Control your"; mes "emotions, and bear your fists."; next; mes @np$; mes "Third, you are to gather material"; mes "that shall later construct some"; mes "equipment which you can use to"; mes "your liking. "; next; mes @np$; if (getarraysize(.SReq)) { mes "Gather the following list of"; mes "items:"; mes " "; set .@i,0; while (.@i < getarraysize(.SReq)) { mes " - ^FFA000"+getitemname(.SReq[.@i])+"^000000 ^808080"+.SReq[.@i+1]+"^000000^808080x^000000"; set .@i, .@i+2; } next; mes @np$; mes "I shall give you further"; mes "instructions upon your return with"; mes "these tasks completed."; next; mes @np$; mes "Best of luck and godspeed."; close; }}}} set .@i, .@i+2;} mes @np$; mes "Excellent. Congratulations, warrior! You have completed the trials and acquired the items that I have asked of you"; next; mes @np$; mes "You have redeemed yourself, by confronting and surpassing such difficult tasks."; next; mes @np$; mes "You have grown, I must say.. Indeed. Well then, let us begin.."; next; mes @np$; mes "You will feel a little weak following the initiation.. bare with it.."; close2; function Option { mes "^0055ff > "+getarg(0); sleep2 200; mes "^777777 > "+getarg(1)+"."; mes " "; sleep2 200; mes "^0055ff > "+getarg(3); sleep2 200; mes "^777777 > "+getarg(4)+".^000000"; set @menu$,"^0055ff"+getarg(0)+":"+getarg(3)+":^777777Cancel^000000"; sleep2 1000; next; switch(select(@menu$)) { case 1: set @sring,getarg(2); set @sclass$,getarg(0); goto SConfirm; case 2: set @sring,getarg(5); set @sclass$,getarg(3); goto SConfirm; case 3: goto Closing; } } SConfirm: progressbar "",5; specialeffect2 248; if (getarraysize(.SReq)) { set .@i,0; while (.@i < getarraysize(.SReq)) { // delitem .SReq[.@i], .SReq[.@i+1]; set .@i, .@i+2; } } set BaseLevel,1; set JobLevel,1; ResetStatus; ResetSkill; set StatusPoint,2500; sleep2 200; set SkillPoint,108 ; sleep2 200; getitem 18061, 1; delitem 18049, 1; delitem 7420, 100; //getitem 7951, 1; set Hero_01,1; set Draconus_01,0; emotion 46; close; } it goes like this even though my character has the draconus scale and emperium which are not the complete material for the quest still proceeds to it usually as you can see on the script it needs several items or materials to complete the quest i dunno whats the problem with this can anyone help me thnx in advance
-
-
everytime i do @reloaditemdb server hanged and as ive check the server on putty nothing loads the usual when you do @reloaditemdb what seems to be the issue here?
-
CC atcommand.c atcommand.c: In function ‘atcommand_jumpto’: atcommand.c:568: warning: suggest parentheses around ‘&&’ within ‘||’ atcommand.c: In function ‘atcommand_iteminfo’: atcommand.c:7758: error: ‘struct item_data’ has no member named ‘ancient’ atcommand.c: In function ‘atcommand_whodrops’: atcommand.c:7827: error: ‘struct <anonymous>’ has no member named ‘bchance’ atcommand.c: In function ‘atcommand_mobevent’: atcommand.c:8515: warning: unused variable ‘y’ atcommand.c:8515: warning: unused variable ‘x’ make[1]: *** [obj/atcommand.o] Error 1 make[1]: Leaving directory `/root/rAmod/src/map' make: *** [map] Error 2 idunno what seems to be the problem
-
-
we are actually having a hard time doing that thing T_T we did the patch but still not working hahaha
-
ahhmm is there any EVS for rAmod??? thnx in advance
-
ahmm should i put this to battle/features.conf?? // Extended Vending System [Lilith] // Enable or disable extended vending system? (Note 1) extended_vending: yes // Show currency's name in vending board? (Note 1) show_item_vending: yes // Show more info about buying? (Note 1) ex_vending_info: yes // Item ID for Zeny. Set to 0 if you don't want use Zeny. item_zeny: 30000 // Item ID for Cash. Set to 0 if you don't want use Cash. item_cash: 30001 bump is this working on rAmod???
-
im actually adding some few stuffs to my server like new items descriptions etc and i dunno how to do the patching thing so the item will no longer look like apple to my players can u help me with this i pretty newb with this thanks in advance
-
patulong naman po pano po mag update or mag patch gumawa po kc ako ng few items and descriptions hindi ko po alam pano mag patch thanks po in advance