// Created by Aeromesi // Version 1.0 // Works with Hercules & rAthena - script ExtraDropSystem -1,{ OnNPCKillEvent: .@killedRID = killedrid; for ( .@i = 1; .@i <= .SelectedMob; .@i++ ) { if ( .@killedRID == .MonsterID[.@i]) { if ( !.EnableItem && !.EnableCash && !.EnableZeny ) { dispbottom "Disabled System"; end; } if ( rand(100) > .DropRate[.@i] ) { if ( .EnableItem ) { if ( .ItemRewards[.@i] == 0 ) { debugmes "[Warning] Did not recieve Item reward! Data entry for "+strmobinfo( .MonsterID[.@i],1 )+"s Item is currently 0!"; end; } getitem .ItemRewards[.@i], .RewardAmount[.@i]; dispbottom "Obtained "+getitemname ( .ItemRewards[.@i] )+" x "+.RewardAmount[.@i]+"."; } if ( .EnableZeny ) { if ( .ZenyAmount[.@i] == 0 ) { debugmes "[Warning] Did not recieve Zeny reward! Data entry for "+strmobinfo(.MonsterID[.@i],1)+"s Zeny is currently 0!"; end; } Zeny += .ZenyAmount[.@i]; dispbottom "Obtained "+.ZenyAmount[.@i]+" Zeny."; } if ( .EnableCash ) { if ( .CashAmount[.@i] == 0 ) { debugmes "[Warning] Did not recieve Cash reward! Data entry for "+strmobinfo(.MonsterID[.@i],1)+"s Cash is currently 0!"; end; } #CASHPOINTS += .CashAmount[.@i]; dispbottom "Obtained "+.CashAmount+" Cash Points."; } end; } else { dispbottom "Did not get rewards at "+.DropRate[.@i]+"% drop rate."; end; } } } /* --- Format: Poring(1002) Zeny: 5000 Cash: 10 Item: Red Potion (501) Amount of Red Potion: 6 --- */ OnInit: .MinGM = 99; // Minimum GM level to access Mob edit system via @extradrops .SelectedMob = 4; // Edit this to the max amount of monsters you have, currently in .MonsterID we have a total of 4 monsters, so we put 4. bindatcmd "extradrops",strnpcinfo(0)+"::OnAtExtraDrops"; // Command '@extradrops' allows player to view extra mob drop data, but GM can edit extra mob drop data in real-time ingame! bindatcmd "onoffdrops",strnpcinfo(0)+"::OnAtOnOffDrops",99; // ON / OFF toggle for GM to disable / enable the Extra Drops System. // Enable Item / Zeny / Cash Points - Enter 0 for all to disable this basically disable the script. .EnableItem = 1; // 1 for True, 0 for False -- Enable Item feature, will your mob give an specified item or not? .EnableZeny = 1; // 1 for True, 0 for False -- Enable Zeny feature, will mob give zeny or not? .EnableCash = 1; // 1 for True, 0 for False -- Enable Cash feature, will mob give Cash Points or not? ( HINT: Change the variable to any other variable you want to use). .EnableSystem = 1; // 1 for True, 0 for False -- Enable/Disable whole system or not. if ( $EditStarted ) { end; } setarray .MonsterID[1],1002,1004,1005,1007; // Monster ID's, make sure to keep count of how many you're adding for .SelectedMob array. setarray .ZenyAmount[1],5000,3000,4000,1000; // 1002 would be poring, so he would get 5000 zeny, set the item rewards/cash amounts in accordance to each monster. setarray .ItemRewards[1],501,502,503,504; // Poring would drop a Red Potion. setarray .RewardAmount[1],6,5,5,5; // Reward Amounts for items setarray .CashAmount[1],5,6,7,8,9; // Cash Amounts setarray .DropRate[1],50,5,5,1; // Drop Rates for each specified monster ;) end; OnAtExtraDrops: if ( getgmlevel() >= .MinGM ) callsub GMMenu; if ( getgmlevel() < .MinGM ) callsub PlayerMenu; end; GMMenu: if ( !.EnableSystem ) { mes "System is currently disabled."; end; } EditMenu: mes "Select Monster to edit data:"; .@menu$ = implode( strmobinfo (.MonsterID ,":")); .@choice = select(.@menu$) - 1; next; mes "Currently editing: "+strmobinfo ( .MonsterID[.@choice],1 )+ "."; switch(select("[Edit] Item data","[Edit] Zeny data","[Edit] Cash data")) { case 1: dispbottom "Input Item ID."; input .@TempChoice; next; mes "Previous Item: "+.ItemRewards[.@choice]+"."; mes "New item: "+.ItemRewards[.@TempChoice]+"."; mes "Is this okay?"; next; switch(select("Confirm","Redo","Main Menu")) { case 1: .ItemRewards[.@choice] = .ItemRewards[.@TempChoice]; mes "New item: "+.ItemRewards[.@choice]+"."; $EditStarted = 1; close; case 2: callsub EditMenu; end; case 3: callsub GMMenu; end; } case 2: dispbottom "Input new amount of Zeny."; input .@TempChoice; next; mes "Previous Zeny "+.ZenyAmount[.@choice]+"."; mes "New Zeny "+.ZenyAmount[.@TempChoice]+"."; mes "Is this okay?"; next; switch(select("Confirm","Redo","Main Menu")) { case 1: .ZenyAmount[.@choice] = .ZenyAmount[.@TempChoice]; $EditStarted = 1; mes "New Zeny: "+.ZenyAmount[.@choice]+"."; close; case 2: callsub EditMenu; end; case 3: callsub GMMenu; end; } case 3: dispbottom "Input Cash Amount."; input .@TempChoice; next; mes "Previous Cash Amount: "+.CashAmount[.@choice]+"."; mes "New Cash Amount: "+.ItemRewards[.@TempChoice]+"."; mes "Is this okay?"; next; switch(select("Confirm","Redo","Main Menu")) { case 1: .ItemRewards[.@choice] = .ItemRewards[.@TempChoice]; $EditStarted = 1; mes "New item: "+.ItemRewards[.@choice]+"."; close; case 2: callsub EditMenu; end; case 3: callsub GMMenu; end; } } PlayerMenu: if ( !.EnableSystem ) { mes "System is currently disabled."; end; } mes "Extra Mob Drop Information:"; for ( .@i = 1; .@i <= .SelectedMob; .@i++ ) { dispbottom " || :Monster: "+strmobinfo( .MonsterID[.@i],1)+" :Item: "+getitemname(.ItemRewards[.@i])+"/ID:"+.ItemRewards[.@i]+" :Zeny: "+.ZenyAmount[.@i]+" :Cash: "+CashAmount[.@i]+" ||"; } end; OnAtOnOffDrops: if ( !$EnableSystem ) { $EnableSystem = 1; dispbottom "Enabled Extra Drops System"; end; } if ( $EnableSystem ) { $EnableSystem = 0; dispbottom "Disabled Extra Drops System"; end; } }