macmac88 Posted May 30, 2021 Posted May 30, 2021 (edited) //======Name======================================== // Mining NPC //======Version===================================== // 1.0 //======Author(s)=================================== // Sandbox //======Comments==================================== // In loving memory of AstralRO //================================================== prontera,163,162,3 script Hermoining 726,{ mes "[^0000FF Hermoining ^000000]"; mes "Hiya! I'm the master of Mining, ^880000Hermoining^000000!"; menu "Whoa, teach me master!",-; next; mes "[^0000FF Hermoining ^000000]"; mes "Okay, You'll be needing a ^008800Pick Axe^000000 for mining. While inside the map, you'll be able to mine mithril ores which can be sold for zeny!"; next; mes "[^0000FF Hermoining ^000000]"; mes "So, do you want to proceed?"; menu "Buy Pick Axe!",-,"Yes Master",Lpick; close2; callshop "PickShop"; close; Lpick: if(JobLevel < 50) goto Lnjob; mes "[^0000FF Hermoining ^000000]"; mes "Have fun!"; sc_end SC_ALL; warp "force_2-2",174,115; close; Lnjob: next; mes "[^0000FF Hermoining ^000000]"; mes "Sorry, you need to be atleast job 50 or higher in order to enter."; close; } - shop PickShop -1,6010:10000 force_2-2,159,177,5 script Mine Exit 848,{ mes "[^888800 Minero ^000000]"; mes "Do you want to get out of here?"; menu "Yes please!",-; next; mes "[^888800 Minero ^000000]"; mes "See you soon!"; warp "prontera",156,191; close; } force_2-2,161,184,3 script Mithril Ore 1976,{ if(#minedelay+86400 > gettimetick(2)) goto Ldelay; //Comment if you dont want to put a limit on mining if(@mining != 0) goto Lstillmine; if(.mining != 0) goto Lalreadymine; //mes "Do you want to mine this rock?"; //menu "Proceed",-; //next; if(countitem(6010) < 1) goto Lnopick; delitem 6010,1; set #MineCount,#MineCount+1; if(#MineCount == 10000) { //Comment if you dont want to put a limit on mining DEFAULT = 10,000x failed or success set #minedelay,gettimetick(2); set #MineCount,0; } set @minechance,rand(1,16); set .mining,1; set @mining,1; pcblockmove getcharid(3),1; if(MineLvl == 0) { misceffect 102; //Mining level 0 waits 4 seconds before mining sleep2 1000; //misceffect 102; //sleep2 1000; //misceffect 102; //sleep2 1000; //misceffect 102; //sleep2 1000; set .mining,0; set @mining,0; pcblockmove getcharid(3),0; if(@minechance >= 12){ set MineExp,MineExp+3; if(@minechance >= 7) set MineExp,MineExp+2; if(@minechance >= 2) set MineExp,MineExp+1; if(@minechance == 2) getitem 985,1; //elunium else if(@minechance == 3) getitem 984,1; //oridecon else if(@minechance == 4) getitem 7915,1; //bronze coin else if(@minechance == 5) getitem 6223,1; //carnium else if(@minechance == 6) getitem 6224,1; //bradium else if(@minechance == 7) getitem 7916,1; //silver coin else if(@minechance == 8) getitem 6241,1; //hd elunium else if(@minechance == 9) getitem 6240,1; //hd oridecon else if(@minechance == 10) getitem 7619,1; //enriched elunium else if(@minechance == 11) getitem 7620,1; //enriched oridecon else if(@minechance == 12) getitem 6225,1; //hd carnium else if(@minechance == 13) getitem 6226,1; //hd bradium else if(@minechance == 14) getitem 7517,1; //gold coin else if(@minechance == 15) getitem 674,1; //mithril coin else if(@minechance == 16) getitem 677,1; //platinum coin misceffect 154; goto Lsuccess; } else{ getitem 7049,1; misceffect 155; goto Lfail; } } if(MineLvl == 1) { misceffect 102; //Mining level 1 waits 3 seconds before mining sleep2 1000; misceffect 102; sleep2 1000; misceffect 102; sleep2 1000; set .mining,0; set @mining,0; pcblockmove getcharid(3),0; if(@minechance >= 12){ set MineExp,MineExp+3; if(@minechance >= 7) set MineExp,MineExp+2; if(@minechance >= 2) set MineExp,MineExp+1; if(@minechance == 2) getitem 985,1; //elunium else if(@minechance == 3) getitem 984,1; //oridecon else if(@minechance == 4) getitem 7915,1; //bronze coin else if(@minechance == 5) getitem 6223,1; //carnium else if(@minechance == 6) getitem 6224,1; //bradium else if(@minechance == 7) getitem 7916,1; //silver coin else if(@minechance == 8) getitem 6241,1; //hd elunium else if(@minechance == 9) getitem 6240,1; //hd oridecon else if(@minechance == 10) getitem 7619,1; //enriched elunium else if(@minechance == 11) getitem 7620,1; //enriched oridecon else if(@minechance == 12) getitem 6225,1; //hd carnium else if(@minechance == 13) getitem 6226,1; //hd bradium else if(@minechance == 14) getitem 7517,1; //gold coin else if(@minechance == 15) getitem 674,1; //mithril coin else if(@minechance == 16) getitem 677,1; //platinum coin misceffect 154; goto Lsuccess; } else{ getitem 7049,1; misceffect 155; goto Lfail; } } if(MineLvl == 2){ misceffect 102; //Mining level 2 waits 2 seconds before mining sleep2 1000; misceffect 102; sleep2 1000; set .mining,0; set @mining,0; pcblockmove getcharid(3),0; if(@minechance >= 12){ set MineExp,MineExp+3; if(@minechance >= 7) set MineExp,MineExp+2; if(@minechance >= 2) set MineExp,MineExp+1; if(@minechance == 2) getitem 985,1; //elunium else if(@minechance == 3) getitem 984,1; //oridecon else if(@minechance == 4) getitem 7915,1; //bronze coin else if(@minechance == 5) getitem 6223,1; //carnium else if(@minechance == 6) getitem 6224,1; //bradium else if(@minechance == 7) getitem 7916,1; //silver coin else if(@minechance == 8) getitem 6241,1; //hd elunium else if(@minechance == 9) getitem 6240,1; //hd oridecon else if(@minechance == 10) getitem 7619,1; //enriched elunium else if(@minechance == 11) getitem 7620,1; //enriched oridecon else if(@minechance == 12) getitem 6225,1; //hd carnium else if(@minechance == 13) getitem 6226,1; //hd bradium else if(@minechance == 14) getitem 7517,1; //gold coin else if(@minechance == 15) getitem 674,1; //mithril coin else if(@minechance == 16) getitem 677,1; //platinum coin misceffect 154; goto Lsuccess; } else{ getitem 7049,1; misceffect 155; goto Lfail; } } if(MineLvl == 3) { misceffect 102; //Mining level 3 waits 1 seconds before mining sleep2 1000; set .mining,0; set @mining,0; pcblockmove getcharid(3),0; if(@minechance >= 12){ set MineExp,MineExp+3; if(@minechance >= 7) set MineExp,MineExp+2; if(@minechance >= 2) set MineExp,MineExp+1; if(@minechance == 2) getitem 985,1; //elunium else if(@minechance == 3) getitem 984,1; //oridecon else if(@minechance == 4) getitem 7915,1; //bronze coin else if(@minechance == 5) getitem 6223,1; //carnium else if(@minechance == 6) getitem 6224,1; //bradium else if(@minechance == 7) getitem 7916,1; //silver coin else if(@minechance == 8) getitem 6241,1; //hd elunium else if(@minechance == 9) getitem 6240,1; //hd oridecon else if(@minechance == 10) getitem 7619,1; //enriched elunium else if(@minechance == 11) getitem 7620,1; //enriched oridecon else if(@minechance == 12) getitem 6225,1; //hd carnium else if(@minechance == 13) getitem 6226,1; //hd bradium else if(@minechance == 14) getitem 7517,1; //gold coin else if(@minechance == 15) getitem 674,1; //mithril coin else if(@minechance == 16) getitem 677,1; //platinum coin misceffect 154; goto Lsuccess; } else{ getitem 7049,1; misceffect 155; goto Lfail; } } Lsuccess: //Required experience before a player's mining level increases. dispbottom "You've successfully mined the ore."; if(MineExp < 100000 && (@minechance >= 2)) dispbottom "You've gained 1 Mining Exp."; if(MineExp < 100000 && (@minechance >= 7)) dispbottom "You've gained 2 Mining Exp."; if(MineExp < 100000 && (@minechance >= 12)) dispbottom "You've gained 3 Mining Exp."; if(MineExp == 10000) { set MineLvl,1; dispbottom "Congratulations! Your Mining Mastery is now Level 1!"; announce strcharinfo(0)+"'s Mining Mastery reached Level 1!",bc_all,0x00FFFF; } else if(MineExp == 50000) { set MineLvl,2; dispbottom "Congratulations! Your Mining Mastery is now Level 2!"; announce strcharinfo(0)+"'s Mining Mastery reached Level 2!",bc_all,0x00FFFF; } else if(MineExp == 100000) { set MineLvl,3; dispbottom "Congratulations! Your Mining Mastery is now Level 3!"; announce strcharinfo(0)+"'s Mining Mastery reached Level 3!",bc_all,0x00FFFF; } end; Lfail: dispbottom "You got junk from the ore."; end; Lnopick: mes "^FF0000*Hand Smash!!*^000000"; next; mes "Ouch! I'll be needing a ^008800Pickaxe^000000 for this.."; close; Lalreadymine: mes "Hey! Get your own spot!"; close; Lstillmine: mes "Ugh, i'm not done mining yet!"; close; Ldelay: mes "You can only mine 10,000 ores a day!"; close; OnInit: goto Lwalk; end; Lwalk: sleep 1000; npcwalkto rand(161,186),rand(119,184); goto Lwalk; end; } I'm new to scripting and the script has no errors, but It seems not doing what it supposed to post on the "dispbottom" dispbottom "You've successfully mined the ore."; if(MineExp < 100000 && (@minechance >= 2)) dispbottom "You've gained 1 Mining Exp."; if(MineExp < 100000 && (@minechance >= 7)) dispbottom "You've gained 2 Mining Exp."; if(MineExp < 100000 && (@minechance >= 12)) dispbottom "You've gained 3 Mining Exp."; I always get "You've gained 1 Mining Exp." even if I get a @minechance of >12 And can someone help me how can I put "else if" in this code below. It gives error when I add "else" if(@minechance >= 12){ set MineExp,MineExp+3; if(@minechance >= 7) set MineExp,MineExp+2; if(@minechance >= 2) set MineExp,MineExp+1; I'm using a client ver 20200401 Edited May 30, 2021 by macmac88 "else if" error Quote
0 Emistry Posted June 12, 2021 Posted June 12, 2021 dispbottom "You've successfully mined the ore."; if (MineExp < 100000) { if (@minechance >= 12) .@mine_exp = 3; else if (@minechance >= 7) .@mine_exp = 2; else if (@minechance >= 1) .@mine_exp = 1; } if (.@mine_exp) { MineExp += .@mine_exp; dispbottom "You've gained "+.@mine_exp+" Mining Exp."; } 1 Quote
0 Eross Posted June 2, 2021 Posted June 2, 2021 Quote dispbottom "You've successfully mined the ore."; if(MineExp < 100000 && (@minechance >= 2)) dispbottom "You've gained 1 Mining Exp."; if(MineExp < 100000 && (@minechance >= 7)) dispbottom "You've gained 2 Mining Exp."; if(MineExp < 100000 && (@minechance >= 12)) dispbottom "You've gained 3 Mining Exp."; I always get "You've gained 1 Mining Exp." even if I get a @minechance of >12 You have to write the condition statement like this .. dispbottom "You've successfully mined the ore."; if(MineExp < 100000 && (@minechance >= 2 && @minechance <= 6)) dispbottom "You've gained 1 Mining Exp."; if(MineExp < 100000 && (@minechance >= 7 && @minechance <= 11)) dispbottom "You've gained 2 Mining Exp."; if(MineExp < 100000 && (@minechance >= 12)) dispbottom "You've gained 3 Mining Exp."; in your else question always watch our for your curly brackets .. if(@minechance >= 12){ set MineExp,MineExp+3; if(@minechance >= 7) set MineExp,MineExp+2; if(@minechance >= 2) set MineExp,MineExp+1; if(@minechance == 2) getitem 985,1; //elunium else if(@minechance == 3) getitem 984,1; //oridecon else if(@minechance == 4) getitem 7915,1; //bronze coin else if(@minechance == 5) getitem 6223,1; //carnium else if(@minechance == 6) getitem 6224,1; //bradium else if(@minechance == 7) getitem 7916,1; //silver coin else if(@minechance == 8) getitem 6241,1; //hd elunium else if(@minechance == 9) getitem 6240,1; //hd oridecon else if(@minechance == 10) getitem 7619,1; //enriched elunium else if(@minechance == 11) getitem 7620,1; //enriched oridecon else if(@minechance == 12) getitem 6225,1; //hd carnium else if(@minechance == 13) getitem 6226,1; //hd bradium else if(@minechance == 14) getitem 7517,1; //gold coin else if(@minechance == 15) getitem 674,1; //mithril coin else if(@minechance == 16) getitem 677,1; //platinum coin misceffect 154; goto Lsuccess; } after 'if(@minechance >= 12)' and after 'goto Lsuccess' ... you cant add elseif in between of 2 ifs .... Quote
0 macmac88 Posted June 13, 2021 Author Posted June 13, 2021 22 hours ago, Emistry said: dispbottom "You've successfully mined the ore."; if (MineExp < 100000) { if (@minechance >= 12) .@mine_exp = 3; else if (@minechance >= 7) .@mine_exp = 2; else if (@minechance >= 1) .@mine_exp = 1; } if (.@mine_exp) { MineExp += .@mine_exp; dispbottom "You've gained "+.@mine_exp+" Mining Exp."; } Actually, I've solved this following your other comments on a post. Thank you for always helping newbie's like me. Following other examples I've modified it like this and of course those curly brackets you mentioned: if(rand(1,3) >= 2){ setarray .@aitem[0],985,984,7915; set .@aitemRand,.@aitem[rand(getarraysize(.@aitem))]; getitem .@aitemRand,1; //get elunium,oridecon,bronze coin misceffect 154; }else if(rand(1,4) >= 3){ setarray .@bitem[0],6223,6224,7960; set .@bitemRand,.@bitem[rand(getarraysize(.@bitem))]; getitem .@bitemRand,1; //get carnium,bradium,silver coin misceffect 154; } Quote
Question
macmac88
I'm new to scripting and the script has no errors, but It seems not doing what it supposed to post on the "dispbottom"
I always get "You've gained 1 Mining Exp." even if I get a @minechance of >12
And can someone help me how can I put "else if" in this code below. It gives error when I add "else"
I'm using a client ver 20200401
Edited by macmac88"else if" error
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.