Jump to content

mawjustin

Members
  • Posts

    124
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by mawjustin

  1. Hi Team, May I ask for assistance on this concern? In my db/re/mob_db.txt this is my Osiris. 1038,OSIRIS,Osiris,Osiris,68,475840,1,245520,200880,1,1980,1503,172,164,97,99,86,131,145,67,10,12,1,1,89,0x6283695,100,1072,672,384,122760,751,500,603,4000,608,3000,617,2000,1232,150,2235,200,1255,600,1009,1000,5053,150,1285,100,0,0,0,0,4144,1 But all of it is not showing. MVP Items is only showing Osiris Doll. Where it should give OBB, YGG Seed and Osiris Doll. This is my conf/battle/drops.conf //-------------------------------------------------------------- // rAthena Battle Configuration File // Originally Translated by Peter Kieser <[email protected]> // Made in to plainer English by Ancyker //-------------------------------------------------------------- // Note 1: Value is a config switch (on/off, yes/no or 1/0) // Note 2: Value is in percents (100 means 100%) //-------------------------------------------------------------- // If an item is dropped, does it go straight into the user's inventory? (Note 1) item_auto_get: no // How long does it take for an item to disappear from the floor after it is dropped? (in milliseconds) flooritem_lifetime: 60000 // Grace time during which only the person who did the most damage to a monster can get the item? (in milliseconds) item_first_get_time: 3000 // Grace time during which only the first and second person who did the most damage to a monster can get the item? (in milliseconds) // (Takes effect after item_first_get_time elapses) item_second_get_time: 1000 // Grace time during which only the first, second and third person who did the most damage to a monster can get the item? (in milliseconds) // (Takes effect after the item_second_get_time elapses) item_third_get_time: 1000 // Grace time to apply to MvP reward items when the Most Valuable Player can't get the prize item and it drops on the ground? (in milliseconds) mvp_item_first_get_time: 10000 // Grace time for the first and second MvP so they can get the item? (in milliseconds) // (Takes effect after mvp_item_first_get_time elapses) mvp_item_second_get_time: 10000 // Grace time for the first, second and third MvP so they can get the item? (in milliseconds) // (Takes effect after mvp_item_second_get_time elapses) mvp_item_third_get_time: 2000 // Item drop rates (Note 2) // The rate the common items are dropped (Items that are in the ETC tab, besides card) item_rate_common: 2500 item_rate_common_boss: 2500 item_rate_common_mvp: 2500 item_drop_common_min: 1 item_drop_common_max: 10000 // The rate healing items are dropped (items that restore HP or SP) item_rate_heal: 2500 item_rate_heal_boss: 2500 item_rate_heal_mvp: 2500 item_drop_heal_min: 1 item_drop_heal_max: 10000 // The rate at which usable items (in the item tab) other then healing items are dropped. item_rate_use: 2500 item_rate_use_boss: 2500 item_rate_use_mvp: 2500 item_drop_use_min: 1 item_drop_use_max: 10000 // The rate at which equipment is dropped. item_rate_equip: 2500 item_rate_equip_boss: 2500 item_rate_equip_mvp: 2500 item_drop_equip_min: 1 item_drop_equip_max: 10000 // The rate at which cards are dropped item_rate_card: 2500 item_rate_card_boss: 2500 item_rate_card_mvp: 2500 item_drop_card_min: 1 item_drop_card_max: 100000 // The rate adjustment for the MVP items that the MVP gets directly in their inventory // Mode: 0 - official order, 1 - random order, 2 - all items item_rate_mvp: 2500 item_drop_mvp_min: 1 item_drop_mvp_max: 10000 item_drop_mvp_mode: 0 // The rate adjustment for card-granted item drops. item_rate_adddrop: 2500 item_drop_add_min: 1 item_drop_add_max: 10000 // Rate adjustment for Treasure Box drops (these override all other modifiers) item_rate_treasure: 2500 item_drop_treasure_min: 1 item_drop_treasure_max: 1000 // Use logarithmic drops? (Note 1) // Logarithmic drops scale drop rates in a non-linear fashion using the equation // Droprate(x,y) = x * (5 - log(x)) ^ (ln(y) / ln(5)) // Where x is the original drop rate and y is the drop_rate modifier (the previously mentioned item_rate* variables) // Use the following table for an idea of how the rate will affect drop rates when logarithmic drops are used: // Y: Original Drop Rate // X: Rate drop modifier (eg: item_rate_equip) // X\Y | 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.00 20.00 // -----+--------------------------------------------------------------- // 50 | 0.01 0.01 0.03 0.06 0.11 0.30 0.62 1.30 3.49 7.42 15.92 // 100 | 0.01 0.02 0.05 0.10 0.20 0.50 1.00 2.00 5.00 10.00 20.00 // 200 | 0.02 0.04 0.09 0.18 0.35 0.84 1.61 3.07 7.16 13.48 25.13 // 500 | 0.05 0.09 0.22 0.40 0.74 1.65 3.00 5.40 11.51 20.00 33.98 // 1000 | 0.10 0.18 0.40 0.73 1.30 2.76 4.82 8.28 16.47 26.96 42.69 // 2000 | 0.20 0.36 0.76 1.32 2.28 4.62 7.73 12.70 23.58 36.33 53.64 // 5000 | 0.50 0.86 1.73 2.91 4.81 9.11 14.45 22.34 37.90 53.91 72.53 //10000 | 1.00 1.67 3.25 5.28 8.44 15.24 23.19 34.26 54.57 72.67 91.13 //20000 | 2.00 3.26 6.09 9.59 14.83 25.49 37.21 52.55 77.70 97.95 100% //50000 | 5.00 7.87 13.98 21.12 31.23 50.31 69.56 92.48 100% 100% 100% item_logarithmic_drops: no // Can the monster's drop rate become 0? (Note 1) // Default: no (as in official servers). drop_rate0item: no // Increase item drop rate +0.01%? (Note 1) // On official servers it is possible to get 0.00% drop chance so all items are increased by 0.01%. // NOTE: This is viewed as a bug to rAthena. // Default: no drop_rateincrease: no // Makes your LUK value affect drop rates on an absolute basis. // Setting to 100 means each luk adds 0.01% chance to find items // (regardless of item's base drop rate). drops_by_luk: 0 // Makes your LUK value affect drop rates on a relative basis. // Setting to 100 means each luk adds 1% chance to find items // (So at 100 luk, everything will have double chance of dropping). drops_by_luk2: 0 // The rate of monsters dropping ores by the skill Ore Discovery (Default is 100) finding_ore_rate: 100 // Whether or not Marine Spheres and Floras summoned by Alchemist drop items? // This setting has three available values: // 0: Nothing drops. // 1: Only marine spheres drop items. // 2: All alchemist summons drop items. alchemist_summon_reward: 1 // Make broadcast ** Player1 won Pupa's Pupa Card (chance 0.01%) *** // This can be set to any value between 0~10000. // Note: It also announces STEAL skill usage with rare items // 0 = don't show announces at all // 1 = show announces for 0.01% drop chance items // 333 = show announces for 3.33% or lower drop chance items // 10000 = show announces for all items rare_drop_announce: 500 // Does autoloot take into account player bonuses and penalties? (Note 1) // If RENEWAL_DROP, Bubble Gum, or any other modifiers are active autoloot // will take them into account. autoloot_adjust: 0 Thank you.
  2. this is good.. ill add this.. thanks!
  3. aside from these?? I'm using them right now. hehe
  4. May I ask for mobs and loots suggestions for quest aside from the rare ores? (biotite, phologphite, etc.) I'm looking for mobs that have a low respawn rate, or there are only 5-10 of them in each map. Thank you in advance!
  5. Thank you! it works! I just did a bit of modification to align with my server. @Emistry sir, I did some changes in your file, how do we implement this? jupe_ele,38,50,5 script Tollere#1 4_F_KAFRA1,{ // // THIS WILL READ ALL THE ITEMS AVAILABLE, INCLUDING SHADOW EQUIPMENT for (.@eqi = EQI_SHOES; .@eqi <= EQI_SHADOW_ACC_L; .@eqi++) { .@equip_id = getequipid(.@eqi); if (.@equip_id > 0) .@menu$ = .@menu$ + getitemname(.@equip_id) + " ["+getitemslots(.@equip_id)+"]"; .@menu$ = .@menu$ + ":"; } mes .npc_n$; mes "Hello Adventurer!"; mes "my name is Tollere "; mes "I specialize in removing ^006600Enchantment^000000 and ^006600Random Option^000000"; mes "using ^FF0000"+getitemname(.itemid)+"^000000."; mes "which process do you need?"; // RESET ENCHANTMENT = REMOVE STONE/ORBS ON CARD SLOT, BUT RETAIN RANDOM OPTION // RANDOM OPTION REMOVAL = REMOVE RANDOM OPTION, BUT RETAIN THE ORBS/STONE ON CARD SLOT if (select("Reset Enchantment","Random Option Removal") == 1) { next; mes "Select an equipment for"; mes "^006600Enchant Removal^000000"; .@eqi = select(.@menu$) - 1 + EQI_SHOES; mes "Equip: "+getitemname(getequipid(.@eqi)); if (.itemid_size) { mes "Required Items:"; for (.@i = 0; .@i < .itemid_size; .@i++) { mes " -> "+F_InsertComma(.amount[.@i])+"x "+getitemname(.itemid[.@i]); if (countitem(.itemid[.@i]) < .amount[.@i]) .@fail++; } } if (!.@fail) { if (select("Reset Enchantment", "Cancel") == 1) { for(.@ii=0;.@ii<(MAX_ITEM_RDM_OPT-0);.@ii++){ .@r_id[.@ii] = getequiprandomoption(.s_all_loc[.@eqi],.@i,ROA_ID); .@r_v[.@ii] = getequiprandomoption(.s_all_loc[.@eqi],.@i,ROA_VALUE); .@r_p[.@ii] = getequiprandomoption(.s_all_loc[.@eqi],.@i,ROA_PARAM); } for (.@i = 0; .@i < .itemid_size; .@i++) delitem .itemid[.@i], .amount[.@i]; .@equip_id = getequipid(.@eqi); .@refine = getequiprefinerycnt(.@eqi); for (.@i = 0; .@i < 4; .@i++) .@card[.@i] = getequipcardid(.@eqi, .@i); delequip .@eqi; //getitem2 .@equip_id, 1, 1,.@refine,0,0,0,0,0; getitem3 .@equip_id, 1, 1, .@refine, 0, 0, 0, 0, 0,.@r_id,.@r_v,.@r_p; getitem .@card[0],1; getitem .@card[1],1; getitem .@card[2],1; getitem .@card[3],1; mes "Done Reset Enchantment."; } } close; } else { next; mes "Select an equipment for"; mes "^006600Random Option Removal^000000"; .@eqi = select(.@menu$) - 1 + EQI_SHOES; mes "Equip: "+getitemname(getequipid(.@eqi)); if (.itemid_size) { mes "Required Items:"; for (.@i = 0; .@i < .itemid_size; .@i++) { mes " -> "+F_InsertComma(.amount[.@i])+"x "+getitemname(.itemid[.@i]); if (countitem(.itemid[.@i]) < .amount[.@i]) .@fail++; } } if (!.@fail) { if (select("Random Option Removal", "Cancel") == 1) { for (.@i = 0; .@i < .itemid_size; .@i++) delitem .itemid[.@i], .amount[.@i]; .@equip_id = getequipid(.@eqi); .@refine = getequiprefinerycnt(.@eqi); for (.@i = 0; .@i < 4; .@i++) .@card[.@i] = getequipcardid(.@eqi, .@i); delequip .@eqi; getitem2 .@equip_id, 1, 1,.@refine,0,.@card[0],.@card[1],.@card[2],.@card[3]; mes "Done Random Option Removal."; } } close; } close; OnInit: .npc_n$ = "[^4B0082 Tollere ^000000]"; // NPC Name. setarray .itemid, 60002; setarray .amount, 1; .itemid_size = getarraysize(.itemid); end; } My goal for this is 1. Reset Enchantment = will remove and put the orbs/stones into the inventory in all card slot of the item, but will retain the Random Option 2. Random Option Removal = will remove the random option, but will retain the orb/stone in card slot. Is there a way to do it like my goal??
  6. Thank you, I'll test this out. EDIT @Patskie it's not giving rewards..
  7. May I ask for assistance on how to limit Bounty Hunter Abuse? This script is from @deathscythe13 Player can only be listed in bounty 1x a day. Kill Streak must be unique Player ID. Or Set timer per kill for the same ID. //made by deathscythe13 - script Bounty -1,{ OnInit: set $wantedlistlength,10; // bounty length set .rewarditem, 50000; //reward item id set .killstreak, 10; // kill streak before gets to bounty end; OnPCKillEvent: getmapxy.@map$,.@x,.@y,0; if(getcharid(3)==killedrid) end; //if(.@map$ != "guild_vs5") end; for(set .@i,0; .@i < $wantedlistlength && rid2name(killedrid)!=$wantedlist$[.@i]; set .@i, .@i+1); if(.@i < $wantedlistlength && rid2name(killedrid)==$wantedlist$[.@i]) { set .@price , 3 - (.@i); // amount of reward (i dunnoe the calc sorry) getitem .rewarditem,.@price; dispbottom "You have killed a bounty!"; for(set .@remove,.@i; .@remove < $wantedlistlength; set .@remove, .@remove+1) { set $wantedlist$[.@remove], $wantedlist$[.@remove+1]; set $wantedliststreak[.@remove], $wantedliststreak[.@remove+1]; } announce rid2name(killedrid)+" has been removed in the bounty list!",0; } else { set killerstreak, killerstreak+1; dispbottom "Kill Streak: "+killerstreak; } if(killerstreak >= .killstreak) { for(set .@i, 0; .@i < $wantedlistlength && $wantedliststreak[.@i] > killerstreak; set .@i, .@i+1); if(.@i < $wantedlistlength && killerstreak >= $wantedliststreak[.@i]) { for(set .@x ,0; .@x < $wantedlistlength && $wantedlist$[.@x]!=strcharinfo(0); set .@x, .@x+1); if(.@x < $wantedlistlength && $wantedlist$[.@x]==strcharinfo(0)) { for(set .@already, .@x; .@already < $wantedlistlength; set .@already, .@already+1) { set $wantedlist$[.@already], $wantedlist$[.@already+1]; set $wantedliststreak[.@already], $wantedliststreak[.@already+1]; } } for(set .@x, ($wantedlistlength-1); .@x > .@i ; set .@x, .@x-1) { set $wantedlist$[.@x], $wantedlist$[.@x-1]; set $wantedliststreak[.@x], $wantedliststreak[.@x-1]; } announce strcharinfo(0)+" is now in bounty list top "+(.@i+1)+"!",0; set $wantedlist$[.@i], strcharinfo(0); set $wantedliststreak[.@i], killerstreak; } } attachrid(killedrid); if(killerstreak) { set killerstreak, 0; dispbottom "Your streak has been reset because you died!"; } end; } moc_para01,48,179,3 script Wanted List 837,{ mes "[^4B0082 Wanted List ^000000]"; mes "Announcement:"; mes "This is the current Wanted List."; mes "Anyone who can kill any of these"; mes "people will be reward with "+getitemname(50000)+""; next; mes "[^4B0082 Wanted List ^000000]"; mes "Current Wanted List"; mes ""; for (set .@i,0; .@i < $wantedlistlength; set .@i, .@i+1) { set .@no, .@i+1; mes .@no+".) "+$wantedlist$[.@i]+" Streak: "+$wantedliststreak[.@i]; } next; mes "[^4B0082 Wanted List ^000000]"; mes "Happy hunting."; close; }
  8. Similar Race of the Day, may I ask for Monster of the Day? A specific monster with increased XP, gives zeny, and custom item drop, similar to Race of the Day.
  9. Hi guys, may I ask for a script that removes all Random Option of an item in exchange for a certain item? Thanks!
  10. Thank you for the answers guys, this had me thinking about this. I will look for a way to implement this properly.
  11. I want the players to use zeny as main mode of trading, instead of directly using Proof of Donation as main currency. I'm following this concept. Check at 5:02
  12. Is there a possibility to do this? Make an item account bound, which in essence cannot be traded, or stored in guild storage, but can be vended. I'm trying to materialize a flow like this: 1. Buy proof of donation 2. Proof of donation is Account Bound. 3. Proof of donation Cannot be traded. 4. But, Proof of donation can be vended using Vend skill. I'm trying to force players into using zeny as the main currency and avoid using Proof of donation as main currency.
  13. But it does not allow vend. ? what I need is for it to be vendable, but not tradeable and dropable.
  14. Hello guys, I set my item in item_trade.txt as this: 50000,459,100 // Cash Coin It can't be dropped, traded, etc. but it can be stored in vend, unfortunately I can't vend it either. i understand that in item_trade.txt there's : // 2 - item can't be traded (nor vended) // 16 - item can't be placed in the cart so I set it to cant be tradable but can be placed in cart. Is there a way for us to somewhat bypass vend restriction when you have a certain item in your inventory? So it will make a Non-tradable, but Vendable item? Thanks.
  15. Can we separate PK Points and PVP Points? This is the PVP Points that I have. - script PVPPOINTS -1,{ OnPCKillEvent: getmapxy.@map$,.@x,.@y,0; if(getcharid(3)==killedrid) end; if(.@map$ != "pvp_y_1-2") end; set .@player1, getcharid(3); set .@player2, killedrid; attachrid(.@player2); set .@player2points, #CASHPOINTS; if(.@player2points) { set #CASHPOINTS, #CASHPOINTS - 1; dispbottom "You Lost 1 Cash Point from "+rid2name(killerrid); } emotion e_sob,1; attachrid(.@player1); if(.@player2points) { set #CASHPOINTS, #CASHPOINTS + 1; dispbottom "You Gained 1 Cash Points from "+rid2name(killedrid); } else dispbottom "Sorry no cash points on the "+rid2name(killedrid); emotion e_meh,1; end; } The PVP Ladder //===== EinherjarRo Scripts ================================== //= PvP Ladder //===== Author =============================================== //= Stolao //===== Current Version: ===================================== //= 3.21 //===== Compatible With: ===================================== //= rAthena SVN //===== Description: ========================================= // Configurable Pvp Ladder //===== Comments: ============================================ //= [Stolao] //===== Additional Comments: ================================= //= 3.00 Overhaul //= 3.01 Fixed missing "No" for "No Ygg" //= 3.02 Added Show Map Name Option //= 3.03 Added Max Players Option //= 3.04 Optimized and fixed SQL queries [Secret] //= 3.05 Replaced some queries with addrid(0) //= 3.06 Updated Rewards to RODEX compatable //= 3.07 Fixed all rom referancing room [0] player limit //= 3.08 Made Made .MaxPlayers = 0, mean unlimited //= 3.09 Removed use of getd //= 3.0A Cleaned up some code //= 3.0B Moved Menu Generation to fix Map Count not showing //= 3.0C Actually Added RoDex Support now //= 3.0D Fixed Map Menu Generation //= 3.0E Fixed sql query //= 3.0F Cleaned Code a bit //= 3.10 Did more Cleaned Code a bit //= 3.11 Fixed a logic bug in GM reset //= 3.12 Added Waiting Room //= 3.13 Added Dynamic Waiting Room //= 3.14 Moved and added more At_Commands //= 3.15 Dynamic Waiting Room (&4096) require Waiting Room (&2048) to work //= 3.16 Increased Waiting Room Rotation Time //= 3.17 Fixed Typos in Reset PVP Stats //= 3.18 Removed unnessisary next, creating hang screens //= 3.19 Made compatable with new mail command //= 3.1A Reformatted Rewards in conf to support 5 items //= 3.1B Fixeda Hang when entering Nightmare PVP (thanks klesler) //= 3.1C Cied incorrrect use of close //= 3.1D Fixed Missing Party Check (thanks Haikenz) //= 3.1E Fixed Not opening PVP ladder, only GVG ladder (thanks Haikenz) //= 3.1F Fixed a warning when generating waitingroom //= 3.20 Fixed Missing Guild Check (thanks Haikenz) //= 3.21 Changed Default maps to pvp maps //===== Todo: ================================================ //= Condence repeat queries //===== Contact Ifo: ========================================= //= [Stolao] // Email: [email protected] //============================================================ moc_para01,26,14,3 script Ladder 837,{ //================================== OnPvpLadder: //-- Menus //================================== .@Menu = select(((getarraysize(.MapName$))?"Enter PvP Map:":":")+ ((.Options&1)?"Pvp Ladder:":":")+ ((.Options&2)?"GvG Ladder:":":")+ ((.Options&8)?"Top Guild:":":")+ ((.Options&16)?"PvP Shops:":":")+ ((.Options&1 || .Options&2 || .Options&8 || .Options&16)?"Personal Stats:":":")+ ((getgmlevel() >= 99)?"Reset PVP Stats":"")); switch(.@Menu){ case 2: case 3: if(.@Menu == 2){ if(.Options&384) .@key$ = "m_kda"; else if(.Options&256) .@key$ = "kda"; else if(.Options&128) .@key$ = "m_pkcount"; else .@key$ = "pl_pkcount"; } else { if(.Options&384) .@key$ = "gvg_kda"; else if(.Options&256) .@key$ = "m_gvg_kda"; else if(.Options&128) .@key$ = "m_gvg_kcount"; else .@key$ = "gvg_kcount"; } query_sql("SELECT `char_reg_num`.`value`,`char`.`name`,`char`.`char_id` FROM `char` INNER JOIN `char_reg_num` ON `char_reg_num`.`char_id`=`char`.`char_id` WHERE `char_reg_num`.`key`='" + .@key$ + "' ORDER BY `char_reg_num`.`value` DESC LIMIT 10",.@value,.@name$,.@cid); if(!(.Options&256)){ for(.@i = 0; .@i < getarraysize(.@cid); .@i++) { if(.@i == 2){ if(.Options&128) .@key$ = "m_dthcount"; else .@key$ = "pl_dthcount"; } else if(.Options&128) .@key$ = "m_gvg_dcount"; else .@key$ = "gvg_dcount"; query_sql("SELECT CAST(`value` AS SIGNED) FROM `char_reg_num` WHERE char_id = "+.@cid[.@i]+" AND `key` = '';",.@j); .@Death[.@i] = .@j; } } mes "~ ^990000"+((.Options&128)?"Monthly ":"") + ((.@Menu == 2)?"PvP":"GvG") +" Ladder^000000 ~"; if (!getarraysize(.@cid)){ mes "The rankings are empty."; } else { for(.@i = 0; .@i<getarraysize(.@cid); .@i++){ if((.@i+1) % 10 != 0){ if(.Options&256) mes "#"+(.@i+1)+" ^0000FF"+.@name$[.@i]+"^000000 "+.@value[.@i]; else mes "#"+(.@i+1)+" ^0000FF"+.@name$[.@i]+"^000000 [^00EE00"+callfunc("F_InsertPlural",.@value[.@i],"~ kill")+"] [^EE0000"+callfunc("F_InsertPlural",.@Death[.@i],"~ death")+"]"; } else next; } } close; case 4: if(.Options&256) .@key$ = "Guild_Kda"; else .@key$ = "Guild_Kills"; if(.Options&128) .@key$ = "$M_" + .@key$; else .@key$ = "$" + .@key$; query_sql("SELECT `index`, CAST(`value` AS SIGNED) FROM `global_acc_reg_num` WHERE `key` = '" + .@key$ + "' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT 10",.@gid,.@value); if (!getarraysize(.@gid)){ mes "The rankings are empty."; } else { for(.@i = 0; .@i < getarraysize(.@gid); .@i++){ //query_sql("SELECT `value` FROM `global_acc_reg_num` WHERE `index` = "+.@gid[.@i]+";",.@j$); // ??? [Secret] mes "#"+(.@i+1)+" ^0000EE["+getguildname(.@gid[.@i])+"]^000000 with [^00EE00"+callfunc("F_InsertPlural",$Guild_Kills[.@gid[.@i]],"~ kill")+"] and [^EE0000"+callfunc("F_InsertPlural",$Guild_Deaths[.@gid[.@i]],"~ death")+"]"; } } close; case 5: callshop "PvP_Cash_Shop",1; end; case 6: if(.Options&1){ mes "[PvP]"; mes "Lifetime:","^00EE00"+ callfunc("F_InsertPlural",pl_pkcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",pl_dthcount,"death") + ((.Options&256)?" - ^0000EE"+ kda +" Total":"") +"^000000"; if(.Options&128) mes "Monthly:","^00EE00"+ callfunc("F_InsertPlural",m_pkcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",m_dthcount,"death") + ((.Options&256)?" - ^0000EE"+ m_kda +" Total":"") +"^000000"; } if(.Options&16) mes "You Have "+ #PvpPoints +" Spendable Points"; if(.Options&2){ if(.Options&1) next; mes "[GvG]"; mes "Lifetime:","^00EE00"+ callfunc("F_InsertPlural",gvg_kcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",gvg_dcount,"death")+((.Options&256)?" - ^0000EE"+ gvg_kda +" Total":"")+"^000000"; if(.Options&128) mes "Monthly:","^00EE00"+ callfunc("F_InsertPlural",m_gvg_kcount,"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",m_gvg_dcount,"death") + ((.Options&256)?" - ^0000EE"+ m_gvg_kda +" Total":"") +"^000000"; } if(.Options&8 && getcharid(2)){ if(.Options&2 || .Options&3) next; mes "[Guild Stats]"; mes "Lifetime:","^00EE00"+ callfunc("F_InsertPlural",$Guild_Kills[getcharid(2)],"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",$Guild_Deaths[getcharid(2)],"death") + ((.Options&256)?" - ^0000EE"+ $Guild_Kda[getcharid(2)] +" Total":"")+ "^000000"; if(.Options&128) mes "Monthly:","^00EE00"+ callfunc("F_InsertPlural",$M_Guild_Kills[getcharid(2)],"kill") +"^000000 - ^EE0000"+ callfunc("F_InsertPlural",$M_Guild_Deaths[getcharid(2)],"death") + ((.Options&256)?" - ^0000EE"+ $M_Guild_Kda[getcharid(2)] +" Total":"") +"^000000"; } close; case 7: .@i = select("Monthly:Lifetime") - 1; .@L$[0] = (.Options&1)?"Pvp Ladder":""; .@L$[1] = (.Options&2)?"GvG Ladder":""; .@L$[2] = (.Options&8)?"Top Guild":""; .@j = select(implode(.@L$,":")) - 1; mes "Are you sure you want to reset this the "+((.@i)?"Lifetime":"Monthly")+" "+.@L$[.@j]+"?"; if(select("No:Yes")!=2) close; close2; switch(.@i * 3 + .@j){ case 0: query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'm_pkcount' OR `key` = 'm_kda' OR `key` = 'pl_dthcount'"); addrid(0); m_pkcount = m_kda = m_dthcount = 0; break; case 1: query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'pl_pkcount' OR `key` = 'kda' OR `key` = 'pl_dthcount'"); addrid(0); pl_pkcount = kda = pl_dthcount = 0; break; case 2: query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'm_gvg_kcount' OR `key` = 'm_gvg_kda' OR `key` = 'm_gvg_dcount'"); addrid(0); m_gvg_kcount = m_gvg_kda = m_gvg_dcount = 0; break; case 3: query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'gvg_kcount' OR `key` = 'gvg_kda' OR `key` = 'gvg_dcount'"); addrid(0); gvg_kcount = gvg_kda = gvg_dcount = 0; break; case 4: cleararray $M_Guild_Kills[0],0,getarraysize($M_Guild_Kills); cleararray $M_Guild_Kda[0],0,getarraysize($M_Guild_Kda); cleararray $M_Guild_Deaths[0],0,getarraysize($M_Guild_Deaths); break; case 5: cleararray $Guild_Kills[0],0,getarraysize($Guild_Kills); cleararray $Guild_Kda[0],0,getarraysize($Guild_Kda); cleararray $Guild_Deaths[0],0,getarraysize($Guild_Deaths); break; } end; case 1: //===== Dont Touch - Menu Generation ====================== for(.@i = 0; .@i < getarraysize(.MapName$); .@i++){ .@MapList$[.@i] = "["+ ((.MapMode[.@i]&2)?"^EE3333Nightmare ":"") + ((.MapMode[.@i]&4)?"Party ":"") + ((.MapMode[.@i]&1)?"GvG":"PvP") +"^000000] "+ ((.MapMode[.@i] >= 8)?"No ":"") + ((.MapMode[.@i]&8)?"Ygg ":"") + ((.MapMode[.@i]&16)?"3rds ":"") + ((.MapMode[.@i]&32)?"Trans ":"") + ((.MapMode[.@i]&64)?.MapName$[.@i]:"") + ((.MaxPlayers[.@i])?"["+getmapusers(.MapName$[.@i])+"/"+.MaxPlayers[.@i]+"]":""); } //========================================================== .@m = select(implode(.@MapList$,":")) - 1; if(.MapMode[.@m]&2){ mes "You are about to enter NIGHTMARE PvP, on death you will lose gear randomly."; if(select("Nevermind:Continue") == 1) close; } else if(.MapMode[.@m]&8 && (countitem(607) || countitem(608))){ mes "No "+getitemname(607)+" or "+getitemname(608)+" Allowed."; close; } else if(.MapMode[.@m]&16){ mes "No 3rd Classes Allowed."; close; } else if(.MapMode[.@m]&32){ mes "No Trans Classes Allowed."; close; } else if(.MaxPlayers[.@m] && getmapusers(.MapName$[.@m]) >= .MaxPlayers[.@m]){ mes "Room is Full."; close; } else if(.MapMode[.@m]&4 && getcharid(1) <= 0 ){ mes "You must be in a Party to join."; close; } else if(.MapMode[.@m]&1 && getcharid(2) <= 0 ){ mes "You must be in a Guild to join."; close; } announce "[ PvP Warper ] "+strcharinfo(0)+" has entered in "+((.MapMode[.@m]&1)?"GvG":"PvP")+" Room",0,((.MapMode[.@m]&1)?0x00CC99:0xEE0000); warp .MapName$[.@m],0,0; } end; //================================== OnPCKillEvent: //-- Adding Stats //================================== if(!getgmlevel() || .Options&512){ if(LastPK == killedrid) RepeatKill++; else { LastPK = killedrid; RepeatKill = 0; } if(.Options&4) announce "[PVP]: "+strcharinfo(0)+" has slain "+ rid2name(LastPK) + ((RepeatKill)?" for the "+callfunc("F_GetNumSuffix",RepeatKill)+" time in a row":"") +".",bc_all; if((RepeatKill < .RepeatCount && .Options&32) || !.Options&32){ if(.Options&1) pl_pkcount++; if(.Options&129) m_pkcount++; if(.Options&257) kda++; if(.Options&385) m_kda++; if(.Options&16) #PvpPoints++; if((getmapflag(strcharinfo(3),MF_GVG) || getmapflag(strcharinfo(3),MF_GVG_NOPARTY)) && (agitcheck() || agitcheck2()) && getcharid(2) && .Options&2){ gvg_kcount++; if(.Options&128) m_gvg_kcount++; if(.Options&256) gvg_kda++; if(.Options&384) m_gvg_kda++; if(.Options&8) $Guild_Kills[getcharid(2)]++; if(.Options&136) $M_Guild_Kills[getcharid(2)]++; if(.Options&256) $Guild_Kda[getcharid(2)]++; if(.Options&264) $M_Guild_Kda[getcharid(2)]++; } attachrid(LastPK); if(.Options&1) pl_dthcount++; if(.Options&129) m_dthcount++; if(.Options&257) kda -= 1; if(.Options&385) m_kda -= 1; if((getmapflag(strcharinfo(3),MF_GVG) || getmapflag(strcharinfo(3),MF_GVG_NOPARTY)) && (agitcheck() || agitcheck2()) && getcharid(2) && .Options&2){ gvg_dcount++; if(.Options&128) m_gvg_dcount++; if(.Options&258) gvg_kda -= 1; if(.Options&384) m_gvg_kda -= 1; if(.Options&8) $Guild_Deaths[getcharid(2)]++; if(.Options&136) $M_Guild_Deaths[getcharid(2)]++; if(.Options&256) $Guild_Kda[getcharid(2)] -= 1; if(.Options&264) $M_Guild_Kda[getcharid(2)] -= 1; } } else if(.Options&1024) atcommand "@request [PvP Ladder]: "+strcharinfo(0)+" is showing signs of abusing the PvP Ladder Please Investigate"; if(.Options&64) warp "Save",0,0; } end; //================================== OnHour00: //-- Monthly Rewards //================================== if(gettime(5) == 1 && .Options&128 && .MailType){ if(.RewardType&1 && .Options&1){ query_sql("SELECT char_id,`char`.name,CAST(`value` AS SIGNED) FROM `char_reg_num` INNER JOIN `char` ON `char`.char_id = `char_reg_num`.char_id WHERE `key` = '"+((.Options&256)?"m_kda":"m_pkcount")+"' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT "+getarraysize(.PVP_Items$)+"",.@cid,.@name$,.@value); for(.@i = 0; .@i< getarraysize(.@cid); .@i++) mail .@cid[.@i], "no-reply", "PvP Ranking", "Congratulations!% You have placed #"+(.@i+1)+" in the PvP Raning this Month % % %[ Your reward is attached. ]", .PVP_Zeny[.@i], getd(".Pitem"+.@i), getd(".Pqnt"+.@i); announce "[PVP Ranking]: Rewards have been mailed to the top "+getarraysize(.PVP_Items$)+" in PvP~!",bc_blue|bc_all; query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'"); } sleep 10000; if(.RewardType&2 && .Options&2){ query_sql("SELECT char_id,`char`.name,CAST(`value` AS SIGNED) FROM `char_reg_num` INNER JOIN `char` ON `char`.char_id = `char_reg_num`.char_id WHERE `key` = '"+((.Options&256)?"m_gvg_kda":"m_gvg_kcount")+"' ORDER BY CAST(`value` AS SIGNED) DESC LIMIT "+getarraysize(.GVG_Items$)+"",.@cid,.@name$,.@value); for(.@i = 0; .@i<getarraysize(.@cid); .@i++) mail .@cid[.@i], "no-reply", "PvP Ranking", "Congratulations!% You have placed #"+(.@i+1)+" in the PvP Raning this Month % % %[ Your reward is attached. ]", .GVG_Zeny[.@i], getd(".Gitem"+.@i), getd(".Gqnt"+.@i); announce "[GVG Ranking]: Rewards have been mailed to the top "+getarraysize(.GVG_Items$)+" in GvG~!",bc_blue|bc_all; query_sql("UPDATE `mail` SET message = REPLACE(message,'%',CHAR(13)) WHERE send_name = 'no-reply'"); } cleararray $M_Guild_Kills[0],0,getarraysize($M_Guild_Kills); cleararray $M_Guild_Kda[0],0,getarraysize($M_Guild_Kda); cleararray $M_Guild_Deaths[0],0,getarraysize($M_Guild_Deaths); query_sql("DELETE FROM `char_reg_num` WHERE `key` = 'm_pkcount' OR `key` = 'm_kda' OR `key` = 'm_dthcount' OR `key` = 'm_gvg_kcount' OR `key` = 'm_gvg_kda' OR `key` = 'm_gvg_dcount'"); addrid(0); m_pkcount = 0; m_kda = 0; m_dthcount = 0; m_gvg_kcount = 0; m_gvg_kda = 0; m_gvg_dcount = 0; end; } //================================== OnInit: //-- Config //================================== // Gets NPC Name // Lets you change NPC name without breaking anything .NPC$ = strnpcinfo(0); // At_Commands bindatcmd("PvpLadder" ,.NPC$+"::OnPvpLadder",0,99); bindatcmd("Pvpladder" ,.NPC$+"::OnPvpLadder",0,99); bindatcmd("pvpLadder" ,.NPC$+"::OnPvpLadder",0,99); bindatcmd("pvpladder" ,.NPC$+"::OnPvpLadder",0,99); // Bitwise Variable // 1: Record PvP // 2: Record GvG (agit on and gvg map) // 4: Announce When Someone gets a kill // 8: Record Total Guild Stats // 16: Gain PvP Points on Kills (#PvpPoints) // 32: Repeat Kill Protection // 64: Warp to Save on abuse // 128: Monthly Stats // 256: Order by KDA instead of most kills // 512: Allow GMs to Join PvP // 1024: Request a GM on Abuse // 2048: Enable Waiting Room // 4096: Dynamic Waiting Room .Options = 1|2|4|8|16|32|128|256|1024|2048|4096; // Monthly Reward Types // 1: Pvp // 2: Gvg .RewardType = 1|2; // PVP Rewards // Rewards are Mailed to winners // Zeny Rewards setarray .PVP_Zeny, 1000000,500000,250000,125000,62500,// 1st - 5th 31250, 15620, 7810, 3905, 1952;// 6th - 10th // Ro Dex Supports 5 Items // Old Mail DOES NOT support multiple items // "Item 1, Qnt 1, Item 2, Qnt 2, Item 3, Qnt 3, Item 4, Qnt 4, Item 5, Qnt 5" setarray .PVP_Items$, "501,10,0,0,0,0,0,0,0,0",// 1st "501,9,0,0,0,0,0,0,0,0", "501,8,0,0,0,0,0,0,0,0", "501,7,0,0,0,0,0,0,0,0", "501,6,0,0,0,0,0,0,0,0", "501,5,0,0,0,0,0,0,0,0", "501,4,0,0,0,0,0,0,0,0", "501,3,0,0,0,0,0,0,0,0", "501,2,0,0,0,0,0,0,0,0", "501,1,0,0,0,0,0,0,0,0";// 10th // GVG Rewards // Rewards are Mailed to winners // Zeny Rewards setarray .GVG_Zeny, 1000000,500000,250000,125000,62500,// 1st - 5th 31250, 15620, 7810, 3905, 1952;// 6th - 10th // Ro Dex Supports 5 Items // Old Mail DOES NOT support multiple items // "Item 1, Qnt 1, Item 2, Qnt 2, Item 3, Qnt 3, Item 4, Qnt 4, Item 5, Qnt 5" setarray .GVG_Items$, "501,10,0,0,0,0,0,0,0,0",// 1st "501,9,0,0,0,0,0,0,0,0", "501,8,0,0,0,0,0,0,0,0", "501,7,0,0,0,0,0,0,0,0", "501,6,0,0,0,0,0,0,0,0", "501,5,0,0,0,0,0,0,0,0", "501,4,0,0,0,0,0,0,0,0", "501,3,0,0,0,0,0,0,0,0", "501,2,0,0,0,0,0,0,0,0", "501,1,0,0,0,0,0,0,0,0";// 10th // Number of kills on same person before it detects abuse .RepeatCount = 5; // Players Shown in PvP Ladder .MaxRank = 10; // Map Names setarray .MapName$,"pvp_n_1-2","pvp_n_1-1","pvp_n_1-4","pvp_n_1-3","pvp_n_1-5"; // Pvp Mode // Modes are Addative // 0 = Normal Pvp // 1 = Gvg // 2 = Nightmare // 4 = Party // 8 = No Ygg // 16 = No 3rds // 32 = No Trans // 64 = Show Map Name setarray .MapMode,0,1,2,4,56; // Max Players Per Map // 0 = No Limit setarray .MaxPlayers,0,50,10,36,50; // Mapflags for all PvP maps // regardless of Mode setarray .mapflag, mf_nowarp, mf_nowarpto, mf_nosave, mf_nomemo, mf_noteleport, mf_nopenalty, mf_noreturn, mf_nobranch, mf_nomobloot, mf_nomvploot, MF_NOZENYPENALTY, MF_NOTRADE, MF_NOCOMMAND, mf_nodrop; //===== Dont Touch - Mapflag & Waiting Room Generation ===== if(getwaitingroomstate(1) == -1) delwaitingroom; if(.Options&2048 && !.Options&4096) waitingroom "PvP Ladder",0; for(.@i = 0; .@i < getarraysize(.MapName$); .@i++){ for ( .@f = 0; .@f < .@size; .@f++ ) setmapflag .MapName$[.@i], .mapflag[.@f]; if(.MapMode[.@i]&4) setmapflag .MapName$[.@i], mf_partylock; if(.MapMode[.@i]&2) setmapflag .MapName$[.@i], MF_NIGHTMAREDROP; if(.MapMode[.@i]&1){ setmapflag .MapName$[.@i], MF_GUILDLOCK; setmapflag .MapName$[.@i], MF_GVG; } else{ setmapflag .MapName$[.@i], MF_PVP_NOGUILD; setmapflag .MapName$[.@i], MF_PVP; } if(!.MapMode[.@i]&4){ if(.MapMode[.@i]&1) setmapflag .MapName$[.@i], MF_GVG_NOPARTY; else setmapflag .MapName$[.@i], MF_NOPARTY; } } freeloop(1); for(.@i = 0; .@i < getarraysize(.PVP_Items$); .@i++){ explode(.@convert$,.PVP_Items$[.@i],","); for(.@c = 0; .@c < getarraysize(.@convert$) && .@c < 10; .@c++) .@convert[.@c] = atoi(.@convert$[.@c]); for(.@k = 0; .@k < getarraysize(.@convert); .@k += 2){ setd ".Pitem"+.@i+"["+getarraysize(getd(".Pitem"+.@i))+"]",.@convert[.@k]; setd ".Pqnt"+.@i+"["+getarraysize(getd(".Pqnt"+.@i))+"]",.@convert[.@k+1]; } } for(.@i = 0; .@i < getarraysize(.GVG_Items$); .@i++){ explode(.@convert$,.GVG_Items$[.@i],","); for(.@c = 0; .@c < getarraysize(.@convert$) && .@c < 10; .@c++) .@convert[.@c] = atoi(.@convert$[.@c]); for(.@k = 0; .@k < getarraysize(.@convert); .@k += 2){ setd ".Gitem"+.@i+"["+getarraysize(getd(".Gitem"+.@i))+"]",.@convert[.@k]; setd ".Gqnt"+.@i+"["+getarraysize(getd(".Gqnt"+.@i))+"]",.@convert[.@k+1]; } } while(.Options&6144) { for(.@i = 0; .@i < getarraysize(.MapName$); .@i++){ .@MapList$[.@i] = "["+ ((.MapMode[.@i]&2)?"Nightmare ":"") + ((.MapMode[.@i]&4)?"Party ":"") + ((.MapMode[.@i]&1)?"GvG":"PvP") +"] "+ ((.MapMode[.@i] >= 8)?"No ":"") + ((.MapMode[.@i]&8)?"Ygg ":"") + ((.MapMode[.@i]&16)?"3rds ":"") + ((.MapMode[.@i]&32)?"Trans ":"") + ((.MapMode[.@i]&64)?.MapName$[.@i]:"") + ((.MaxPlayers[.@i])?"["+getmapusers(.MapName$[.@i])+"/"+.MaxPlayers[.@i]+"]":""); delwaitingroom; waitingroom .@MapList$[.@i],0; sleep 3000; } } //========================================================== } //================================== //-- Call Shop //================================== - pointshop PvP_Cash_Shop -1,#PvpPoints,501:1,502:2 And, this is the PK Points with NPC - shop custom_seller2 -1,501:500 moc_para01,45,12,2 script PK Points Dealer 100,{ mes "[PK Points Dealer]"; mes "I will sell you items for PK points."; mes "Each time you kill a player you'll get 1 PK point to spend here!"; next; mes "[PK Points Dealer]"; mes "You currently have [^0000ff"+pk_points+"^000000] PK points to spend."; callshop "custom_seller2",1; npcshopattach "custom_seller2"; end; OnBuyItem: for(set .@i,0; .@i<getarraysize(.customs); set .@i,.@i+1) { for(set .@d,0; .@d<getarraysize(@bought_nameid); set .@d,.@d+1) { if(@bought_nameid[.@d]==.customs[.@i]) { if(checkweight(@bought_nameid[.@d],@bought_quantity[.@d])) { if(pk_points >= .Price[.@i]*@bought_quantity[.@d]) { set pk_points, pk_points - .Price[.@i]*@bought_quantity[.@d]; getitem @bought_nameid[.@d],@bought_quantity[.@d]; } else dispbottom "You don't have enough PK points to purchase that item."; } else dispbottom "Purchasing these items will put you over the weight limit!"; } } } deletearray @bought_quantity, getarraysize(@bought_quantity); deletearray @bought_nameid, getarraysize(@bought_nameid); close; OnPCKillEvent: //if( strcharinfo(3) != .map$ ) end; copyarray( @killed$[1], @killed$[0], .saved_l-1 ); @killed$ = ""+killedrid; if( countstr( implode( @killed$, "|" ), ""+killedrid, 0 ) <= .rstrk_l ) { pk_points++; dispbottom "You've gained one point! Your total is ["+pk_points+"] PK point(s)."; } end; OnInit: set .map$, "guild_vs3"; set .saved_l, 3; //Length of saved ids can be up to 127. set .rstrk_l, 2; //Level of restriction. setarray .customs[0], 60301,60302,60303,60304,60305,60306, 50000; // Enter the ID of customs here... setarray .Price[0], 1,5,10,25,50,100, 20; // Price for each custom here... npcshopitem "custom_seller2", 0 , 0; // Don't touch any coding beyond here.. for( set .i,0; .customs[.i]; set .i,.i+1 ) npcshopadditem "custom_seller2",.customs[.i],.Price[.i]; end; } Is it possible to make this work simultaneously? Example, Ony PVP maps like PVP Ladder maps can gain PVP Points. And, the reset of the PK Enabled maps can gain PK Points. Is this possible?
  16. sir, may we ask for a complete guide on how to do this? im confused on how to implement this. This is my titletable.lub and my achievement_db.yml Thanks
  17. May I ask for assistance as to why my damage is extremely low? I'm using a RENEWAL Server. I understand that the calculation is different, but + 289 STR should make a difference, right? I'm SBing a Poring in this screenshot. I tried @statall, but the HP as well seems low and SP. Thanks in advance.
  18. Hello, may I ask for assistance in adding a random option protection item in this? I'm using @Keitenai's script Is it possible to add a custom random option protection item, like HD Oridecon or something? As long as they have it in their inventory their items won't break if the random option fails? (HD Oridecon will be consumed per failure.) I understand that we can set it the success rate to 0%, but I wan't the players to experience failing in refine rate, but will have the chance to protect their item using HD Oridecon in their inventory or something. Thanks in advance.
  19. Thank you @Emistry. This saved me a lot of time.
  20. Thank you @sader1992 this helped me a lot.
  21. I'm using @sader1992's script I did a bit of modification in it. The problem is that when I enchant an item with an existing random option, the option is being removed. special_enchanter.txt No Enchant. With Enchant. May I ask for assistance on how to fix this? The random option should be retained when doing enchantments. Thank you!
  22. Hello guys, may I ask on how to do this on all maps without putting each and every single map on set .map$,?? Thanks!
  23. Here it is @Tokei.. item_randomopt_group.txt item_randomopt_equips.txt itemdb.cpp
  24. I've been having some problems with my server, I'm using a GM account (group _id = 99) I can login without any problem, but when I use a normal player account (group_id = 0) It says Rejected from Server. I tried to isolate the concern, it seems that the main reason for my problem is the group_id. Because when I changed the group_id of my normal account into 99, I can login without any problem. But when I make it into 0 again, and tried to re-login, It says Rejected from Server. Is there a solution for this? Thanks!
×
×
  • Create New...