Jump to content

GM Takumirai

Members
  • Posts

    592
  • Joined

  • Last visited

Everything posted by GM Takumirai

  1. can anyone produce a new .patch file for this?
  2. i suggest already an idea like this.. god made it http://rathena.org/board/topic/70192-monster-defense/
  3. i think he mean to the monster is like this.. http://rathena.org/board/topic/70192-monster-defense/ the idea is great ..
  4. follow the guide on how to install PCRE http://eathena.ws/wiki/index.php/PCRE
  5. when will you release this xantara?.. this is great ..
  6. Jman and team thanks for making this community.. and pursuing yourself to make this emulator the best.. not only jman to be thank but all of you guys who are there contributing yourself free to make this emulator.. i know how hard to do work in rAthena also doing work in real life... again thanks jman and goodluck hope you still visit in the board congrats arc
  7. Thanks for your hardwork. hope you can finish this.. Genou can you share your malaya to us
  8. thanks please update this regularly , hope you can share some translated files..
  9. I think the bad effect is that if the event is automated... Example whem 1:00 theres no one join then the next automated schedule is 2:00 i tjink it will aggreviate the timeline
  10. Use mapflag like the configuration in woe no item use
  11. Hmmm i don't know how official work on the 2 items.. is the item going to stack the add stats or if used only 20 dex is add?
  12. I think he mean in the report is this.. when gm set to round 5 for example and no one join the npc still continue the event because i think the npc read rounds per winner.. example if player answer correctly it will register to round 1 then the player dont answer still it is round 1 because no one answer..
  13. yes i think he need to create that line inside his agit_templates/agit_main.. i don't know exactly also what to put but refer to the original file
  14. - the best i can think is to hide the 2 pub in map that can't be warp by your players, then put this NPC outside or in your town this will be their portal entry to go to the 2 pub gonryun,167,98,3 script BG Portal 1015,{ if (BaseLevel <= 149 && JobLevel <= 30){ mes "[banker]"; mes "Welcome to the BG Emperium Portal!"; next; mes "Do you want to participate?"; next; select("Yes"); warp "prontera",42,369; } else { mes "[bG Manager]"; mes "Sorry, you are not allowed to participate."; next; mes "You need to have at least"; mes "^FF0000Job Level 30 Above^000000 and ^FF0000Base Level 150^000000"; close; }
  15. thanks both of you.. gonryun,167,98,3 script Novice vs. Zombie 1015,{ if ( BaseLevel != 1 || Class != 0){ mes "[^0000FFZombie Vs. Novice^000000]"; mes "You must be a level 1 Novice."; close; } if(Weight > 0) { mes "Lower your weight, Remove all your items."; close; } mes "[^0000FFZombie Vs. Novice^000000]"; mes "You want to join the Event?"; next; switch(select("Yes","No")) { case 1: npctalk ""+strcharinfo(0)+" has registered for the Zombie v.s. Novice."; sc_end SC_ALL; sc_start SC_DECREASEAGI,1200000,10; percentheal 100,100; sc_start SC_STRIPSHIELD,1200000,5; sc_start SC_STRIPWEAPON,1200000,5; sc_start SC_STRIPARMOR,1200000,5; sc_start SC_STRIPHELM,1200000,5; statusup2 bStr,-999; statusup2 bAgi,-999; statusup2 bVit,-999; statusup2 bInt,-999; statusup2 bDex,-999; statusup2 bLuk,-999; warp "quiz_01",42,369; end; case 2: mes "[^0000FFZombie Vs. Novice^000000]"; mes "Come Again, if you want to join."; break; } close; OnInit: disablenpc "Novice vs. Zombie"; disablenpc "Prize"; end; OnSat0800: OnSat1100: OnSat1400: OnSat1700: OnSun0800: OnSun1100: OnSun1400: OnSun1700: announce "Manager: Zombie Vs. Novice Event Registration is now Open, 3 minutes",0; killmonsterall "quiz_01"; sleep 5000; announce "Manager: NPC Appeared at Gonryun Town' Register Now!",0; enablenpc "Novice vs. Zombie"; sleep 55000; announce "Manager: Zombie Vs. Novice Registration will be closed in 2 minutes!",0; sleep 60000; announce "Manager: Zombie Vs. Novice Registration will be closed in 1 minute!",0; sleep 50000; mapannounce "quiz_01","Registration Closed!! in 10 seconds the Event will Start!",0; disablenpc "Novice vs. Zombie"; sleep 5000; for( set .@a,5; .@a > 0; set .@a,.@a - 1 ){ announce "Manager: Monster will spawn in ~"+.@a+"~",0; sleep 1000; } if(getmapusers("guild_vs5") == 1){ mapannounce "guild_vs5","Manager: Event Ended 1 Participant Only..",0; disablenpc "Prize"; announce "Manager: Event Ended 1 Participant Only",0; disablenpc "Novice vs. Zombie"; sleep 1000; } for( set .@a,3; .@a > 0; set .@a,.@a - 1 ){ monster "quiz_01",42,369,"Zombie",1015,2; sleep 10000; } while( getmapusers("quiz_01") > 1 ){ mapannounce "quiz_01",getmapusers("quiz_01") +" players still alive in the Event.",0,0x00FF00;; sleep 2000; } killmonsterall "quiz_01"; announce "'Manager: No Player win the Event, due to all participant die.,0; mapannounce "quiz_01","Manager: You survive the zombie waves, talk to the Prize NPC to get the reward.",0; enablenpc "Prize"; end; OnPCDieEvent: getmapxy .@mapnvz$,.@xnvz,.@ynvz,0; if ( .@mapnvz$ == "quiz_01") { sleep2 100; warp "prontera",0,0; atcommand "@alive "+ strcharinfo(0); dispbottom "Sorry, but you were killed."; } sleep2 100; if (.@mapnvz$ == "sec_pri" && getmapusers("quiz_01") == 1 ) { killmonsterall "sec_pri"; sc_start SC_BASILICA,30000,1; mapannounce "sec_pri","You have won, approach the R.F.Y.L. Banker NPC please.",0; enablenpc "Prize"; stopnpctimer; end; } end; } quiz_01,42,369,3 script Prize 72,{ if(getmapusers("quiz_01") > 1){ npctalk "Only the last Survivor can talk with me."; end; } announce "In ' Zombie Vs. Novice ' has won" + strcharinfo (0) + "! We congratulate "+(( Sex )? "HIM":"HER")+"!",0; getitem 7227,1; warp "prontera",156,223; disablenpc "Prize"; end; } // == Mapflags quiz_01 mapflag gvg quiz_01 mapflag nowarp quiz_01 mapflag nowarpto quiz_01 mapflag noteleport quiz_01 mapflag nosave quiz_01 mapflag nomemo quiz_01 mapflag nobranch quiz_01 mapflag pvp_noparty quiz_01 mapflag nocommand 80 quiz_01 mapflag restricted 5 - thanks script is fix and done.. thanks
  16. //===== eAthena Script ======================================= //= Guild Manager //===== By =================================================== //= lllchrislll //===== Version ============================================== //= 1.0 - Script Made // - Added many features (Didn't write that down...) // - Added the possiblity to use the donation via an Shop // Items can only be set by the GM's, see 'OnInit' // - Fixxed some bugs with the Reward Function // Reward can only be set by the GM's, see 'OnInit' //= 1.1 - Changed Reward Giving via Quest, also fixxed some bugs reported by darkis // - Rewritten the Ranking Check, well it is using more memory now.... (Sorry for that) // - Added an Random EXP Boost depending how much "rank" points // you possess, also added an menu option for it, see 'G_EXP'. // - Also rewritten the explanation how to add this system to WoE:SE //= 1.2 - Removed the Quest Area from preventing exploits. //====== ToDo List =========================================== //= Guild Shop: Looking for way to prevent the usage of your own Zeny instead // of the donation for checking if you want to buy something // Well, I found a way, but would cause a huge exploit..... //= Ranking Decrease: - How about when you lost a castle? // Previous WoE: 3, This WoE: 2 > -1 Rank for Guild only or Member too? ;I // //===== Compatible/Created/Tested With ====================================== //= eAthena SQL 14434 Trunk //===== Description ========================================== //= This Script handles a Ranking System in the Guild itself, //= the ranking itself can increase and decrease. //= Increasing the Ranking: // - Donating money to the guild, which can be used by the // Guild Master only // - Emperium Break during WoE // //= Decreasing of the Ranking: // - Killing the Guild Members in PvP Rooms // - Being offline for 1 week without telling the // guild master, to update the "Holiday List". // //= Also you can recieve other rewards from breaking the Emp, // which is done by collecting points. //===== MySQL Entries ======================================= /* //= Member Table: DROP TABLE IF EXISTS `guild_rank_mem`; CREATE TABLE `guild_rank_mem` ( `char_id` int(10) unsigned NOT NULL, `guild_id` smallint(5) unsigned NOT NULL, `rank` smallint(5) unsigned DEFAULT '0', `woe` smallint(5) unsigned DEFAULT '0', `donate` int(11) unsigned DEFAULT '0', `donate_am` int(11) unsigned DEFAULT '0', `holiday` smallint(5) unsigned DEFAULT '0', PRIMARY KEY (`char_id`) ) ENGINE=MyISAM; //= Guild Table: DROP TABLE IF EXISTS `guild_rank_guild`; CREATE TABLE `guild_rank_guild` ( `guild_id` smallint(5) unsigned NOT NULL, `type` smallint(5) unsigned DEFAULT '1', `rank` smallint(5) unsigned DEFAULT '0', `woe` smallint(5) unsigned DEFAULT '0', `donate` int(11) unsigned DEFAULT '0', `donate_min` int(11) unsigned DEFAULT '0', `donate_max` int(11) unsigned DEFAULT '0', PRIMARY KEY (`guild_id`) ) ENGINE=MyISAM; */ //===== Comments ============================================= //= You need to edit the following line in the // npc/guild/agit_template.txt //========== Find this ==========// /* // Adjust Economy Invest Level for Castle set .@Economy,GetCastleData(strnpcinfo(2),2) - 5; if (.@Economy < 0) set .@Economy, 0; //========== Add above ==========// // Callfunc for Guild Rank System callfunc "GLD_RANK_WOE"; //= WoE:SE : Open these file under npc/guild2/ arug_cas02.txt arug_cas04.txt schg_cas01.txt schg_cas03.txt schg_cas05.txt arug_cas01.txt arug_cas03.txt arug_cas05.txt schg_cas02.txt schg_cas04.txt //========== Find this, which only shows up once every file. =========// mapannounce "arug_cas01","The emperium has been shattered!",bc_map,"0x00FF00",FW_NORMAL,20,0,40; // ------- or -------- // announce "The emperium has been shattered!",bc_map,"0x00FF00",FW_NORMAL,20,0,40; //========== Add after ==========// // Callfunc for Guild Rank System callfunc "GLD_RANK_WOE"; */ //============================================================ - script GuildRanks#Events -1,{ end; OnInit: query_sql "SHOW TABLES LIKE 'guild_rank_guild'",.@ch_gld_tbl$; query_sql "SHOW TABLES LIKE 'guild_rank_mem'",.@ch_mem_tbl$; if($gld_ranker_tbl == 1) { // If the tables exists if(.@ch_gld_tbl$[0] != "" && .@ch_mem_tbl$[0] != "") { end; // If one of the tables doesn't exists } else if(.@ch_gld_tbl[0] == "" || .@ch_mem_tbl[0] == "") { query_sql "DROP TABLE IF EXISTS `guild_rank_guild`"; query_sql "DROP TABLE IF EXISTS `guild_rank_mem`"; set $gld_ranker_tbl,0; } } // Checking if the System is on or not if(!$gld_ranker_tbl) disablenpc "GuildRanks#Events"; end; setarray .expboost[0],5,10,15,20,25; // Exp Boost in % setarray .rankreq[0],15,30,60,120,240; // Rank Points required // Example: To gain 15% EXP Bonus, you need 60 Rank Points. set .boostuse,1; // Which day it will be activated on: 0-6 = Sunday - Saturday, 7 = Random switch(.boostuse) { case 0: set .expdayn$,"Sunday"; break; case 1: set .expdayn$,"Monday"; break; case 2: set .expdayn$,"Tuesday"; break; case 3: set .expdayn$,"Wednesday"; break; case 4: set .expdayn$,"Thursday"; break; case 5: set .expdayn$,"Friday"; break; case 6: set .expdayn$,"Saturday"; break; default: set .expdayn$,"a random day."; break; } set .GldEXPBoost,0; if(gettime(4) == ( (.boostuse != 7) ? .boostuse : rand(7) ) ) { set .GldEXPBoost,1; announce "Guild Rank System: EXP Bonus has been activated.",0,0x00FF00; } end; OnNPCKillEvent: if(!getcharid(2)) end; // If the player is not in a guild. // =========== EXP Boost ============== // if(.GldEXPBoost == 1) { if(EXPLastRank < query_sql("SELECT `rank` FROM `guild_rank_mem` WHERE `guild_id` = '"+getcharid(2)+"' AND `char_id` = '"+getcharid(0)+"'",@rank) ) { set EXPLastRank,@rank; for( set @b,0; @b < getarraysize(.rankreq); set @b,@b + 1) { if(EXPLastRank >= .rankreq[@b]) { if(.rankreq[@b+1] != 0) { set EXPBoost,.expboost[@b]; if(EXPLastRank < .rankreq[@b+1] ) break; } else { set EXPBoost,.expboost[@b]; break; } } } } set @bexp,(getmonsterinfo(killedrid,3)*EXPBoost); if(getgmlevel()) dispbottom "Debug: Monster: "+getmonsterinfo(killedrid,0)+" with "+@bexp+" Base EXP, "+@jexp+" Job EXP"; set @jexp,(getmonsterinfo(killedrid,4)*EXPBoost); set BaseEXP,BaseEXP + @bexp; set JobEXP,JobEXP + @jexp; dispbottom "EXP Bonus: "+EXPBoost+"%. You have recieved additionally "+@bexp+" Base EXP and "+@jexp+" Job EXP."; } } end; OnPCKillEvent: if(!getcharid(2)) end; if(getmapflag(strcharinfo(3),mf_pvp) == 0) end; query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+getcharid(2)+"'",@gld_mem$; set @Killer$,rid2name(killerrid); for( set @gpvp,0; @gm < getarraysize(@gld_mem$); set @gpvp,@gpvp + 1) { if(@Killer$ == @gld_mem$[@gpvp]) { query_sql "UPDATE `guild_rank_mem` SET `rank` = `rank` - 1 WHERE `guild_id` = '"+getcharid(2)+"' AND `char_id` = '"+getcharid(0,@Killer$)+"'"; break; } } donpcevent "::OnReset"; end; OnPCLogoutEvent: if(!getcharid(2)) end; if(query_sql("SELECT `holiday` FROM `guild_rank_mem` WHERE `guild_id` = '"+getcharid(2)+"' AND `char_id` = '"+getcharid(0)+"'",@holiday) == 0) { set gld_off_log,gettimetick(2) + 691200; // 8 Days set gld_last,getcharid(2); } end; OnPCLoginEvent: if($gld_ranker_tbl) announce "The Guild Ranking System is online.",4,0x00FF00; if(.GldEXPBoost == 1) announce "Guild Rank System: EXP Bonus has been activated.",4,0x00FF00;; // Don't enable these lines, NEVER!! Need a solution for this problem // if(BkpZeny != 0) { set Zeny,BkpZeny; set BkpZeny,0; } // Guild Shop Exploit Preventing if(!getcharid(2)) end; set EXPBoost,0; if(gld_last != getcharid(2)) set gld_off_log,0; end; query_sql "SELECT `holiday` FROM `guild_rank_mem` WHERE `guild_id` = '"+getcharid(2)+"' AND `char_id` = '"+getcharid(0)+"'",@holiday; if(@holiday == 0 && (gettimetick(2) > gld_off_log)) { query_sql "UPDATE `guild_rank_mem` SET `rank` = `rank` - 1 WHERE `guild_id` = '"+getcharid(2)+"' AND `char_id` = '"+getcharid(0)+"'"; } else { set gld_off_log,0; } end; // ========================= Auto Guild Checking =========================// // This part checks the Registered Guilds and their members. // If the guild doesn't exists anymore or an Member has left a guild, // they will be deleted from the ranking and if the new Guild is registered // it will insert them into the new guild. // ========================================================================== OnClock0000: set .GldEXPBoost,0; if(gettime(4) == ( (.boostuse != 7) ? .boostuse : rand(7) ) ) { set .GldEXPBoost,1; announce "Guild Rank System: EXP Bonus has been activated.",0,0x00FF00;; } OnRankCheck: // Which Guild is registered and still exists query_sql "SELECT `guild_id` FROM `guild_rank_guild`",.@gld_ids; for( set .@w,0; .@w < getarraysize(.@gld_ids); set .@w,.@w + 1) { if(query_sql("SELECT `guild_id` FROM `guild` WHERE `guild_id` = '"+.@gld_ids[.@w]+"'",.@c_gld) != 0) { // Getting the Guild Member ID's from the Guild_Member Table query_sql "SELECT `char_id` FROM `guild_member` WHERE `guild_id` = '"+.@gld_ids[.@w]+"'",.@gld_mem; for ( set .@m,0; .@m < getarraysize(.@gld_mem); set .@m,.@m+1) { // Checking if the Member is in the ranking if(query_sql("SELECT `char_id` FROM `guild_rank_mem` WHERE `guild_id` = '"+.@gld_ids[.@w]+"' AND `char_id` = '"+.@gld_mem[.@m]+"'",.@c_chid) == 0) { // Checking in which Guild the Member is if(query_sql("SELECT `guild_id` FROM `guild_member` WHERE `char_id` = '"+.@gld_mem[.@m]+"'",.@c_gid) != .@gld_ids[.@w]) { // If the Member doesn't exists anymore in this guild query_sql "DELETE FROM `guild_rank_mem` WHERE `char_id` = '"+.@gld_mem[.@m]+"'"; } // Member is not in the ranking query_sql "INSERT INTO `guild_rank_mem` ( `guild_id` , `char_id` ) VALUES ( '"+.@gld_ids[.@w]+"' , '"+.@gld_mem[.@m]+"' )"; } } // If the Guild doesn't exist anymore delete it from the ranking. } else { query_sql "DELETE FROM `guild_rank_guild` WHERE `guild_id` = '"+.@gld_ids[.@w]+"'"; query_sql "DELETE FROM `guild_rank_mem` WHERE `guild_id` = '"+.@gld_ids[.@w]+"'"; callsub OnGuildBreak; } } donpcevent "::OnReset"; end; OnGuildBreak: announce "The guild "+getguildname(.@gld_ids[.@w])+" has been disbanded.",0,0xFF0000; OnReset: deletearray .@gld_ids[0],getarraysize(.@gld_ids); deletearray .@gld_mem[0],getarraysize(.@gld_mem); deletearray .@c_chid[0],getarraysize(.@c_chid); deletearray .@c_gid[0],getarraysize(.@c_gid); end; } //OnAgitBreak: function script GLD_RANK_WOE { query_sql "SELECT `type` FROM `guild_rank_guild` WHERE `guild_id` = '"+getcharid(2)+"'",@type; if(@type == 1) { query_sql "UPDATE `guild_rank_mem` SET `rank` = `rank` + 1 , `woe` = `woe` + 1 WHERE `guild_id` = '"+getcharid(2)+"' AND `char_id` = '"+getcharid(0)+"'"; query_sql "UPDATE `guild_rank_guild` SET `rank` = `rank` + 1 , `woe` = `woe` + 1 WHERE `guild_id` = '"+getcharid(2)+"'"; announce "You have gained 1 Point for breaking an Emperium while WoE.",4,0xFF0000; } //end; return; } // ===================== Guild Shop Pre-Setting ==================== // - shop GUILD_SHOP -1,512:-1 // ===================== Guild Rank Manager ====================== // gonryun,151,92,4 script Guild Ranker#gldrank 857,{ callsub G_Array; set .@n$,"[Guild Ranker]"; set .@last_id,25077; // Highest Item ID set @guild_id,getcharid(2); OnStart: mes .@n$; // **********************************************************************// // // GM Menu Selection \\ // // **********************************************************************// if(getgmlevel() >= 80) { mes "Player or GM Menu?"; menu "Player Menu",-,"GM Menu",G_GM; next; mes .@n$; } // **********************************************************************// // // No MySQL Entries made \\ // // **********************************************************************// if(!$gld_ranker_tbl) { mes "I'm sorry, but"; mes "the System hasn't been"; mes "enabled yet."; close; } // **********************************************************************// // // Not in a Guild \\ // // **********************************************************************// if(!@guild_id) { mes "I'm sorry, but you"; mes "are not in a guild."; close; } // **********************************************************************// // // Main Greeting \\ // // **********************************************************************// mes "Hello, "+strcharinfo(0)+"!"; if(query_sql("SELECT `guild_id` FROM `guild_rank_guild` WHERE `guild_id` = '"+@guild_id+"'",@gld_check) == 0) { mes "As I can see your Guild has not been registered yet,"; if(strcharinfo(0) == getguildmaster(@guild_id)) { mes "wanna register it now?"; next; if(select("- Yes register:- No, thanks") == 2) { goto G_Quit; } else { goto G_Register; } } else { mes "if you want to join,"; mes "please inform your Guild Master about it."; close; } } mes "How can I help ya?"; next; if(strcharinfo(0) == getguildmaster(@guild_id)) { if(select("- Guild Master Menu:- Member Menu") == 1) { menu "- Guild Summary",G_Summary,"- EXP Boost Info",G_EXP,"- Guild Shop",G_Shop,"- Donation Limit",G_Donate_L,"- Holiday List",G_Holiday,"- Nothing",G_Quit; } } menu "- Guild Summary",G_Summary,"- EXP Boost Info",G_EXP,"- See Ranking",G_Rank,"- Get Reward",G_Reward,"- Donation",G_Donate,"- Nothing",G_Quit; // **********************************************************************// // // Guild Summary \\ // // **********************************************************************// G_Summary: query_sql "SELECT `type` , `donate` , `donate_min` , `donate_max` FROM `guild_rank_guild` WHERE `guild_id` = '"+@guild_id+"'",@type,@donate,@donate_min,@donate_max; mes .@n$; mes "Guild Type: "+ ( (@type == 2) ? "Non-WoE" : "WoE"); mes " "; mes "Donation Status:"; mes "Currently we have "+@donate+" Zeny on our Account."; mes "Donation Limit:"; mes "Minium: " + @donate_min + " Zeny."; // Donate Minimum Amount mes "Maximum: " + @donate_max + " Zeny."; // Donate Maximum Amount close; // **********************************************************************// // // EXP Boost Info \\ // // **********************************************************************// G_EXP: mes .@n$; mes "The EXP Boost is global to every guild."; mes "The boost depends on your rank and the percent set by the GM Team."; mes "And will be activated on "+getvariableofnpc(.expdayn$,"GuildRanks#Events"); mes "Status: " + ( (getvariableofnpc(.GldEXPBoost,"GuildRanks#Events") == 1) ? "Active" : "Not Active."); mes " "; mes "Current Rank Requirements and EXP Boost."; for( set @e,0; @e < getarraysize(getvariableofnpc(.expboost,"GuildRanks#Events")); set @e,@e + 1) { mes getvariableofnpc(.rankreq[@e],"GuildRanks#Events")+" Points = "+getvariableofnpc(.expboost[@e],"GuildRanks#Events")+"% EXP Boost."; } close; // **********************************************************************// // // Ranking \\ // // **********************************************************************// G_Rank: mes .@n$; mes "What kind of ranking"; mes "do you want to see?"; next; switch(select("- Donation:- WoE:- All")) { // **********************************************************************// // // Total Donation \\ // // **********************************************************************// case 1: mes .@n$; query_sql "SELECT `char_id` , `donate` , `donate_am` FROM `guild_rank_mem` WHERE `guild_id` = '"+@guild_id+"' ORDER BY `donate_am` DESC",@char_id,@donate,@donate_am; query_sql "SELECT `donate` FROM `guild_rank_guild` WHERE `guild_id` = '"+@guild_id+"'",@donate_total; mes "Total Donation:"; mes @donate_total; mes " "; mes "Name - Quantity - Donated Amount Total"; for( set @gm,0; @gm < getarraysize(@char_id); set @gm,@gm + 1) { query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id[@gm]+"'",@c_name$; mes @c_name$+" - "+@donate[@gm]+" - "+@donate_am[@gm]; } close; // **********************************************************************// // // Emperium Breaks \\ // // **********************************************************************// case 2: mes .@n$; query_sql "SELECT `char_id` , `woe` FROM `guild_rank_mem` WHERE `guild_id` = '"+@guild_id+"' ORDER BY `woe` DESC",@char_id,@woe; query_sql "SELECT `woe` FROM `guild_rank_guild` WHERE `guild_id` = '"+@guild_id+"'",@woe2; mes "Total Emp Breaks:"; mes @woe2; mes " "; mes "Name - Break Quantity"; for( set @gm,0; @gm < getarraysize(@char_id); set @gm,@gm + 1) { query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id[@gm]+"'",@c_name$; mes @c_name$+" - "+@woe[@gm]; } close; // **********************************************************************// // // Member Ranking \\ // // **********************************************************************// case 3: mes .@n$; query_sql "SELECT `char_id` , `rank` FROM `guild_rank_mem` WHERE `guild_id` = '"+@guild_id+"' ORDER BY `rank` DESC",@char_id,@rank; mes "Name - Ranking"; for( set @gm,0; @gm < getarraysize(@char_id); set @gm,@gm + 1) { query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id[@gm]+"'",@c_name$; mes @c_name$+" - "+@rank[@gm]; } close; } // **********************************************************************// // // Recieving Reward \\ // // **********************************************************************// G_Reward: query_sql "SELECT `woe` FROM `guild_rank_mem` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+getcharid(0)+"'",@woe; mes .@n$; mes "Your current balance is:"; mes "WoE Points: "+@woe; next; mes .@n$; mes "Reward - Points needed"; mes .rew_woe_need[0] + ". " + .rew_woe_am[0] + "x " + ( (.rew_woe[0] == 1) ? " Zeny": getitemname(.rew_woe[0]) + " (ID:" + .rew_woe[0] + ")" ) + " - "+.rew_woe_need[0]; set @r_menu$,"- "+.rew_woe_need[0] + " "+( (.rew_woe_need[0] > 1) ? "Points": "Point"); for( set @r,1; @r < getarraysize(.rew_woe); set @r,@r+1) { mes .rew_woe_am[@r] + "x " + ( (.rew_woe[@r] == 1) ? " Zeny": getitemname(.rew_woe[@r]) + " (ID: " + .rew_woe[@r] + ")" ) + " - "+.rew_woe_need[@r]; set @r_menu$,@r_menu$ + ":- "+.rew_woe_need[@r] + " "+( (.rew_woe_need[@r] > 1) ? "Points": "Point"); } mes " "; mes "Please choose the reward you want."; next; switch(prompt(@r_menu$)) { default: set @m,@menu - 1; break; case 255: goto G_Quit; break; } mes .@n$; mes "You have chosen:"; mes .rew_woe_am[@m] + "x " + ( (.rew_woe[@m] == 1) ? " Zeny": getitemname(.rew_woe[@m]) + " (ID: " + .rew_woe[@m] + ")" ) + " - "+.rew_woe_need[@m]; mes "Is that correct?"; next; if(select("- Yes:- No") == 2) { goto G_Quit; } else { mes .@n$; if(.rew_woe_need[@m] > @woe) { mes "I'm sorry, but it seems you don't have enough points for this reward."; close; } if(.rew_woe[@m] == 1) { mes "You have recieved "+.@rew_woe_am[@m]+" Zeny."; set Zeny,Zeny + .rew_woe_am[@m]; } else { mes "You have recieved "+.rew_woe_am[@m] + "x "+getitemname(.rew_woe[@m]); getitem .rew_woe[@m],.rew_woe_am[@m]; } query_sql "UPDATE `guild_rank_mem` SET `woe` = `woe` - "+.rew_woe_need[@m]+" WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+getcharid(0)+"'"; close; } // **********************************************************************// // // Making Donation \\ // // **********************************************************************// G_Donate: query_sql "SELECT `donate` , `donate_min` , `donate_max` FROM `guild_rank_guild` WHERE `guild_id` = '"+@guild_id+"'",@donate,@donate_min,@donate_max; mes .@n$; if(@donate_min < 1) { mes "Your Guild Master hasn't set the"; mes "Donation Limit yet."; close; } mes "Total Donation: "+@donate; mes "The account can hold up to "+.don_limit+" Zeny."; if(@donate < .don_limit) { mes (.don_limit - @donate) +" can be donated until the limit will be reached."; } else if(@donate >= .don_limit) { mes "Limit reached, the account is full."; mes "Please wait until your Guild Master used some donations up."; close; } mes "You can donate once per week."; mes "The minimum amount is " + @donate_min + " Zeny"; // Donate Minimum Amount mes "and the maximum "+ @donate_max + " Zeny."; // Donate Maximum Amount next; if(@guild_id == last_gld && gld_don_delay > gettimetick(2)) { mes .@n$; mes "I'm sorry, but the week hasn't passed yet."; close; } else if(@guild_id != last_gld) { set gld_don_delay,0; } if(input(@do_don,@donate_min,@donate_max) != 0) { mes .@n$; mes "You have put an invalid amount."; close; } if(Zeny < @do_don) { mes .@n$; mes "You don't have the needed money."; close; } if( (@donate + @do_don) >= .don_limit) { mes "The donation you are trying to make is too much for the account to handle."; mes "Please wait until your Guild Master uses some donations."; close; } query_sql "UPDATE `guild_rank_mem` SET `donate` = donate + 1 , `donate_am` = donate_am + "+@do_don+" , `rank` = rank + 1 WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+getcharid(0)+"'"; query_sql "UPDATE `guild_rank_guild` SET `donate` = donate + "+@do_don+" WHERE `guild_id` = '"+@guild_id+"'"; set Zeny,Zeny - @do_don; set gld_don_delay,gettimetick(2) + 604800; // 1 Week Delay set last_gld,@guild_id; mes .@n$; mes "Thank you for your"; mes "donation."; close; // **********************************************************************// // // Adding Donation Limit \\ // // **********************************************************************// G_Donate_L: mes .@n$; mes "Type the minimum amount"; mes "Note: Highest is 10,000,000"; next; input @don_min; if(@don_min < 1 || @don_min > 10000000) close; mes .@n$; mes "Now the maximum amount:"; mes "Note: Highest is 10,000,000 too"; input @don_max; if(@don_max < @don_min || @don_max > 10000000) close; next; mes .@n$; mes "Result:"; mes "Minium: "+@don_min; mes "Maximum: "+@don_max; mes " "; mes "Correct?"; if(select("- Yes:- No") == 1) { query_sql "UPDATE `guild_rank_guild` SET `donate_min` = '"+@don_min+"' , `donate_max` = '"+@don_max+"' WHERE `guild_id` = '"+@guild_id+"'"; } close; // **********************************************************************// // // Guild Shop - using Donations \\ // // **********************************************************************// G_Shop: query_sql "SELECT `donate` FROM `guild_rank_guild` WHERE `guild_id` = '"+@guild_id+"'",@don_total; mes .@n$; mes "Hello Master,"; mes "how can I help you?"; mes "You guild members have donated "+@don_total+" Zeny so far."; next; menu "Open Shop",-,"Nothing",G_Quit; mes .@n$; mes "I will now open the shop for you."; mes "Note: The Skill Discount won't work here."; mes "The difference will be shown, but I will use the actual costs."; mes "Also it checks the Zeny in your inventory, so if you get enough"; mes "donations, but not enough Zeny with you, it could result in an error."; close2; // Don't enable these lines, NEVER!! Need a solution for this problem // set BkpZeny,Zeny; // A way to surprass the bug by having not enough Zeny with you even if he uses the donations? // if(@don_total > .don_limit) set Zeny,.don_limit; else set Zeny,@don_total; callshop "GUILD_SHOP",1; npcshopattach "GUILD_SHOP"; end; OnBuyItem: for( set @bid,0; @bid < getarraysize(@bought_nameid); set @bid,@bid + 1) { for( set @sid,0; @sid < getarraysize(.gshop_id); set @sid,@sid + 1) { if(.gshop_id[@sid] == @bought_nameid[@bid]) { set @cost_item,(.gshop_cost[@sid]*@bought_quantity[@bid]); set @cost_total,(@cost_total+@cost_item); break; } } } query_sql "SELECT `donate` FROM `guild_rank_guild` WHERE `guild_id` = '"+@guild_id+"'",@don_total; if(@cost_total > .don_limit) { dispbottom "I'm sorry, but you can't buy this much at once."; dispbottom "Maximum is " + .don_limit + " Zeny."; } else { if(@cost_total > @don_total) { dispbottom "You don't have enough Zeny."; } else { for( set @buy,0; @buy < getarraysize(@bought_nameid); set @buy,@buy + 1) { getitem @bought_nameid[@buy],@bought_quantity[@buy]; } dispbottom "Thank you for shopping."; dispbottom "You have used "+@cost_total+" Zeny of the Donations."; query_sql "UPDATE `guild_rank_guild` SET `donate` = `donate` - '"+@cost_total+"' WHERE `guild_id` = '"+@guild_id+"'"; } } set @cost_total,0; deletearray @bought_nameid[0],128; deletearray @bought_quantity[0],128; // Don't enable this line, NEVER!! Need a solution for this problem // if(BkpZeny != 0) { set Zeny,BkpZeny; set BkpZeny,0; } end; // **********************************************************************// // // Holiday List \\ // // **********************************************************************// G_Holiday: mes .@n$; mes "What do you like to do?"; next; switch(select("- Add:- Remove:- Show List:- Nothing")) { // **********************************************************************// // // Adding Member on the Holiday List \\ // // **********************************************************************// case 1: mes .@n$; mes "Type the member name you want to add:"; next; input @hl_name$; query_sql "SELECT `char_id` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `name` = '"+escape_sql(@hl_name$)+"'",@char_id; if(!@char_id) { mes .@n$; mes "The name you have put is wrong."; close; } query_sql "UPDATE `guild_rank_mem` SET `holiday` = '1' WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id+"'"; mes .@n$; mes "The member "+@hl_name$+" has been added to the \"Holiday List\"."; close; // **********************************************************************// // // Removing Member from the Holiday List \\ // // **********************************************************************// case 2: mes .@n$; mes "Select the member from the list"; mes "which you want to remove."; next; query_sql "SELECT `char_id` FROM `guild_rank_mem` WHERE `guild_id` = '"+@guild_id+"' AND `holiday` = '1'",@char_id; if(!@char_id) { mes .@n$; mes "There is no member in the list."; close; } query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id[0]+"'",@char_n$; set @menu$,"- "+@char_n$[0]; for( set @gm_s,1; @gm_s < getarraysize(@char_id); set @gm_s,@gm_s + 1) { query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id[@gm_s]+"'",@char_n$; set @menu$,@menu$ + ":- "+@char_n$[@gm_s]; } switch(prompt(@menu$)) { default: set @h,@menu - 1; mes .@n$; mes "You have chosen "+ @char_n$[@h]; mes " "; mes "Wanna remove him/her?"; if(select("- Yes:- No") == 2) close; next; query_sql "SELECT `char_id` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `name` = '"+escape_sql(@char_n$[@h])+"'",@char_id_n; query_sql "UPDATE `guild_rank_mem` SET `holiday` = '0' WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id_n+"'"; mes .@n$; mes "The member "+@char_n$[@h]+" has been removed from the List."; close; case 255: goto G_Quit; break; } // **********************************************************************// // // Showing Holiday List \\ // // **********************************************************************// case 3: mes .@n$; mes "These members has been"; mes "put on the list:"; next; query_sql "SELECT `char_id` FROM `guild_rank_mem` WHERE `guild_id` = '"+@guild_id+"' AND `holiday` = '1'",@char_id; if(!@char_id) { mes .@n$; mes "There is no member"; mes "in the list."; close; } query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id[0]+"'",@char_n$; mes @char_n$[0]; for( set @gm_s,1; @gm_s < getarraysize(@char_id); set @gm_s,@gm_s + 1) { query_sql "SELECT `name` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' AND `char_id` = '"+@char_id[@gm_s]+"'",@char_n$; mes @char_n$[@gm_s]; } close; case 4: goto G_Quit; break; } // **********************************************************************// // // Guild Registering \\ // // **********************************************************************// G_Register: mes .@n$; mes "You want to register your Guild for the our Ranking System?"; mes "^FF0000Note: This ranking will be permanent until you are disbanding the guild.^000000"; if(select("- Yes, please:- No, thanks") - 1) { close; } else { next; mes .@n$; mes "What type is your Guild?"; set @type,select("- WoE:- Non-WoE"); query_sql "INSERT INTO `guild_rank_guild` ( `guild_id` , `type` , `rank` , `woe` , `donate` , `donate_min` , `donate_max` ) VALUES ( '"+@guild_id+"' , '"+@type+"' , '0' , '0' , '0' , '0' , '0' )"; query_sql "SELECT `char_id` FROM `guild_member` WHERE `guild_id` = '"+@guild_id+"' ORDER BY `char_id` ASC",@char_id; for( set @g,0; @g < getarraysize(@char_id); set @g,@g+1) { query_sql "INSERT INTO `guild_rank_mem` ( `guild_id` , `char_id` , `holiday` ) VALUES ( '"+@guild_id+"' , '"+@char_id[@g]+"' , '0' )"; } close; } // **********************************************************************// // // GM Menu \\ // // **********************************************************************// G_GM: next; mes .@n$; mes "Hello "+strcharinfo(0)+","; if($gld_ranker_tbl) { mes "how can I help you?"; next; switch(select("- Guild Ranks:- Re-Check Rank List:- Delete Tables")) { case 1: query_sql "SELECT `guild_id` , `rank` , `woe` FROM `guild_rank_guild` WHERE `rank` > '0' ORDER BY `rank` DESC",.@r_gld,.@r_rank,.@r_woe; mes .@n$; mes "Only Guilds with Ranking Points will be displayed!"; if(.@r_gld[0] == 0) { mes "There is no guild to display."; close; } mes "The format of the list"; mes "will be like this:"; mes " "; mes " Guild Name: Points"; mes "===== Emp Breaks: ==="; mes "x"; mes "*******************"; for( set @r,0; @r < getarraysize(.@r_gld); set @r,@r + 1) { next; mes getguildname(.@r_gld[@r])+": "+.@r_rank; mes "===== Emp Breaks: ==="; mes .@r_woe[@r]; mes "*******************"; } close; case 2: mes .@n$; mes "I will now re-check the Ranking Status for all guilds."; close2; doevent "GuildRanks#Events::OnRankCheck"; end; case 3: mes .@n$; mes "Are you sure to delete everything?"; next; if(select("- Delete:- Nevermind") - 1) { close; } else { close2; query_sql "DROP TABLE IF EXISTS `guild_rank_guild`"; query_sql "DROP TABLE IF EXISTS `guild_rank_mem`"; disablenpc "GuildRanks#Events"; announce "The Guild Ranking System is offline.",0,0xFF0000; set $gld_ranker_tbl,0; end; } } } else { mes "I'm sorry, but the ranking has not been activated yet,"; mes "but it's also necessary to install the required entries in"; mes "your database."; next; mes .@n$; mes "First I will check if you installed it through the entries at the top of the script file."; mes "Then I will activate it."; mes "If that is not the case, I will install and activate the system for you if you want."; next; query_sql "SHOW TABLES LIKE 'guild_rank_guild'",.@c_tbl$; if(.@c_tbl$[0] == "") { mes .@n$; mes "Result:"; mes "The entries are not yet installed wanna install them?"; next; if(select("- Install it~:- Na, it would fail!") - 1) { mes .@n$; mes "How do you wanna know without installing it!!"; emotion e_bzz; percentheal -99,-99; close2; sleep2 2000; percentheal 100,100; end; } else { mes .@n$; mes "Here we go~"; //= Member Table: query_sql "CREATE TABLE `guild_rank_mem` ( `char_id` int(10) , `guild_id` smallint(5) , `rank` smallint(5) , `woe` smallint(5) , `donate` int(11) , `donate_am` int(11) , `holiday` smallint(5) )"; //= Guild Table: query_sql "CREATE TABLE `guild_rank_guild` ( `guild_id` smallint(5) , `type` smallint(5) , `rank` smallint(5) , `woe` smallint(5) , `donate` int(11) , `donate_min` int(11) , `donate_max` int(11) )"; enablenpc "GuildRanks#Events"; announce "The Guild Ranking System is online.",0,0x00FF00; set $gld_ranker_tbl,1; close; } } else { mes .@n$; mes "It seems like the entries has been installed,"; mes "then I will activate the system if you want."; if(select("- Please proceed~:- Stop please") - 1) { close; } else { enablenpc "GuildRanks#Events"; announce "The Guild Ranking System is online.",0,0x00FF00; set $gld_ranker_tbl,1; close; } } } // **********************************************************************// // // Closing Message \\ // // **********************************************************************// G_Quit: mes .@n$; mes "See ya again."; close; G_Array: set @r_menu$,""; set .@rew_it_list$,""; deletearray .@c_tbl$[0],getarraysize(.@c_tbl$); deletearray @gld_mem$[0],getarraysize(@gld_mem$); deletearray @char_id[0],getarraysize(@char_id); deletearray @donate[0],getarraysize(@donate); deletearray @donate_am[0],getarraysize(@donate_am); deletearray @woe[0],getarraysize(@woe); deletearray @rank[0],getarraysize(@rank); deletearray .@r_gld[0],getarraysize(.@r_gld); deletearray .@r_rank[0],getarraysize(.@r_rank); deletearray .@r_woe[0],getarraysize(.@r_woe); return; OnInit: // Guild Rewards: // .rew_woe: Item ID, when you put 1 it will give Zeny as Reward. // .rew_woe_am: Amount of the Items or Zeny. // .rew_woe_need: The points needed // For Emp Breaking setarray .rew_woe[0],1,969; setarray .rew_woe_am[0],50000,10; setarray .rew_woe_need[0],1,5; // Maximum Zeny for Donation Account set .don_limit,2000000000; // 2b Zeny // Attaching Items To the Shop npcshopdelitem "GUILD_SHOP",512; setarray .gshop_id[0],7619,7620; setarray .gshop_cost[0],200000,200000; for ( set .@s,0; .@s < getarraysize(.gshop_id); set .@s,.@s + 1 ) { npcshopadditem "GUILD_SHOP",.gshop_id[.@s],.gshop_cost[.@s]; } end; }} // End function [Error]: npc_parsesrcfile: Unknown syntax in file 'npc/AGNRO/ingame-npc/breaker-ladder.txt', line '165'. Stopping... * w1=end; * w2= * w3= * w4= - i don't know what to change on end. because when i tried something in end command the next line will be error bump please ~ anyone can help please?
×
×
  • Create New...