//===== rAthena Script =======================================//= Freebie NPC//===== By ===================================================//= llchrisll//===== Version ==============================================//= 1.0 - Initial Version//===== Tested With =========================================//= rAthena SQL 07/16-2017 Revision//===== Description ==========================================//= This Script gives new players, which passes the level requirement// if set, freebies in form of zeny and/or items.// See 'OnInit' for Config.//===== Comments =============================================//= Request//============================================================
prontera,0,0,6 script Freebie NPC 100,{
mes .n$;if(getgmlevel()>=.gm){
mes "What do you want to do?";next;if(select("- Managment:- Player Interface")-2)goto GM_Menu;
mes .n$;}if(.gm_it && getarraysize($item)<1||!.gm_it && getarraysize(.Free)<1){
mes "I'm sorry, but there is no freebie yet to can recieve.";
mes "Please wait till an GM added some.";
close;}if(!#free && $freebies <.f_limit){if(Upper==0)if(.requ &&BaseLevel<99&&JobLevel<50)set.@f,1;elseif(Upper==1)if(.reb_lvl &&BaseLevel<99&&JobLevel<70)set.@f,1;if(.@f){
mes "It seems you don't meet the level requirements, which are "+((Upper==0)?"99/50":"99/70")+".";
close;}}elseif($freebies >=.f_limit){
mes "I'm sorry, but I cannot give you any freebies anymore, since I have reached the maximum allowed amount to give.";
close;}elseif(#free ==1){
mes "Do you want to recieve your freebies now?";if(select("- Yes:- No")-1) close;}elseif(#free ==2){
mes "I'm sorry, but you already recieved your freebies.";
close;}
mes "You'll recieve some freebies for joining our server!!";
mes "Do you want to to recieve 'em now or later?";set#free,1;if(select("- Now:- Later")-1) close;next;
mes .n$;
mes "Here you are.";
close2;if(!.gm_it)// No InGame Menu usedfor(set@f,0;@f< getarraysize(.Free);set@f,@f+2)if(.Free[@f]==1){setZeny,Zeny+.Free[@f+1];
dispbottom .n$+": You have recieved "+.Free[@f+1]+" Zeny.";}else getitem .Free[@f],.Free[@f+1];else// Via InGame Menu setable for(set@f,0;@f< getarraysize($item);set@f,@f+2)if($item[@f]==1){setZeny,Zeny+ $item[@f+1];
dispbottom .n$+": You have recieved "+$item[@f+1]+" Zeny.";}else getitem $item[@f],$item[@f+1];// increasing the counter for freebies givenset $freebies,$freebies +1;set#free,2; // Player has recieved the Freebiesend;
GM_Menu:
mes .n$;
mes "What do you want to manage?";next;switch(select("- View Freebies:- Freebie Management:- Player List:- Reset Variables")){case1:
mes .n$;if(.gm_it && getarraysize($item)<1||!.gm_it && getarraysize(.Free)<1){
mes "I'm sorry, but there is no freebie yet to view.";
mes "Please add some first.";
close;}
mes "Here is the list of the current freebies:";next;if(!.gm_it){// No InGame Menu usedfor(set@f,0;@f< getarraysize(.Free);set@f,@f+2){set@d,(@f+2)/2;
mes "===== Freebie #"+@d+" ======";if(.Free[@f]==1) mes .Free[@f+1]+" Zeny";else mes .Free[@f+1]+"x "+getitemname(.Free[@f]);if(.Free[@f+2]==0) mes "==================";}}else{// Via InGame Menu setable for(set@f,0;@f< getarraysize($item);set@f,@f+2){set@d,(@f+2)/2;;
mes "===== Freebie #"+@d+" ======";if($item[@f]==1) mes $item[@f+1]+" Zeny";else mes $item[@f+1]+"x "+getitemname($item[@f]);if($item[@f+2]==0) mes "==================";}}next;
mes .n$;
mes "Max Freebies to give: "+.f_limit;
mes "Freebies to give left: "+(.f_limit - $freebies);
close;case2:
mes .n$;if(!.gm_it){
mes "This menu isn't available, since the Freebie Settings be read from the script itself.";
close;}
mes "Please choose what to do:";next;switch(select("- Add Freebies:- Delete Freebies:- Nothing")){case1:
mes .n$;if(getarraysize($item)>=.free_limit){
mes "You can't add any freebies anymore, please remove one first.";
close;}
mes "Do you want to add Zeny or an Item as Freebie?";next;if(select("- Zeny"+((.zeny)?"":" Not Allowed")+":- Item")-1){
mes .n$;
mes "Please type the Item ID you want to add:";
mes "Max are "+.free_limit+" Items.";next;
input @item;
mes .n$;if(@item<501&&@item>.last){
mes "The value you have put is not valid.";
close;}if(getitemname(@item)=="null"|| getitemname(@item)==""){
mes "The item you requested doesn't exist.";
close;}
mes "Chosen Item: "+ getitemname(@item);
mes " ";
mes "Now input the amount it should have.";
mes "Maximum is "+.iam_limit;next;if(input(@amount,1,.iam_limit)!=0){
mes .n$;
mes "You have put an invalid amount.";
mes "Maximum is "+.iam_limit;
close;}
mes .n$;
mes "Result: "+@amount+" "+getitemname(@item);
mes "Is that correct?";if(select("- Yes:- No")-1) close;
setarray $item[getarraysize($item)],@item,@amount;}else{if(!.zeny) close;
mes .n$;
mes "Please type the amount.";
mes "Maximum is "+.z_limit;next;if(input(@amount,1,.z_limit)!=0){
mes .n$;
mes "You have put an invalid amount.";
mes "Maximum is "+.z_limit;
close;}
mes .n$;
mes "Result: "+@amount+" Zeny";
mes "Is that correct?";if(select("- Yes:- No")-1) close;
setarray $item[getarraysize($item)],1,@amount;}break;case2:
mes .n$;if(getarraysize($item)<1){
mes "There is no Freebie to remove.";
mes "Please add one first :D.";
close;}
mes "Please choose the freebie you want to remove:";
mes "Format: Name (Current Amount)";next;set@r_list$,"";for(set.@e,0;.@e< getarraysize($item);set.@e,.@e+2)set@r_list$,@r_list$+"- "+(($item[.@e]!=1)?getitemname($item[.@e]):"Zeny")+" ("+$item[.@e+1]+")"+(($item[.@e+2])?":":"");set@re,select(@r_list$)-1;
mes .n$;if($item[@re]!=1) mes "Chosen Item: "+ getitemname($item[@re]);
mes "Amount: "+ $item[@re+1]+($item[@re]==1)?" Zeny":"";
mes "Correct?";if(select("- Yes:- No")-1) close;
deletearray $item[@re],2;break;case3:break;}
close;case3:
mes .n$;
mes "I will now list the player which recieved their freebies already:";next;
mes "Freebies: "+$freebies;
close;case4:
mes .n$;
mes "This will delete every variables' conent, also your own.";if(select("- Continue:- Stop!")-1) close;set#free,0;set $freebies,0;
deletearray $free_p$[0],getarraysize($free_p$);
deletearray $item[0],getarraysize($free);
close;}OnInit:set.n$,"["+strnpcinfo(1)+"]";set.gm,80;// GM Access Level// How should be the Item Adding be handled?// 0 == via .Free Array > No Ingame Menu// 1 == via $item array > InGame Menu// Note: You can only use one of these options.set.gm_it,1;set.requ,0;// Level Requirement?set.reb_lvl,0;// When rebirthed is lvl 99/70 required?// Freebies:// Format: Reward,Amount// Reward can be either Item and/or Zeny.// For Zeny put "1" and for Item, the ID you want.// Amount should be obvious.
setarray .Free[0],512,10,513,10;set.zeny,1;// Use zeny too?set.f_limit,100;// Max Freebies to giveset.free_limit,100;// Max Freebies per playerset.iam_limit,300;// Max Amount of an Itemset.z_limit,1000000;// Maximum Zeny (Default: 1m)if(.gm_it)end;for(set.@f,0;.@f< getarraysize(.Free);set.@f,.@f+1)if(!.zeny &&.Free[.@f]==1){
debugmes .n$+": Loading Failed!";
debugmes .n$+": Reason: Misconfiguration in the .Free array (Zeny, which isn't allowed).";
debugmes .n$+": Solution: Either you allow the usage of Zeny or edit the values to equal or higher than 501 for Item ID's.";set.@error,1;break;}if(.@error==1) disablenpc strnpcinfo(0);end;}
As per title above, anyone could help me to insert IP checker which is only allowed only 1 IP per freebies. Othwerise this script are perfect and only to put the IP Checker and can be used into all server. Thx to creator @llchrisll
Question
Checkmate
As per title above, anyone could help me to insert IP checker which is only allowed only 1 IP per freebies. Othwerise this script are perfect and only to put the IP Checker and can be used into all server. Thx to creator @llchrisll
Link to comment
Share on other sites
5 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.