Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- CREATE TABLE IF NOT EXISTS `QuestList` (
- `Quest_ID` int(10) unsigned NOT NULL auto_increment,
- `Quest_Name` text,
- `Quest_Desc` text,
- `Min_Lv` smallint(11) unsigned NOT NULL default '0',
- `Max_Lv` smallint(11) unsigned NOT NULL default '0',
- `Type` smallint(11) unsigned NOT NULL default '0',
- `Time` bigint(20) unsigned NOT NULL default '0',
- `Tar1_ID` int(10) unsigned NOT NULL default '0',
- `Tar1_Qty` int(10) unsigned NOT NULL default '0',
- `Tar2_ID` int(10) unsigned NOT NULL default '0',
- `Tar2_Qty` int(10) unsigned NOT NULL default '0',
- `Tar3_ID` int(10) unsigned NOT NULL default '0',
- `Tar3_Qty` int(10) unsigned NOT NULL default '0',
- `Tar4_ID` int(10) unsigned NOT NULL default '0',
- `Tar4_Qty` int(10) unsigned NOT NULL default '0',
- `Tar5_ID` int(10) unsigned NOT NULL,
- `Tar5_Qty` int(10) unsigned NOT NULL default '0',
- `Item1_ID` int(10) unsigned NOT NULL default '0',
- `Item1_Qty` int(10) unsigned NOT NULL default '0',
- `Item2_ID` int(10) unsigned NOT NULL default '0',
- `Item2_Qty` int(10) unsigned NOT NULL default '0',
- `Item3_ID` int(10) unsigned NOT NULL default '0',
- `Item3_Qty` int(10) unsigned NOT NULL default '0',
- `Item4_ID` int(10) unsigned NOT NULL default '0',
- `Item4_Qty` int(10) unsigned NOT NULL default '0',
- `Item5_ID` int(10) unsigned NOT NULL,
- `Item5_Qty` int(10) unsigned NOT NULL default '0',
- `Prz1_Name` int(10) unsigned NOT NULL,
- `Prz1_Qty` int(10) unsigned NOT NULL default '0',
- `Prz2_Name` int(10) unsigned NOT NULL,
- `Prz2_Qty` int(10) unsigned NOT NULL default '0',
- `Prz3_Name` int(10) unsigned NOT NULL,
- `Prz3_Qty` int(10) unsigned NOT NULL default '0',
- `Prz4_Name` int(10) unsigned NOT NULL,
- `Prz4_Qty` int(10) unsigned NOT NULL default '0',
- `Prz5_Name` int(10) unsigned NOT NULL,
- `Prz5_Qty` int(10) unsigned NOT NULL default '0',
- PRIMARY KEY (`Quest_ID`)
- ) ENGINE=MyISAM;
- CREATE TABLE IF NOT EXISTS `CharQuest` (
- `Char_ID` int(11) unsigned NOT NULL,
- `Quest_ID` int(10) unsigned NOT NULL,
- `TimeLeft` bigint(20) unsigned NOT NULL default '0',
- `Tar1_ID` int(10) unsigned NOT NULL default '0',
- `Tar1_Qty` int(10) unsigned NOT NULL default '0',
- `Tar2_ID` int(10) unsigned NOT NULL default '0',
- `Tar2_Qty` int(10) unsigned NOT NULL default '0',
- `Tar3_ID` int(10) unsigned NOT NULL default '0',
- `Tar3_Qty` int(10) unsigned NOT NULL default '0',
- `Tar4_ID` int(10) unsigned NOT NULL default '0',
- `Tar4_Qty` int(10) unsigned NOT NULL default '0',
- `Tar5_ID` int(10) unsigned NOT NULL,
- `Tar5_Qty` int(10) unsigned NOT NULL default '0',
- `Item1_ID` int(10) unsigned NOT NULL default '0',
- `Item1_Qty` int(10) unsigned NOT NULL default '0',
- `Item2_ID` int(10) unsigned NOT NULL default '0',
- `Item2_Qty` int(10) unsigned NOT NULL default '0',
- `Item3_ID` int(10) unsigned NOT NULL default '0',
- `Item3_Qty` int(10) unsigned NOT NULL default '0',
- `Item4_ID` int(10) unsigned NOT NULL default '0',
- `Item4_Qty` int(10) unsigned NOT NULL default '0',
- `Item5_ID` int(10) unsigned NOT NULL,
- `Item5_Qty` int(10) unsigned NOT NULL default '0',
- PRIMARY KEY (`Char_ID`)
- ) ENGINE=MyISAM;
- */
- prontera,155,181,5 script Quest Board 757,{
- function TimeConvert;
- if( getgmlevel() < .MinGMLevel )
- goto PlayerMenu;
- else goto GM_MENU;
- end;
- OnInit:
- set .MinGMLevel,90;
- set .MaxQuest,4;
- end;
- GM_MENU:
- mes "How can i help you today ?";
- switch( select( "View My Quest",
- "Add New Quest",
- "Cancel" )){
- Case 1:
- query_sql("SELECT `Quest_ID`,`Quest_Name` FROM `CharQuest` WHERE `Char_ID` = '"+getcharid(0)+"' LIMIT "+.MaxQuest+"",.@QuestID,.@QuestName$ );
- for( set .@i,1; .@i <= .MaxQuest; set .@i,.@i + 1 )
- set .@Menu$,.@Menu$ + (( .@QuestName$[.@i] == "" )?"^FF0000Empty Slot^000000":.QuestName$[.@i] )+":";
- set .@Slot,select( .@Menu$ );
- if( .@QuestName$[.@Slot] != "" ){
- next;
- switch( select("Complete Quest:Delete Quest") ){
- Case 1:
- query_sql("SELECT `TimeLeft`,`Tar1_ID`,`Tar1_Qty`,`Tar2_ID`,`Tar2_Qty`,`Tar3_ID`,`Tar3_Qty`,`Tar4_ID`,`Tar4_Qty`,`Tar5_ID`,`Tar5_Qty`,`Item1_ID`,`Item1_Qty`,`Item2_ID`,`Item2_Qty`,`Item3_ID`,`Item3_Qty`,`Item4_ID`,`Item4_Qty`,`Item5_ID`,`Item5_Qty`, FROM `CharQuest`WHERE `Char_ID`='"+getcharid(0)+"' AND `Quest_ID` = '"+.@QuestID[.@Slot]+"'",
- .@TimeLeft,.@Tar1_ID,.@Tar1_Qty,.@Tar2_ID,.@Tar2_Qty,.@Tar3_ID,.@Tar3_Qty,.@Tar4_ID,.@Tar4_Qty,.@Tar5_ID,.@Tar5_Qty,.@Item1_ID,.@Item1_Qty,.@Item2_ID,.@Item2_Qty,.@Item3_ID,.@Item3_Qty,.@Item4_ID,.@Item4_Qty,.@Item5_ID,.@Item5_Qty );
- if( .@TimeLeft < 1 ){
- mes "Sorry the Quest has been Expired, and i will remove the Quest from you since it is not removed from your current Quest Lists.";
- query_sql("DELETE FROM `CharQuest` WHERE `Quest_ID` = '"+.@QuestID[.@Slot]+"'");
- }else{
- for( set .@i,1; .@i <= 5; set .@i,.@i + 1 )
- if( getd(".@Tar"+.@i+"_ID") < getd(".@Tar"+.@i+"_Qty") ){
- mes "[ "+getd(".@Tar"+.@i+"_ID")+"/"+getd(".@Tar"+.@i+"_Qty")+" ] "+getitemname( getd(".@Tar"+.@i+"_ID") );
- set .@Insufficient,1;
- }
- if( countitem( getd(".@Item"+.@i+"_ID") ) < getd(".@Tar"+.@i+"_Qty") ){
- mes "[ "+countitem( getd(".@Tar"+.@i+"_ID") )+"/"+getd(".@Tar"+.@i+"_Qty")+" ] "+getitemname( getd(".@Tar"+.@i+"_ID") );
- set .@Insufficient,1;
- }
- break;
- Case 2:
- query_sql("DELETE FROM `CharQuest` WHERE `Quest_ID` = '"+.@QuestID[.@Slot]+"'");
- mes "Quest has been Removed from your Quest List.";
- break;
- }
- }else{
- }
- close;
- if( !.@quest ){
- mes "Sorry didnt have Available Quest";
- close;
- }
- mes "Choose your Desired Quest.";
- for( set .@i,0; .@i < .@quest; set .@i,.@i + 1 )
- set .@Menu$,.@Menu$ + .@AvailQuestName$[.@i]+":";
- next;
- set .@select,select( .@Menu$ ) - 1;
- query_sql("SELECT `Quest_Desc`,`Min_Lv`,`Max_Lv`,`Type`,`Time`,`Tar1_ID`,`Tar1_Qty`,`Tar2_ID`,`Tar2_Qty`,`Tar3_ID`,`Tar3_Qty`,`Tar4_ID`,`Tar4_Qty`,`Tar5_ID`,`Tar5_Qty`,`Item1_ID`,`Item1_Qty`,`Item2_ID`,`Item2_Qty`,`Item3_ID`,`Item3_Qty`,`Item4_ID`,`Item4_Qty`,`Item5_ID`,`Item5_Qty`,`Prz1_Name`,`Prz1_Qty`,`Prz2_Name`,`Prz2_Qty`,`Prz3_Name`,`Prz3_Qty`,`Prz4_Name`,`Prz4_Qty`,`Prz5_Name`,`Prz5_Qty` FROM `QuestList` WHERE `Quest_Name` = '"+.@AvailQuestName$[.@select]+"'", .@Desc$,.@Minlv,.@Maxlv,.@Type,.@Time,.@TarID1,.@TarIDQty1,.@TarID2,.@TarIDQty2,.@TarID3,.@TarIDQty3,.@TarID4,.@TarIDQty4,.@TarID5,.@TarIDQty5,.@ItmID1,.@ItmIDQty1,.@ItmID2,.@ItmIDQty2,.@ItmID3,.@ItmIDQty3,.@ItmID4,.@ItmIDQty4,.@ItmID5,.@ItmIDQty5,.@PrzID1,.@PrzIDQty1,.@PrzID2,.@PrzIDQty2,.@PrzID3,.@PrzIDQty3,.@PrzID4,.@PrzIDQty4,.@PrzID5,.@PrzIDQty5 );
- mes "Current Quest Info :";
- mes "^00FF00_______________________________^000000";
- mes "^0000FFQuest Name :^000000 "+.@AvailQuestName$[.@select];
- mes "^00FF00_______________________________^000000";
- mes "^0000FFDescription :^000000 "+.@Desc$;
- mes "^00FF00_______________________________^000000";
- switch( .@Type ){
- Case 1: mes "^0000FFQuest Type :^000000 Party"; break;
- Case 2: mes "^0000FFQuest Type :^000000 Guild"; break;
- Case 3: mes "^0000FFQuest Type :^000000 Personal"; break;
- default: break;
- }
- mes "^0000FFLevel Limitation :^000000 "+.@Minlv+" - "+.@Maxlv;
- TimeConvert( .@Time );
- if( .@TarID1 != 0 ){
- mes "^00FF00_______________________________^000000";
- mes "^0000FFTargeted Monster :^000000";
- for( set .@i,1; .@i <= 5 && getd( ".@TarID"+.@i ) != 0; set .@i,.@i + 1 )
- mes " "+getd( ".@TarIDQty"+.@i )+" x "+getmonsterinfo( getd( ".@TarID"+.@i ),0 );
- mes "^00FF00_______________________________^000000";
- }
- if( .@ItmID1 != 0 ){
- mes "^0000FFQuest Items :^000000";
- for( set .@i,1; .@i <= 5 && getd( ".@ItmID"+.@i ) != 0; set .@i,.@i + 1 )
- mes " "+getd( ".@ItmIDQty"+.@i )+" x "+getitemname( getd( ".@ItmID"+.@i ) );
- mes "^00FF00_______________________________^000000";
- }
- if( .@PrzID1 != 0 ){
- mes "^0000FFQuest Items :^000000";
- for( set .@i,1; .@i <= 5 && getd( ".@PrzID"+.@i ) != 0; set .@i,.@i + 1 )
- mes " "+getd( ".@PrzIDQty"+.@i )+" x "+getitemname( getd( ".@PrzID"+.@i ) );
- mes "^00FF00_______________________________^000000";
- }
- set .@Option,select( "Accept Quest",
- ( getgmlevel() < .MinGMLevel )?"":"Modify Quest",
- ( getgmlevel() < .MinGMLevel )?"":"Delete Quest" );
- query_sql("SELECT `Quest_ID` FROM `QuestList` WHERE `Quest_Name` = '"+.@AvailQuestName$[.@select]+"'",.@QuestID);
- switch( .@Option ){
- Case 1:
- if( !getcharid( ( .@Type == 3 )?0:.@Type ) ){
- mes "Sorry this is a ";
- switch( .@Type ){
- Case 1: mes "^0000FFParty Quest^000000, so you need to have Party to pick this Quests"; break;
- Case 2: mes "^0000FFGuild Quest^000000, so you need to have Guild to pick this Quests"; break;
- Case 3: mes "^0000FFPersonal Quest^000000, so you need to have Character to pick this Quests"; break;
- default: break;
- }
- }else if( BaseLevel > .@Maxlv || BaseLevel < .@Minlv ){
- mes "Sorry, Base Level of Character must in the range of "+.@Minlv+" ~ "+.@Maxlv+" Level";
- }else if( query_sql("SELECT `*` WHERE `Char_ID` = '"+getcharid(0)+"' AND `Quest_ID` = '"+.@QuestID+"'") ){
- mes "Sorry, you have taken this Quest already.";
- }
- break;
- Case 2:
- break;
- Case 3:
- query_sql("DELETE FROM `QuestList` WHERE `Quest_ID` = '"+.@QuestID+"'");
- // query_sql("DELETE FROM `CharQuest` WHERE `Quest_ID` = '"+.@QuestID+"'");
- mes "Quest has been Removed.";
- break;
- }
- close;
- Case 2:
- do{
- next;
- mes "Current Quest Info :";
- mes "^00FF00_______________________________^000000";
- if( .@QuestName$ != "" ){
- mes "^0000FFQuest Name :^000000 "+.@QuestName$;
- mes "^00FF00_______________________________^000000";
- }
- if( .@QuestDesc$ != "" ){
- mes "^0000FFDescription :^000000 "+.@QuestDesc$;
- mes "^00FF00_______________________________^000000";
- }
- switch( .@QuestType ){
- Case 1: mes "^0000FFQuest Type :^000000 Party"; break;
- Case 2: mes "^0000FFQuest Type :^000000 Guild"; break;
- Case 3: mes "^0000FFQuest Type :^000000 Personal"; break;
- default: break;
- }
- if( getarraysize( .@QuestLvl ) ) mes "^0000FFLevel Limitation :^000000 "+.@QuestLvl[0]+" - "+.@QuestLvl[1];
- if( .@QuestTime ) TimeConvert( .@QuestTime );
- if( .@QuestType || getarraysize( .@QuestLvl ) || .@QuestTime ) mes "^00FF00_______________________________^000000";
- if( getarraysize( .@QuestMobs ) ){
- mes "^0000FFTargeted Monster :^000000";
- for( set .@i,0; .@i < getarraysize( .@QuestMobs ) && .@QuestMobs[.@i] != 0; set .@i,.@i + 1 )
- mes " "+.@QuestMobsQty[.@i]+" x "+getmonsterinfo( .@QuestMobs[.@i],0 );
- mes "^00FF00_______________________________^000000";
- }
- if( getarraysize( .@QuestItems ) ){
- mes "^0000FFQuest Items :^000000";
- for( set .@i,0; .@i < getarraysize( .@QuestItems ) && getitemname( .@QuestItems[.@i] ) != "null"; set .@i,.@i + 1 )
- mes " "+.@QuestItemsQty[.@i]+" x "+getitemname( .@QuestItems[.@i] );
- mes "^00FF00_______________________________^000000";
- }
- if( getarraysize( .@Prizes ) && .@Prizes[0] ){
- mes "^0000FFQuest Rewards :^000000";
- for( set .@i,0; .@i < getarraysize( .@Prizes ) && .@Prizes[0]; set .@i,.@i + 1 )
- mes " "+.@PrizesQty[.@i]+" x "+getitemname( .@Prizes[.@i] );
- mes "^00FF00_______________________________^000000";
- }
- next;
- set .@QuestSetup,select(( .@QuestName$ == "" )?"^FF0000Name":"[ ^0000FFComplete^000000 ] Name",
- ( .@QuestDesc$ == "" )?"^FF0000Description":"[ ^0000FFComplete^000000 ] Description",
- ( !getarraysize( .@QuestLvl ) )?"^FF0000Level Limitation":"[ ^0000FFComplete^000000 ] Level Limitation",
- ( !.@QuestType )?"^FF0000Quest Type":"[ ^0000FFComplete^000000 ] Quest Type",
- ( !.@QuestTime )?"^FF0000Time Limitation":"[ ^0000FFComplete^000000 ] Time Limitation",
- ( !getarraysize( .@QuestMobs ) )?"^FF0000Required Monsters":"[ ^0000FFComplete^000000 ] Required Monsters",
- ( !getarraysize( .@QuestItems ) )?"^FF0000Required Items":"[ ^0000FFComplete^000000 ] Required Items",
- ( !getarraysize( .@Prizes ) || !.@Prizes[0] )?"^FF0000Rewards":"[ ^0000FFComplete^000000 ] Rewards",
- ( .@QuestName$ == "" || .@QuestDesc$ == "" || !.@QuestLvl[1] || .@QuestType < 0 || .@QuestTime < 0 ||
- ( !.@QuestMobs[0] && !.@QuestItems[0] ) || !.@Prizes[0] )?"":"^FF0000Publish Completed Quest" );
- switch( .@QuestSetup ){
- Case 1:
- mes "Input the Name of the Quest.";
- input .@QuestName$;
- break;
- Case 2:
- mes "Input a Description for your Quests.";
- set .@a,0;
- do{
- mes "Description "+(.@a+1)+"...";
- input getd(".@Desc"+.@a+"$");
- set .@QuestDesc$,.@QuestDesc$+" "+ getd(".@Desc"+.@a+"$");
- set .@a,.@a + 1;
- }while( select("Next Description:^0000FFFinish^000000") == 1 );
- break;
- Case 3:
- do{
- mes "Input the Minimum Level Requirement";
- input .@QuestLvl[0],1,getbattleflag("max_lv");
- mes "Input the Maximum Level Requirement";
- input .@QuestLvl[1],.@QuestLvl[0],getbattleflag("max_lv");
- if( .@QuestLvl[1] < .@QuestLvl[0] ){
- mes "^FF0000Please make sure Max. Level is Higher than Min. Level^000000";
- next;
- }
- }while( .@QuestLvl[1] < .@QuestLvl[0] );
- break;
- Case 4:
- mes "Select Quest Type :";
- mes "1 - Party";
- mes "2 - Guild";
- mes "3 - Player";
- input .@QuestType,1,3;
- break;
- Case 5:
- mes "Insert Quest Time Limitation";
- mes "0 - 365 Days ? ";
- input .@Time[0],0,365;
- mes "0 - 23 Hours ?";
- input .@Time[1],0,23;
- mes "0 - 59 Minutes ?";
- input .@Time[2],0,59;
- set .@QuestTime,( .@Time[2] * 60 ) + ( .@Time[1] * 3600 ) + ( .@Time[0] * 86400 );
- break;
- Case 6:
- dispbottom "[ Quest Setup Reminder ] : Wrong / Invalid Data will SPAM your server with ERROR Message.";
- for( set .@i,0; .@i < 5; set .@i,.@i + 1 ){
- mes "Input ^FF0000Monster "+( .@i+1 )+"^000000 ID :";
- mes "0 = Cancel / Stop";
- do{
- input .@QuestMobs[.@i];
- if( !.@QuestMobs[.@i] ) break;
- }while(getmonsterinfo( .@QuestMobs[.@i],0 ) == "null" || getmonsterinfo( .@QuestMobs[.@i],0 ) == "" );
- if( !.@QuestMobs[.@i] ) break;
- mes "Required ^FF0000"+getmonsterinfo( .@QuestMobs[.@i],0 )+"^000000 Kill :";
- input .@QuestMobsQty[.@i],1,30000;;
- next;
- }
- break;
- Case 7:
- dispbottom "[ Quest Setup Reminder ] : Wrong / Invalid Data will SPAM your server with ERROR Message.";
- for( set .@i,0; .@i < 5; set .@i,.@i + 1 ){
- mes "Input ^FF0000Item "+( .@i+1 )+"^000000 ID :";
- mes "0 = Cancel / Stop";
- do{
- input .@QuestItems[.@i];
- if( !.@QuestItems[.@i] ) break;
- }while( getitemname( .@QuestItems[.@i] ) == "null" || getitemname( .@QuestItems[.@i] ) == "" );
- if( !.@QuestItems[.@i] ) break;
- mes "Required ^FF0000"+getitemname( .@QuestItems[.@i] )+"^000000 Amount :";
- input .@QuestItemsQty[.@i],1,30000;;
- next;
- }
- break;
- Case 8:
- dispbottom "[ Quest Setup Reminder ] : Wrong / Invalid Data will SPAM your server with ERROR Message.";
- for( set .@i,0; .@i < 5; set .@i,.@i + 1 ){
- mes "Input ^FF0000Prize "+( .@i+1 )+"^000000 ID :";
- mes "0 = Cancel / Stop";
- do{
- input .@Prizes[.@i];
- if( !.@Prizes[.@i] ) break;
- }while( getitemname( .@Prizes[.@i] ) == "null" );
- if( !.@Prizes[.@i] ) break;
- mes "Input Prize Amount :";
- input .@PrizesQty[.@i],1,30000;
- next;
- }
- break;
- default: break;
- break;
- }
- }while( .@QuestSetup != 9 );
- query_sql("INSERT INTO `QuestList` (`Quest_Name`, `Quest_Desc`, `Min_Lv`, `Max_Lv`, `Type`, `Time`,`Tar1_ID`, `Tar1_Qty`, `Tar2_ID`, `Tar2_Qty`, `Tar3_ID`, `Tar3_Qty`, `Tar4_ID`, `Tar4_Qty`, `Tar5_ID`, `Tar5_Qty`,`Item1_ID`, `Item1_Qty`, `Item2_ID`, `Item2_Qty`, `Item3_ID`, `Item3_Qty`, `Item4_ID`, `Item4_Qty`, `Item5_ID`, `Item5_Qty`,`Prz1_Name`, `Prz1_Qty`, `Prz2_Name`, `Prz2_Qty`, `Prz3_Name`, `Prz3_Qty`, `Prz4_Name`, `Prz4_Qty`, `Prz5_Name`, `Prz5_Qty`)VALUES ('"+.@QuestName$+"', '"+.@QuestDesc$+"', "+.@QuestLvl[0]+", "+.@QuestLvl[1]+", "+.@QuestType+", "+.@QuestTime+","+.@QuestMobs[0]+", "+.@QuestMobsQty[0]+", "+.@QuestMobs[1]+", "+.@QuestMobsQty[1]+","+.@QuestMobs[2]+", "+.@QuestMobsQty[2]+","+.@QuestMobs[3]+", "+.@QuestMobsQty[3]+","+.@QuestMobs[4]+", "+.@QuestMobsQty[4]+","+.@QuestItems[0]+", "+.@QuestItemsQty[0]+", "+.@QuestItems[1]+", "+.@QuestItemsQty[1]+","+.@QuestItems[2]+", "+.@QuestItemsQty[2]+","+.@QuestItems[3]+", "+.@QuestItemsQty[3]+","+.@QuestItems[4]+", "+.@QuestItemsQty[4]+","+.@Prizes[0]+", "+.@PrizesQty[0]+", "+.@Prizes[1]+", "+.@PrizesQty[1]+","+.@Prizes[2]+", "+.@PrizesQty[2]+","+.@Prizes[3]+", "+.@PrizesQty[3]+","+.@Prizes[4]+", "+.@PrizesQty[4]+" ); ");
- message strcharinfo(0),"New Quest has been Added.";
- break;
- Case 3:
- default:
- break;
- }
- close;
- function TimeConvert {
- set .@left,getarg(0);
- set .@day, .@left / 86400;
- set .@hour, .@left % 86400 / 3600;
- set .@min, .@left % 3600 / 60;
- set .@sec, .@left % 60;
- mes "^0000FFTime Limit :^FF0000 "+( (.@day < 10)?"0"+.@day+" Day":.@day+" Day" )+" : ^FF0000"+( (.@hour < 10)?"0"+.@hour:.@hour )+":"+( (.@min < 10)?"0"+.@min:.@min )+":"+( (.@sec < 10)?"0"+.@sec:.@sec )+"^000000";
- return;
- }
- }
Advertisement