Jump to content

AinsLord

Members
  • Posts

    794
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by AinsLord

  1. 21 hours ago, sader1992 said:

    The groups/ids are per npc , you can use the same item in a different npc copy however you cannot use the same item in the same npc in a different group.

     

    also i need more information about when this happen to you , at any step of the npc ?

    the image you provided the next line is just select , so I don't think this where you are getting the issue

    i found out why it hangs it happens because of my phpmyadmin database

    thanks i love your script

  2. im using this sir @sader1992 at 1st it was working fine then several days after when i tried to put options after selecting

    proceed this happens it hangs cant move cant even TP nor chat i need to reboot the whole VPS to bring it back

    i dunno what happen i didnt change any codes or add anything

    i just created another NPC of it for addition ID option i forgot that ID 1 has the same item on the 

    other NPC that has ID 2 like this

    NPC 1

    //Creating Group id 1 , with Hat items inside.
    	AddGroup(1,2220,2221,2222,2223);

    NPC 2

    //Creating Group id 1 , with Hat items inside.
    	AddGroup(2,2223);

    will that affect this 

    DO NOT REUSE THE SAME ITEM ID IN DIFFERENT GROUP!

    image.png.4dcb8aabb991ef19d9f871f4f9bb977c.png

  3. it was working before but now when i tried it again seems after this part

    image.png.4dcb8aabb991ef19d9f871f4f9bb977c.png

    its not proceeding at all cant event teleport 

    what seems to be the problem no error in the console

    here the code

    //===== rAthena Script =======================================
    //= saders All in one Random Option Script
    //= Free Script!!!!
    //===== By: ==================================================
    //= sader1992
    //= https://sader1992.com/
    //= https://rathena.org/board/profile/30766-sader1992/
    //= https://sader1992.com/?page=item&item=54
    //= For more , check out here >
    //= https://sader1992.com/?page=ra_services
    //= https://sader1992.com/?page=store
    //= https://rathena.org/board/profile/30766-sader1992/content/?type=downloads_file
    //===== Current Version: =====================================
    //= 1.0
    //===== Compatible With: ===================================== 
    //= rAthena Project
    //https://rathena.org/board/files/file/4309-all-in-one-random-options-script/
    //https://github.com/sader1992/sader_scripts
    //===== Update Log: =========================================
    //= Version 1.0 Creating the script.
    //===== Description: =========================================
    //= This is a Highly Custumizable random option script
    //= you can reuse the script by just creating a new file with different setting!.
    //= read and understand the settings.
    //============================================================
    prontera,127,170,7	script	AllInOne_RandomOption	444,{
    	disable_items; function rnd;
    	switch(select("Insert Random Options:Allowed Items List")){
    		case 1:
    			mes "You must equip the item to appear here!";
    			for(.@i=0;.@i<EQI_MAX;.@i++){
    				if(getequipisequiped(.@i)) {
    					.@m1$ += (inarray(.item_list,getequipid(.@i)) != -1?"^11AD09":"^F73831") + F_getpositionname(.@i) + "-[" + getequipname(.@i) + "]^000000";
    					.@exist = true;
    				}
    				.@m1$ += ":";
    			}
    			if(!.@exist){
    				mes "You have to equip the item you want to insert the random options into!.";
    				end;
    			}
    			.@eq = select(.@m1$) -1;
    			clear;
    			.@id = getequipid(.@eq);
    			if(inarray(.item_list,.@id) == -1){
    				mes "Sorry , I cannot deal with this item!";
    				end;
    			}
    			.@gid = .it[.@id];
    			if(!.@gid){
    				mes "Something went wrong!";
    				end;
    			}
    			if(!getequiprandomoption(.@eq,0,ROA_ID)){
    				.@zeny = .nz[.@gid];
    				.@cashpoint = .nk[.@gid];
    				.@costumpoint = .nc[.@gid];
    				copyarray(.@item,getd(".ni_" + .@gid),getarraysize(getd(".ni_" + .@gid)));
    				copyarray(.@amount,getd(".na_" + .@gid),getarraysize(getd(".na_" + .@gid)));
    			}else{
    				if(!.g_reroll[.@gid]){
    					mes "Sorry , i cannot reroll the random options in this item!";
    					end;
    				}
    				.@zeny = .rz[.@gid];
    				.@cashpoint = .rk[.@gid];
    				.@costumpoint = .rc[.@gid];
    				copyarray(.@item,getd(".ri_" + .@gid),getarraysize(getd(".ri_" + .@gid)));
    				copyarray(.@amount,getd(".ra_" + .@gid),getarraysize(getd(".ra_" + .@gid)));
    			}
    			mes "Selected Item [" + getequipname(.@eq) + "]";
    			mes "==== Cost ====";
    			if(.@zeny) mes "Zeny: " + .@zeny;
    			if(.@cashpoint) mes "CashPoint: " + .@cashpoint;
    			if(.@costumpoint) mes .CustomPointsName$ + ": " + .@costumpoint;
    			for(.@i=0;.@i<getarraysize(.@item);.@i++){
    				mes "(" + .@amount[.@i] + ") " + getitemname(.@item[.@i]);
    			}
    			if(!.KeepItemData){
    				mes "^E01E00You will loss all the refine and cards in the item if you continue.^000000";
    			}
    			mes "Would you like to continue?";
    			if(select("Yes:No") == 2){
    				clear;
    				mes "Ok, see you next time!";
    				end;
    			}
    			clear;
    			if(Zeny < .@zeny){
    				mes "You don't have " + .@zeny + " Zeny";
    				.@close = true;
    			}
    			if(#CASHPOINTS < .@cashpoint){
    				mes "You don't have " + .@cashpoint + " CashPoints";
    				.@close = true;
    			}
    			if(getd(.CustomPointsVariable$) < .@costumpoint){
    				mes "You don't have " + .@costumpoint + " " + .CustomPointsName$;
    				.@close = true;
    			}
    			for(.@i=0;.@i<getarraysize(.@item);.@i++){
    				if(countitem(.@item[.@i]) < .@amount[.@i]){
    					mes "You don't have (" + .@amount[.@i] + ") " + getitemname(.@item[.@i]);
    					.@close = true;
    				}
    			}
    			if(.@close) end;
    			.@r = getequiprefinerycnt(.@eq);
    			for(.@i=0;.@i<4;.@i++){
    				if(getequipcardid(.@eq,.@i)){
    					setd ".@c" + .@i,getequipcardid(.@eq,.@i);
    					.@re[getarraysize(.@re)] = true;
    				}
    			}
    			copyarray(.@opt_id,getd(".ro_id_" + .@gid + "_0"),getarraysize(getd(".ro_id_" + .@gid + "_0")));
    			copyarray(.@opt_mn,getd(".ro_mn_" + .@gid + "_0"),getarraysize(getd(".ro_mn_" + .@gid + "_0")));
    			copyarray(.@opt_mx,getd(".ro_mx_" + .@gid + "_0"),getarraysize(getd(".ro_mx_" + .@gid + "_0")));
    			for(.@i=1;.@i<6;.@i++){
    				copyarray(getd(".@opt_id" + .@i),getd(".ro_id_" + .@gid + "_" + .@i),getarraysize(getd(".ro_id_" + .@gid + "_" + .@i)));
    				copyarray(getd(".@opt_mn" + .@i),getd(".ro_mn_" + .@gid + "_" + .@i),getarraysize(getd(".ro_mn_" + .@gid + "_" + .@i)));
    				copyarray(getd(".@opt_mx" + .@i),getd(".ro_mx_" + .@gid + "_" + .@i),getarraysize(getd(".ro_mx_" + .@gid + "_" + .@i)));
    			}
    			for(.@i=1;.@i<6;.@i++){
    				if(rand(100) > getd(".s_" + .@i + "[" + .@gid + "]"))
    					break;
    				if(getd(".ro_id_" + .@gid + "_" + .@i)){
    					if(!getarraysize(getd(".@opt_id" + .@i))) break;
    					.@ndx = rand(getarraysize(getd(".@opt_id" + .@i)));
    					.@result_id = getd(".@opt_id" + .@i + "[" + .@ndx + "]");
    					.@result_vl = rnd(getd(".@opt_mn" + .@i + "[" + .@ndx + "]"),getd(".@opt_mx" + .@i + "[" + .@ndx + "]"));
    					deletearray(getd(".@opt_id" + .@i + "[" + .@ndx + "]"),1);
    					deletearray(getd(".@opt_mn" + .@i + "[" + .@ndx + "]"),1);
    					deletearray(getd(".@opt_mx" + .@i + "[" + .@ndx + "]"),1);
    				}else{
    					if(!.@opt_id) break;
    					.@ndx = rand(getarraysize(.@opt_id));
    					.@result_id = .@opt_id[.@ndx];
    					.@result_vl = rnd(.@opt_mn[.@ndx],.@opt_mx[.@ndx]);
    					if(!.g_reuse[.@gid]){
    						deletearray(.@opt_id[.@ndx],1);
    						deletearray(.@opt_mn[.@ndx],1);
    						deletearray(.@opt_mx[.@ndx],1);
    					}
    				}
    				if(.ex[.@result_id]){
    					for(.@i2=0;.@i2<getarraysize(.@r_id);.@i2++){
    						if(.ex[.@result_id] == .ex[.@r_id[.@i2]]){
    							.@reject = true;
    						}
    					}
    				}
    				if(!.@reject){
    					.@s1 = getarraysize(.@r_id);
    					.@r_id[.@s1] = .@result_id;
    					.@r_v[.@s1] = .@result_vl;
    				}else{
    					.@i--;
    					.@failsafe++;
    					if(.@failsafe > 50){
    						mes "Something went wrong , The server admin need to make sure that the config is done correctly!";
    						end;
    					}
    				}
    			}
    			if(Zeny < .@zeny) end;
    			if(#CASHPOINTS < .@cashpoint) end;
    			if(getd(.CustomPointsVariable$) < .@costumpoint) end;
    			for(.@i=0;.@i<getarraysize(.@item);.@i++){
    				if(countitem(.@item[.@i]) < .@amount[.@i]){
    					end;
    				}
    			}
    			// anti-hack
    			if (callfunc("F_IsEquipIDHack", .@eq, .@id) || callfunc("F_IsEquipCardHack", .@eq, .@c0, .@c1, .@c2, .@c3)) {
    				// anti-hack
    				emotion ET_FRET;
    				mes "Item Switch detected!";
    				end;
    			}
    			Zeny -= .@zeny;
    			#CASHPOINTS-= .@cashpoint;
    			setd(.CustomPointsVariable$,getd(.CustomPointsVariable$) - .@costumpoint);
    			for(.@i=0;.@i<getarraysize(.@item);.@i++){
    				delitem(.@item[.@i],.@amount[.@i]);
    			}
    			if(!.@r_id){
    				specialeffect2 EF_REFINEOK;
    				mes "Look Like you didn't get any random option, your luck is really bad!";
    				end;
    			}
    			delequip(.@eq);
    			specialeffect2 EF_REFINEOK;
    			if(.KeepItemData)
    				getitem3(.@id,1,1,.@r,0,.@c0,.@c1,.@c2,.@c3,.@r_id,.@r_v,.@null);
    			else
    				getitem3(.@id,1,1,0,0,0,0,0,0,.@r_id,.@r_v,.@null);
    			equip(.@id);
    			mes "Done!";
    		end;
    		
    		case 2:
    			mes "The list of the allowed items in this npc!";
    			for(.@i=0;.@i<getarraysize(.item_list);.@i++){
    				mes "<ITEM>" + getitemname(.item_list[.@i]) + "[" + getitemslots(.item_list[.@i]) + "]<INFO>" + .item_list[.@i] + "</INFO></ITEM>";
    				if(.@i >= 10 && !(.@i%10)) next;
    			}
    		end;
    	}
    end;
    
    	function	rnd	{
    		if(.HardBalance){
    			return rand(getarg(0),rand(getarg(0),getarg(1)));
    		}
    		return rand(getarg(0),getarg(1));
    	}
    
    	function	AddGroup	{
    		.@id = getarg(0);
    		for(.@i=1;.@i<getargcount();.@i++){
    			.it[getarg(.@i)] = .@id;
    			.item_list[getarraysize(.item_list)] = getarg(.@i);
    			
    		}
    		return;
    	}
    	
    	function	AddGroupOption	{
    		.@id = getarg(0);
    		.g_reroll[.@id] = getarg(1);
    		.g_reuse[.@id] = getarg(2);
    		return;
    	}
    	
    	function	AddGroupCost	{
    		.@id = getarg(0);
    		.nz[.@id] = getarg(1);
    		.nk[.@id] = getarg(2);
    		.nc[.@id] = getarg(3);
    		for(.@i=4;.@i<getargcount();.@i+=2){
    			.@s = getarraysize(getd(".ni_" + .@id));
    			setd(".ni_" + .@id + "[" + .@s + "]",getarg(.@i));
    			setd(".na_" + .@id + "[" + .@s + "]",getarg(.@i+1));
    		}
    		return;
    	}
    	
    	function	AddGroupReRollCost	{
    		.@id = getarg(0);
    		.rz[.@id] = getarg(1);
    		.rk[.@id] = getarg(2);
    		.rc[.@id] = getarg(3);
    		for(.@i=4;.@i<getargcount();.@i+=2){
    			.@s = getarraysize(getd(".ri_" + .@id));
    			setd(".ri_" + .@id + "[" + .@s + "]",getarg(.@i));
    			setd(".ra_" + .@id + "[" + .@s + "]",getarg(.@i+1));
    		}
    		return;
    	}
    	
    	function	AddGroupChance	{
    		.@id = getarg(0);
    		.s_1[.@id] = getarg(1);
    		.s_2[.@id] = getarg(2);
    		.s_3[.@id] = getarg(3);
    		.s_4[.@id] = getarg(4);
    		.s_5[.@id] = getarg(5);
    		return;
    	}
    	
    	function	AddOpt	{
    		.@id = getarg(0);
    		.@loc = getarg(1);
    		.@s = getarraysize(getd(".ro_id_" + .@id + "_" + .@loc));
    		setd(".ro_id_" + .@id + "_" + .@loc + "[" + .@s + "]",getarg(2));
    		setd(".ro_mn_" + .@id + "_" + .@loc + "[" + .@s + "]",getarg(3));
    		setd(".ro_mx_" + .@id + "_" + .@loc + "[" + .@s + "]",getarg(4));
    		return;
    	}
    	
    	function	AddExclusiveOpt	{
    		.@s1 = getarraysize(.exv);
    		.exv[.@s1] = true;
    		for(.@i=0;.@i<getargcount();.@i++){
    			.ex[getarg(.@i)] = .@s1;
    		}
    		return;
    	}
    
    OnInit:
    	.exv = true;//DO NOT REMOVE THIS.
    	.KeepItemData = true;//if this is 'false , the player will loss the refine+cards from the item when he use this npc.
    	.CustomPointsVariable$ = "#COSTUMPOINTS";//The variable name of the costum points.
    	.CustomPointsName$ = "Server RO Points";//The name of the costum points, this what the player will see.
    	.HardBalance = true;//if this is true , it would be much harder to get high value in the random option.
    	
    	
    	//AddGroup(<Group ID>,<ItemID>,<ItemID>,<ItemID>,<ItemID>,<ItemID>);
    	/*
    	AddGroup Doc
    		<Group ID> = a number between 1 and MAX_INT64
    		DO NOT REUSE THE GROUP ID IN THE SAME FILE CONFIG!
    		DO NOT REUSE THE SAME ITEM ID IN DIFFERENT GROUP!
    		will create a group id 
    		you can add as many as you want items inside a group.
    	*/
    	
    	//AddGroupOption(<Group ID>,<Allow ReRoll?true:false>,<Allow reuse already gotten option?true:false>,<Zeny Cost>,<CashPoint Cost>,<Custom Points Cost>,<Item1 ID Cost>,<Item1 Amount Cost>,<Item2 ID Cost>,<Item2 Amount Cost>,<....ETC>);
    	/*
    	AddGroupOption Doc
    		<Group ID> = A group id that is already created in AddGroup()!.
    		<Allow ReRoll?true:false> = allow reroll an item with random option or not
    		<Allow reuse already gotten option?true:false> = for exammple if you have str in the options and the player gor it , can he get it again in another slot?
    		
    	*/
    	
    	//AddGroupCost(<Group ID>,<Zeny Cost>,<CashPoint Cost>,<Custom Points Cost>,<Item1 ID Cost>,<Item1 Amount Cost>,<Item2 ID Cost>,<Item2 Amount Cost>,<....ETC>);
    	/*
    	AddGroupCost Doc
    		<Group ID> = A group id that is already created in AddGroup()!.
    		<Zeny Cost> = the zeny cost (can be 0)
    		<CashPoint Cost> = the cashpoints cost (can be 0)
    		<Custom Points Cost> = if you are using costum points in the script , check out .CustomPointsVariable$ and .CustomPointsName$ at the start of the script (can be 0)
    		<Item1 ID Cost> = the item cost
    		<Item1 Amount Cost> = the item amount cost
    		
    		You can use as many item,amount cost at the end of the function.
    	*/
    	
    	//AddGroupReRollCost(<Group ID>,<Zeny Cost>,<CashPoint Cost>,<Custom Points Cost>,<Item1 ID Cost>,<Item1 Amount Cost>,<Item2 ID Cost>,<Item2 Amount Cost>,<....ETC>);
    	/*
    	AddGroupReRollCost Doc
    		<Group ID> = A group id that is already created in AddGroup()!.
    		<Zeny Cost> = the zeny cost (can be 0)
    		<CashPoint Cost> = the cashpoints cost (can be 0)
    		<Custom Points Cost> = if you are using costum points in the script , check out .CustomPointsVariable$ and .CustomPointsName$ at the start of the script (can be 0)
    		<Item1 ID Cost> = the item cost
    		<Item1 Amount Cost> = the item amount cost
    		
    		You can use as many item,amount cost at the end of the function.
    	*/
    	
    	//AddGroupChance(<Group ID>,<1st Option Chance>,<2nd Option Chance>,<3rd Option Chance>,<4th Option Chance>,<5th Option Chance>);
    	/*
    	AddGroupChance Doc
    		<Group ID> = A group id that is already created in AddGroup()!.
    		<1st Option Chance> = the Chance to get one of the random options in the slot 1 (can be 0)
    		<2nd Option Chance> = the Chance to get one of the random options in the slot 2 (can be 0)
    		<3rd Option Chance> = the Chance to get one of the random options in the slot 3 (can be 0)
    		<4th Option Chance> = the Chance to get one of the random options in the slot 4 (can be 0)
    		<5th Option Chance> = the Chance to get one of the random options in the slot 5 (can be 0)
    		
    		Keep inmind that if the player didn't get lucky for example at the slot 2 , all the chances after will be ignored
    		you cannot skip a random option slot that would bug the game client.
    	*/
    	
    	//AddOpt(<Group ID>,<Location>,<Random Option ID>,<Minimum Value>,<Maximum Value>);
    	/*
    	AddOpt Doc
    		<Group ID> = A group id that is already created in AddGroup()!.
    		<Location> = you can spisfiy random option to a location from 1 to 5 , but you can use 0 , if you used 0 it will apply to all locations that doesn't have spisfied random options.
    		<Random Option ID> = random option id , you can use the id or the variable , check out the file /rathena/db/re/item_randomopt_db.yml
    		<Minimum Value> = the minimum value
    		<Maximum Value> = the maximum value
    	*/
    	
    	//AddExclusiveOpt(<Random Option ID>,<Random Option ID>,<Random Option ID>,<Random Option ID>,<Random Option ID>);
    	/*
    	AddExclusiveOpt Doc
    		this will help you to prevent a group of random opions typs in the same item in different slots
    		for example
    			RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET
    			RDMOPT_DAMAGE_PROPERTY_WATER_TARGET
    			RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET
    			RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET
    			RDMOPT_DAMAGE_PROPERTY_WIND_TARGET
    			RDMOPT_DAMAGE_PROPERTY_POISON_TARGET
    			RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET
    			RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET
    			RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET
    			RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET
    		if the player got 1 of them in a slot , he wont get another one to another slot
    	*/
    
    //Example!!!>
    //this is just an example , this script allow you to create any random option system you want.
    
    	//Creating Group id 1 , with Hat items inside.
    	AddGroup(1,2220,2221,2222,2223);
    	//Group id 1 Options
    	AddGroupOption(1,true,false);
    	//Group id 1 Cost
    	AddGroupCost(1,50,0,0,0,0,0,0);
    	//Group id 1 ReRoll Cost
    	AddGroupReRollCost(1,50,0,0,0,0,0,0);
    	//Group id 1 Chances.
    	AddGroupChance(1,100,100,100,100,100);
    	//Group id 1 Random Option List. location 0 mean all the slot locations
    	AddOpt(1,0,RDMOPT_VAR_STRAMOUNT,1,100);
    	AddOpt(1,0,RDMOPT_VAR_INTAMOUNT,1,100);
    	AddOpt(1,0,RDMOPT_VAR_VITAMOUNT,1,100);
    	AddOpt(1,0,RDMOPT_VAR_LUKAMOUNT,1,100);
    	AddOpt(1,0,RDMOPT_VAR_AGIAMOUNT,1,100);
    	AddOpt(1,0,RDMOPT_VAR_DEXAMOUNT,1,100);
    	AddOpt(1,0,RDMOPT_VAR_MAXHPPERCENT,1,100);
    	AddOpt(1,0,RDMOPT_VAR_MAXSPPERCENT,1,100);
    	//those enchantment you wont get unless in slot 5
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_WIND_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_POISON_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,1,100);
    	AddOpt(1,5,RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET,1,100);
    	
    	//this mean those random options cannot coexist in the same item!.
    	AddExclusiveOpt(RDMOPT_DAMAGE_PROPERTY_NOTHING_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_WATER_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_GROUND_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_FIRE_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_WIND_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_POISON_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_SAINT_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_DARKNESS_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_TELEKINESIS_TARGET,
    			RDMOPT_DAMAGE_PROPERTY_UNDEAD_TARGET);
    	
    
    end;
    
    }

    this is a work of @sader1992

     

    TIA ❤️

    EDIT: whole map server lags when i try to add option

  4. here is the script

    //===== Thaddeus Scripts ================================== 
    //= Simple Cool Anti-Bot
    //===== By: ================================================== 
    //= Thaddeus
    //===== Current Version: ===================================== 
    //= 2.0
    //===== Compatible With: ===================================== 
    //= Hercules, rAthena, 3ceam, eAthena
    //===== Description: =========================================
    // Improvise Simple Anti-Bot! from method of Brian.
    //===== Comments: ============================================
    //= Change the % chance of triggering, change jail time.
    //===== Additional Comments: =================================
    //= 1.00 Initial Release
    //= 1.01 Cleaned up and removed the use of goto (Stolao)
    //===== Contact Info: =========================================
    //= http://hercules.ws/board/user/457-thaddeus/
    //============================================================
    //===== Credits to: =========================================
    //= Brian, Stolao
    //============================================================
    
    -	script	anti-bot2	-1,{
    OnPCLoginEvent:
    	set checkbot,0;
    	if(botter >= 1) {
    		doevent "anti-bot::Oncheckb";
    	}
    
    }
    
    -	script	anti-bot	-1,{
    OnNPCKillEvent:
    	if( rand(100) < 25 ) { end;} // Default Setting: 75% Chance to Ignore the Anti-Bot
    	Oncheckb:
    	function GetString;
    	if (getgmlevel() >= 3) { end;} /* Uncomment if you want to Ignore this by GM */
    	if(checkbot >= 1) { end; }
    
    	atcommand "@jail "+strcharinfo(0)+"";
    	set botter,1;
    	sc_start SC_BERSERK, 1000000000, 1;
    	sc_start SC_FREEZE, 1000000000, 1;
    	sleep2 3000;
    	for(set botter,botter; botter < 4; set botter,botter + 1;){
    		set .@String$,GetString( 15,rand(3,7) );
    		mes "You Have 3 Chance to Type the Red Text Correctly";
    		mes "If you failed- You will be jailed";
    		mes "Input the ^FF0000RED COLOUR^000000 part";
    		mes "^0000FF"+GetString( 15,rand(5,10) )+"^FF0000"+.@String$+"^0000FF"+GetString( 15,rand(3,10) )+"^000000";
    		input .@Input$;
    		if( .@Input$ != .@String$ ){
    			if (botter >= 3) {
    				atcommand "@unjail "+strcharinfo(0)+"";
    				sleep2 1000;
    				atcommand "@jailfor 10d "+strcharinfo(0)+"";
    				announce "[Anti-BOT]: The user [" +strcharinfo(0) +"] Has Been Jailed For 10 Days.",0,0xe80f0f;
    				set botter,0;
    				close;
    				end;
    			}
    			mes "Wrong..";
    			next;
    		} else {
    			break;
    		}
    	}
    	atcommand "@unjail "+strcharinfo(0)+"";
    	set botter,0;
    	set checkbot,1;
    	sc_end SC_BERSERK;
    	sc_end SC_FREEZE; 
    	percentheal 100,100;
    	sc_start SC_INC_AGI,240000,10;
    	sc_start SC_BLESSING,240000,10; 
    end;
    
    	function	GetString	{
    		if( getarg(0) & 1 ) setarray .@List$[ getarraysize( .@List$ ) ],"1","2","3","4","5","6","7","8","9";
    		if( getarg(0) & 2 ) setarray .@List$[ getarraysize( .@List$ ) ],"A","B","C","D","E","F","G","H","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z";
    		if( getarg(0) & 4 ) setarray .@List$[ getarraysize( .@List$ ) ],"a","b","c","d","e","f","g","h","i","j","k","m","n","o","p","q","r","s","t","u","v","w","x","y","z";
    		//if( getarg(0) & 8 ) setarray .@List$[ getarraysize( .@List$ ) ],"!","@","#","$","%","^","&","*","(",")","-","=","/","+";
    
    	set .@Str$,"";
    		while( getstrlen( .@Str$ ) < getarg(1) )
    		set .@Str$,.@Str$ + .@List$[ rand( getarraysize( .@List$ ) ) ];
    		return .@Str$;
    
    	}
    
    }
    
    sec_pri	mapflag	pvp	off

    here is the error on the console

    image.png.f876db1cdd587d107d68b1bfd4027662.png

    i hope anyone can help me ❤️

    thanks in advance ❤️
    appreciate it

  5. Hi anyone can help me with this script

    prontera,143,173,5	script	Level Reset	757,{
    	if (BaseLevel < 255) {
    		mes "You need to be at least level 99.";
    	}
    	else if (select("Reset", "cancel") == 1) {
    		resetlvl 1;
    		RESET_COUNT++;
    		StatusPoint += (RESET_COUNT * 10); // free 10 status point per reset.
    		
    		if (RESET_COUNT && RESET_COUNT % 10 == 0) {
    			getitem 512, 10; // every 10 reset get apple.
    		}
    	}
    	close2;
    }

    everytime character resets it stucks cant move need to re login to fix it

    dunno what is the proble

    EDIT: Can i add some commands to check how many reset they have so they can check

    thanks ❤️

    THANSK IN ADVANCE

  6. On 11/18/2021 at 12:19 PM, iMillenium said:

    I would like to modify the system to accept only 3 types of currency:

    cash
    Zeny
    custompoint

    Could someone guide me on how to do it?

    it automatically sets cash/zeny for vending

    for using only zeny and cash

    put 0 to the item IDs in item_vending.txt <--- this file is not existing you just need to create it on db/item_vending.txt

    +// Specific items for Vending System
    +// Format: ItemID
    +// Max items is equal MAX_INVENTORY ( 100 by default )
    +
    +// TCG Card
    +7227
    +// Mithril Coin
    +674
    +// Silver Coin
    +675
    +// Bronze Coin
    +673

    but for custom currency or points

    it will make some additional scripts/modification on src

     

  7. 6 hours ago, ryukazuna said:

    in that case, maybe you are missing some line of code when patching your sever. Try to patch manually instead. 

    the rev7 works just fine for me, except its not working when buying with items. 

    having hard time implementing this to the server i work

    i combined v5 and v6 

  8. so i was trying to use these anti bot here is the code

    //===== eAthena Script ======================================= 
    //= AntiBot Login
    //===== By: ================================================== 
    // Create By - Mr.CoolZ
    // Modify By  pizan
    // Modify By hendra814
    //===== Current Version: ===================================== 
    //= 1.0
    //= 1.1 -change from onpcloginevent to onnpckillevent by hendra814
    //= 2.0 -not checking for instances map by hendra814
    //= 2.1 -add retry 3 times for wrong input bot checking by hendra814
    //= 3.0 -add timer for input bot checking, if more than 30second it will warp to jail map by hendra814
    //===== Compatible With: ===================================== 
    //= eAthena, 3ceAM, & rathena
    //===== Description: ========================================= 
    //= AntiBotLogin Script
    //  You can Change The GM lv
    // if (getgmlevel()>=85) goto gm_admin;  ' GM lv i Set on This Script 85 You May Change it '
    //============================================================ 
    prontera.gat,0,0,0	script	AntiBot	-1,{
    
    OnPCLoginEvent:
    set @Fail,0;
    set @killmonster,1;
    set @killcekmin,rand(10,20);
    
    OnNPCKillEvent:
    if( strcharinfo(3) == "1@tower") end;
    else if( strcharinfo(3) == "2@tower") end;
    else if( strcharinfo(3) == "3@tower") end;
    else if( strcharinfo(3) == "4@tower") end;
    else if( strcharinfo(3) == "5@tower") end;
    else{
    set @killmonster,@killmonster+1;
    if (@killmonster>=@killcekmin) {
    	set @killmonster,1;
    	set @killcekmin,rand(1000,2000);
    cutin "ein_soldier",2;
    if (getgmlevel()>60) goto gm_admin;
    setoption 0x40;
    setoption 0x2000;
    pcblockmove getcharid(3),1;
    mes "Hallo, are you bot ?? If is not.. Type the right number.";
    atcommand "@noask";
    mes "This is bot checker.";
    mes "Type the right number which have same colour sign ####";
    attachnpctimer;
    initnpctimer;
    next;
    goto Code;
    
    Code:
    set number1, rand (1000000,9999999);
    set number2, rand (1000000,9999999);
    set number3, rand (1000000,9999999);
    set number4, rand (1000000,9999999);
    set number5, rand (1000000,9999999);
    set number6, rand (1000000,9999999);
    set number00, rand (1000000,9999999);
    set number01, rand (1000000,9999999);
    set number02, rand (1000000,9999999);
    set number03, rand (1000000,9999999);
    set number04, rand (1000000,9999999);
    set number05, rand (1000000,9999999);
    set number06, rand (1000000,9999999);
    set number07, rand (1000000,9999999);
    set number08, rand (1000000,9999999);
    set number09, rand (1000000,9999999);
    set number10, rand (1000000,9999999);
    set number66, rand (1000,9999);
    set number99, rand (100,999);
    
    set @Col, rand (0,6);
    if(@Col == 0) goto colred;
    if(@Col == 1) goto colorg;
    if(@Col == 2) goto colblu;
    if(@Col == 3) goto colvio;
    if(@Col == 4) goto colgre;
    mes "^F5F9FD"+ number99 +"^000000^FFF9EE"+ number66 +"^000000^FF8C00"+ number2 +"^000000^F5F9FD"+ number05 +"^000000";
    mes "^F8F8FF"+ number66 +"^000000^F7F7FF"+ number99 +"^000000^A52A2A"+ number6 +"^000000^F5F9FD"+ number05 +"^000000";
    mes "^F5F9FD"+ number99 +"^000000^FFF9EE"+ number66 +"^000000^9400D3"+ number4 +"^000000^F8F8FF"+ number06 +"^000000";
    mes "^F5F9FD"+ number66 +"^000000^F7F7FF"+ number99 +"^000000^FF0000"+ number1 +"^000000^F5F9FD"+ number02 +"^000000";
    mes "^F8F8FF"+ number99 +"^000000^FFF9EE"+ number66 +"^000000^0000FF"+ number3 +"^000000^F8F8FF"+ number01 +"^000000";
    mes "^F5F9FD"+ number99 +"^000000^F7F7FF"+ number66 +"^000000^008000"+ number5 +"^000000^F5F9FD"+ number03 +"^000000";
    mes "^F7F7FF#^F5F9FD#^FFF9FA#^A52A2A####^FFF9EE##^F8F8FF#";
    next;
    input number;
    next;
    goto brochk;
    close;
    
    colgre:
    mes "^FFF9EE"+ number66 +"^000000^FFF9EE"+ number99 +"^000000^008000"+ number5 +"^000000^F5F9FD"+ number04 +"^000000";
    mes "^FFF9FA"+ number99 +"^000000^F7F7FF"+ number66 +"^000000^FFA500"+ number2 +"^000000^F5F9FD"+ number03 +"^000000";
    mes "^F5F9FD"+ number66 +"^000000^FFF9EE"+ number99 +"^000000^FF0000"+ number1 +"^000000^F5F9FD"+ number00 +"^000000";
    mes "^FFF9EE"+ number99 +"^000000^FFF9EE"+ number66 +"^000000^9400D3"+ number4 +"^000000^F5F9FD"+ number01 +"^000000";
    mes "^F7F7FF"+ number66 +"^000000^FFF9FA"+ number99 +"^000000^0000FF"+ number3 +"^000000^F5F9FD"+ number06 +"^000000";
    mes "^FFF9EE"+ number99 +"^000000^F5F9FD"+ number66 +"^000000^A52A2A"+ number6 +"^000000^F5F9FD"+ number05 +"^000000";
    mes "^F7F7FF#^FFF9FA#^F5F9FD#^008000####^F5F9FD#^F8F8FF#^FFF9EE##";
    next;
    input number;
    next;
    goto grechk;
    close;
    
    colvio:
    mes "^F7F7FF"+ number66 +"^000000^FFF9EE"+ number99 +"^000000^9400D3"+ number4 +"^000000^F5F9FD"+ number09 +"^000000";
    mes "^F7F7FF"+ number66 +"^000000^FFF9EE"+ number99 +"^000000^FFA500"+ number2 +"^000000^F5F9FD"+ number04 +"^000000";
    mes "^F7F7FF"+ number66 +"^000000^FFF9EE"+ number99 +"^000000^A52A2A"+ number6 +"^000000^F5F9FD"+ number05 +"^000000";
    mes "^FFF9EE"+ number99 +"^000000^F7F7FF"+ number66 +"^000000^FF0000"+ number1 +"^000000^F5F9FD"+ number06 +"^000000";
    mes "^FFF9EE"+ number99 +"^000000^F7F7FF"+ number66 +"^000000^0000FF"+ number3 +"^000000^F5F9FD"+ number08 +"^000000";
    mes "^FFF9EE"+ number99 +"^000000^F7F7FF"+ number66 +"^000000^008000"+ number5 +"^000000^F5F9FD"+ number01 +"^000000";
    mes "^F5F9FD#^FFF9EE#^FFF9FA#^9400D3####^F8F8FF#^F5F9FD##^F7F7FF##";
    next;
    input number;
    next;
    goto viochk;
    close;
    
    colblu:
    mes "^F8F8FF"+ number01 +"^000000^FFA500"+ number2 +"^000000^F7F7FF"+ number66 +"^000000^F5F9FD"+ number99 +"^000000";
    mes "^FFF9EE"+ number09 +"^000000^A52A2A"+ number6 +"^000000^F5F9FD"+ number66 +"^000000^FFF9EE"+ number99 +"^000000";
    mes "^F5F9FD"+ number08 +"^000000^FF0000"+ number1 +"^000000^F7F7FF"+ number66 +"^000000^FFF9EE"+ number99 +"^000000";
    mes "^F8F8FF"+ number07 +"^000000^0000FF"+ number3 +"^000000^F5F9FD"+ number66 +"^000000^F5F9FD"+ number99 +"^000000";
    mes "^FFF9EE"+ number06 +"^000000^008000"+ number5 +"^000000^F5F9FD"+ number66 +"^000000^FFF9EE"+ number99 +"^000000";
    mes "^F5F9FD"+ number05 +"^000000^9400D3"+ number4 +"^000000^F7F7FF"+ number66 +"^000000^F5F9FD"+ number99 +"^000000";
    mes "^FFF9EE###^0000FF####^F8F8FF####^F5F9FD#^FFF9FA#^F7F7FF##";
    next;
    input number;
    next;
    goto bluchk;
    close;
    
    colorg:
    mes "^FFF9EE"+ number4 +"^000000^A52A2A"+ number6 +"^000000^F5F9FD"+ number07 +"^000000";
    mes "^F8F8FF"+ number3 +"^000000^9400D3"+ number4 +"^000000^F5F9FD"+ number00 +"^000000";
    mes "^F5F9FD"+ number1 +"^000000^FF0000"+ number1 +"^000000^F5F9FD"+ number06 +"^000000";
    mes "^F8F8FF"+ number2 +"^000000^0000FF"+ number3 +"^000000^F5F9FD"+ number04 +"^000000";
    mes "^F5F9FD"+ number5 +"^000000^FF8C00"+ number2 +"^000000^F5F9FD"+ number08 +"^000000";
    mes "^F5F9FD"+ number6 +"^000000^008000"+ number5 +"^000000^F8F8FF"+ number10 +"^000000";
    mes "^F5F9FD#^FFF9EE####^FFA500####^F5F9FD#^F5F9FD####^F7F7FF##^FFF9FA##";
    next;
    input number;
    next;
    goto orgchk;
    close;
    
    colred:
    mes "^F5F9FD"+ number6 +"^000000^A52A2A"+ number6 +"^000000^F8F8FF"+ number10 +"^000000";
    mes "^F8F8FF"+ number5 +"^000000^008000"+ number5 +"^000000^F5F9FD"+ number09 +"^000000";
    mes "^F5F9FD"+ number3 +"^000000^9400D3"+ number4 +"^000000^F8F8FF"+ number08 +"^000000";
    mes "^F8F8FF"+ number1 +"^000000^0000FF"+ number3 +"^000000^F5F9FD"+ number07 +"^000000";
    mes "^F5F9FD"+ number2 +"^000000^FFA500"+ number2 +"^000000^F5F9FD"+ number05 +"^000000";
    mes "^F8F8FF"+ number5 +"^000000^FF0000"+ number1 +"^000000^F5F9FD"+ number02 +"^000000";
    mes "^F5F9FD##^FF0000####^F8F8FF####^FFF9FA#^FFF9EE#^F7F7FF#";
    next;
    input number;
    next;
    goto redchk;
    close;
    
    redchk:
    if(number < number1 || number > number1) goto LOG_FAIL;
      goto OK; close;
    orgchk:
    if(number < number2 || number > number2) goto LOG_FAIL;
        goto OK; close;
    bluchk:
    if(number < number3 || number > number3) goto LOG_FAIL;
      goto OK; close;
    viochk:
    if(number < number4 || number > number4) goto LOG_FAIL;
          goto OK; close;
    grechk:
    if(number < number5 || number > number5) goto LOG_FAIL;
      goto OK; close;
    brochk:
    if(number < number6 || number > number6) goto LOG_FAIL;
      goto OK; close;
      
    LOG_FAIL:
    if (@Fail <3) {
    mes "Please try again.";
    set @Fail, @Fail+1;
    next;
    goto Code;
    }
    mes "^FF0000You put wrong number.^000000.";
    next;
    mes "Bye... Bye...!";
    next;
    warp	"lhz_in03",	260, 261;
    setoption 0x40,0;
    setoption 0x2000,0;
    pcblockmove getcharid(3),0;
    sc_end sc_stone;
    sc_end sc_freeze;
    sc_end sc_sleep;
    sc_end sc_curse;
    sc_end sc_silence;
    sc_end sc_confusion;
    sc_end sc_blind;
    sc_end sc_bleeding;
    sc_end sc_decreaseagi;
    sc_end sc_poison;
    sc_end sc_hallucination;
    sc_end sc_stripweapon;
    sc_end sc_striparmor;
    sc_end sc_striphelm;
    sc_end sc_stripshield;
    atcommand "@noask";
    end;
    
    OK:
    mes "^4233F4"+strcharinfo(0)+"^000000!";
    mes "Thank you for not using bot at this server.";
    announce "Player "+strcharinfo(0)+" Online!!",bc_all;
    setoption 0x40,0;
    setoption 0x2000,0;
    pcblockmove getcharid(3),0;
    sc_start SC_GLORIA,1800000,2;
    sc_start SC_ANGELUS,1800000,10;
    sc_start SC_MAGNIFICAT,1800000,5;
    skilleffect 34,0;
    sc_start SC_BLESSING,1800000,10;
    sc_start SC_INCREASEAGI,1800000,10;
    percentheal 100,100;
    sc_end sc_stone;
    sc_end sc_freeze;
    sc_end sc_sleep;
    sc_end sc_curse;
    sc_end sc_silence;
    sc_end sc_confusion;
    sc_end sc_blind;
    sc_end sc_bleeding;
    sc_end sc_decreaseagi;
    sc_end sc_poison;
    sc_end sc_hallucination;
    sc_end sc_stripweapon;
    sc_end sc_striparmor;
    sc_end sc_striphelm;
    sc_end sc_stripshield;
    atcommand "@noask";
    cutin "ein_soldier",255;
    end;
    
    gm_admin:
    mes "Welcome GM ^4233F4"+strcharinfo(0)+"^000000!";
    announce "GM "+strcharinfo(0)+" Online!!",bc_all;
    cutin "ein_soldier",255;
    sc_start SC_GLORIA,1800000,2;
    sc_start SC_ANGELUS,1800000,10;
    sc_start SC_MAGNIFICAT,1800000,5;
    skilleffect 34,0;
    sc_start SC_BLESSING,1800000,10;
    sc_start SC_INCREASEAGI,1800000,10;
    percentheal 100,100;
    sc_end sc_stone;
    sc_end sc_freeze;
    sc_end sc_sleep;
    sc_end sc_curse;
    sc_end sc_silence;
    sc_end sc_confusion;
    sc_end sc_blind;
    sc_end sc_bleeding;
    sc_end sc_decreaseagi;
    sc_end sc_poison;
    sc_end sc_hallucination;
    sc_end sc_stripweapon;
    sc_end sc_striparmor;
    sc_end sc_striphelm;
    sc_end sc_stripshield;
    close;
    
    OnTimer30000:
    dispbottom "You failed to answer the question within 30 seconds.";
    warp	"lhz_in03",	260, 261;
    setoption 0x40,0;
    setoption 0x2000,0;
    pcblockmove getcharid(3),0;
    sc_end sc_stone;
    sc_end sc_freeze;
    sc_end sc_sleep;
    sc_end sc_curse;
    sc_end sc_silence;
    sc_end sc_confusion;
    sc_end sc_blind;
    sc_end sc_bleeding;
    sc_end sc_decreaseagi;
    sc_end sc_poison;
    sc_end sc_hallucination;
    sc_end sc_stripweapon;
    sc_end sc_striparmor;
    sc_end sc_striphelm;
    sc_end sc_stripshield;
    atcommand "@noask";
    stopnpctimer;
    }
    }
    }
    
    // - The Script
    lhz_in03,260,266,4	script	Bot Checker	75,{
    mes "You already fail";
    mes "to prove if you are not bot.";
    mes "To get out fom this room";
    mes "you must pay me 10.000.000 zeny.";
    next;
    switch(select("Pay:No")) {
    	case 1:
    	if (zeny < 10000000) {
    		mes "Your zeny not enough";
    		close;
    	}
    	set zeny, zeny - 10000000;
    	set @Fail, 0;
    	warp prontera,0,0;
    	close;
    
    	case 2:
    	mes "[ GM Staff ]";
    	mes "Ok. Bye... Bye...";
    	close;
    }
    }
    // - The Mapflags
    lhz_in03	mapflag	nowarpto
    lhz_in03	mapflag	nowarp
    lhz_in03	mapflag	noreturn
    lhz_in03	mapflag	noteleport
    lhz_in03	mapflag	nomemo
    lhz_in03	mapflag	noskill
    lhz_in03	mapflag	noicewall
    lhz_in03	mapflag	nobranch
    lhz_in03	mapflag	nogo

    the thing is even i input the code correctly it still sends me to interrogation room

    can anyone help me with this thanks

  9. 2 hours ago, Patskie said:
    prontera,147,163,5	script	VIP Manager	4_M_PRESIDENT,{
    OnTalk:
    	mes .npc$;
    	mes (gettime(3)>= 6&&gettime(3)<= 12?"Good Morning":(gettime(3)>=13&&gettime(3)<=18?"Good Afternoon":"Good Evening"))+", ^008aff"+strcharinfo(0)+"^000000 !";
    	mes "Welcome to VIP Central.";
    	if (vip_status(1)) {
    		mes "^008affYour VIP access will expire on " + callfunc("Time2Str",vip_status(2)) + ".^000000";
    		mes " ";		
    	}
    	mes "How can I help?";
    	next;
    	switch (select(.bcor$+"I want to go to Central VIP.",""+((vip_status(1))?""+.bcor$+"I want to extend my time ^008affVIP^000000.":""+.bcor$+"I wish to become a ^008affVIP^000000 player."),""+.rcor$+"I do not want anything.")){
    		case 1:
    			if (!vip_status(1) ) {
    				mes .npc$;
    				mes "Excuse me! Access to VIP Central is only allowed to ^008affVIP^000000 players.";
    				mes "-----------------------------------";
    				mes "Ask Admin Team and learn how to become a ^008affVIP^000000 player.";
    				mes "-----------------------------------";
    				close;
    			}
    			warp .map$,.cord[0],.cord[1];
    			end;
    		case 2:
    			mes .npc$;
    			mes "How many days of access ^008affVIP^000000 do you want to acquire?";
    			next;
    			.@i = select(
    				.bcor$+""+.vip_day[0] + " Days."
    				,.bcor$+""+.vip_day[1] + " Days."
    				,.bcor$+""+.vip_day[2] + " Days."
    				) - 1;
    				
    			mes .npc$;
    			mes "You chose the plan of:";
    			mes "^4527A0VIP:^000000 "+.vip_day[.@i]+" VIP days.";
    			mes "^4527A0Price:^000000 "+F_InsertComma(.vip_cashpoint[.@i])+" #CASHPOINTS.";
    			sleep2 1000;
    			mes " ";
    			mes " ";
    			mes "What do you want to do?";
    			next;
    			switch(select(.bcor$+"Purchase:"+.rcor$+"Cancel")){
    				case 1:
    					if ( #CASHPOINTS < .vip_cashpoint[.@i] ) {
    					mes .npc$;
    					mes "You do not have the quantity of ^008aff"+F_InsertComma(.vip_cashpoint[.@i])+" #CASHPOINTS^000000.";
    					close;
    				}
    				else {
    					#CASHPOINTS -= .vip_cashpoint[.@i];
    					vip_time (.vip_day[.@i] * 1440);
    					mes .npc$;
    					mes "Congratulations you just got "+.vip_day[.@i]+" days VIP.";
    					rentitem 5001, .vip_day[.@i] * 86400;
    					close;
    				}
    				end;
    				case 2:
    					mes .npc$;
    					mes "All right, come back whenever you want.";
    					close;
    			}
    
    		case 3:
    			close;
    	}
    
    OnInit:
    	.npc$ = "^FF7F00[ VIP Central ]^000000";						// Name of NPC;
    	.bcor$ = "^008aff[»]^000000 ";									// Option Button Symbol;
    	.rcor$ = "^ff0000[»]^000000 ";									// Cancel button symbol;
    	setarray .vip_day,7,14,30;										// Number of days that can be purchased;
    	setarray .vip_cashpoint,5000,7000,10000;						// Price in #CASHPOINTS;
    	.map$ = "sec_in02";												// VIP Room Map;
    	setarray .cord,130,161;											// X and Y Coordinate;
    	end;
    }

     

    thanks sir @Patskie really appreciate it ?

  10. 30 minutes ago, Resu-Me said:
    prontera,146,196,4	script	Stat Seller	831,{
    	readparam(bStr);
    	readparam(bAgi);
    	readparam(bVit);
    	readparam(bInt);
    	readparam(bDex);
    	readparam(bLuk);
    	mes "[ Stat Seller ]";
    	mes "Good day, I am the stat seller";
    	next;
    	mes "[ Stat Seller ]";
    	mes "I sell 10 stat points directly to your desired stat.";
    	next;
    	mes "[ Stat Seller ]";
    	mes "Each 10 stat points cost 50,000,000 zeny.";
    	mes "Would you like to buy 10 stat points from me?";
    	next;
    	mes "[ Stat Seller ]";
    	mes "But please note that when you buy stats,";
    	mes "The additional stat points will not be added when you reset your character stats!";
    	next;
    	mes "[ Stat Seller ]";
    	mes "So please make sure that when you do this,";
    	mes "You won't regret it later!";
    	next;
    	mes "[ Stat Seller ]";
    	mes "Do you still want to buy stat points?";
    	next;
    	menu "Yes",YES,"No",NO;
    
    	YES:
    	mes "[ Stat Seller ]";
    	if(Zeny < 49999999) goto no400k;
    	mes "Which status points would you like me to distribute?";
    	next;
    	menu "Str",STR,"Agi",AGI,"Vit",VIT,"Int",INT,"Dex",DEX,"Luk",LUK;
    	STR:
    		if (readparam(bStr) > 489) goto M_Limit;
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bStr,10;
    		set Zeny, Zeny - 50000000; // change this to delitem itemID,Qty;  or set #CASHPOINTS,Amount;
    		close;
    	AGI:
    		if (readparam(bAgi) > 489) goto M_Limit;
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bAgi,10;
    		set Zeny, Zeny - 50000000; // change this to delitem itemID,Qty;  or set #CASHPOINTS,Amount;
    		close;
    	VIT:
    		if (readparam(bVit) > 489) goto M_Limit;
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bVit,10;
    		set Zeny, Zeny - 50000000; // change this to delitem itemID,Qty;  or set #CASHPOINTS,Amount;
    		close;
    	INT:
    		if (readparam(bInt) > 489) goto M_Limit;
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bInt,10;
    		set Zeny, Zeny - 50000000; // change this to delitem itemID,Qty;  or set #CASHPOINTS,Amount;
    		close;
    	DEX:
    		if (readparam(bDex) > 489) goto M_Limit;
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bDex,10;
    		set Zeny, Zeny - 50000000; // change this to delitem itemID,Qty;  or set #CASHPOINTS,Amount;
    		close;
    	LUK:
    		if (readparam(bLuk) > 489) goto M_Limit;
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bLuk,10;
    		set Zeny, Zeny - 50000000; // change this to delitem itemID,Qty;  or set #CASHPOINTS,Amount;
    		close;
    
    	M_Limit:
    		mes "[ Stat Seller ]";
    		mes "You have already reached max on selected stat!";
    		next;
    		mes "[ Stat Seller ]";
    		mes "Please choose another stat.";
    		next;
    		menu "Str",STR,"Agi",AGI,"Vit",VIT,"Int",INT,"Dex",DEX,"Luk",LUK;
    		close;
    
    	no400k:
    		mes "[ Stat Seller ]";
    		mes "Apparently, you don't have enough zeny to buy these points.";
    		next;
    		mes "[ Stat Seller ]";
    		mes "Come by any time.";
    		close;
    NO:
    	mes "[ Stat Seller ]";
    	mes "Come by if you need me.";
    	close;
    	}

    Here you go.

    Don't forget to change the messages based on your desired requirements (Zeny/Cashpoints/Item)

     

    PRRstatseller v1.001.txt 3.92 kB · 1 download

    thanks a lot ?❤️

  11. anyone can edit or help me add like

    if they bought 7days VIP it will include an custom rented item also the same days VIP bought

    like 7days/14/30 depending on the VIP duration bought

    here is the script

    PS: Script not mine credit to the owner of the script

    prontera,147,163,5	script	VIP Manager	4_M_PRESIDENT,{
    OnTalk:
    	mes .npc$;
    	mes (gettime(3)>= 6&&gettime(3)<= 12?"Good Morning":(gettime(3)>=13&&gettime(3)<=18?"Good Afternoon":"Good Evening"))+", ^008aff"+strcharinfo(0)+"^000000 !";
    	mes "Welcome to VIP Central.";
    	if (vip_status(1)) {
    		mes "^008affYour VIP access will expire on " + callfunc("Time2Str",vip_status(2)) + ".^000000";
    		mes " ";		
    	}
    	mes "How can I help?";
    	next;
    	switch (select(.bcor$+"I want to go to Central VIP.",""+((vip_status(1))?""+.bcor$+"I want to extend my time ^008affVIP^000000.":""+.bcor$+"I wish to become a ^008affVIP^000000 player."),""+.rcor$+"I do not want anything.")){
    		case 1:
    			if (!vip_status(1) ) {
    				mes .npc$;
    				mes "Excuse me! Access to VIP Central is only allowed to ^008affVIP^000000 players.";
    				mes "-----------------------------------";
    				mes "Ask Admin Team and learn how to become a ^008affVIP^000000 player.";
    				mes "-----------------------------------";
    				close;
    			}
    			warp .map$,.cord[0],.cord[1];
    			end;
    		case 2:
    			mes .npc$;
    			mes "How many days of access ^008affVIP^000000 do you want to acquire?";
    			next;
    			.@i = select(
    				.bcor$+""+.vip_day[0] + " Days."
    				,.bcor$+""+.vip_day[1] + " Days."
    				,.bcor$+""+.vip_day[2] + " Days."
    				) - 1;
    				
    			mes .npc$;
    			mes "You chose the plan of:";
    			mes "^4527A0VIP:^000000 "+.vip_day[.@i]+" VIP days.";
    			mes "^4527A0Price:^000000 "+F_InsertComma(.vip_cashpoint[.@i])+" #CASHPOINTS.";
    			sleep2 1000;
    			mes " ";
    			mes " ";
    			mes "What do you want to do?";
    			next;
    			switch(select(.bcor$+"Purchase:"+.rcor$+"Cancel")){
    				case 1:
    					if ( #CASHPOINTS < .vip_cashpoint[.@i] ) {
    					mes .npc$;
    					mes "You do not have the quantity of ^008aff"+F_InsertComma(.vip_cashpoint[.@i])+" #CASHPOINTS^000000.";
    					close;
    				}
    				else {
    					#CASHPOINTS -= .vip_cashpoint[.@i];
    					vip_time (.vip_day[.@i] * 1440);
    					mes .npc$;
    					mes "Congratulations you just got "+.vip_day[.@i]+" days VIP.";
    					close;
    				}
    				end;
    				case 2:
    					mes .npc$;
    					mes "All right, come back whenever you want.";
    					close;
    			}
    
    		case 3:
    			close;
    	}
    
    OnInit:
    	.npc$ = "^FF7F00[ VIP Central ]^000000";						// Name of NPC;
    	.bcor$ = "^008aff[»]^000000 ";									// Option Button Symbol;
    	.rcor$ = "^ff0000[»]^000000 ";									// Cancel button symbol;
    	setarray .vip_day,7,14,30;										// Number of days that can be purchased;
    	setarray .vip_cashpoint,5000,7000,10000;						// Price in #CASHPOINTS;
    	.map$ = "sec_in02";												// VIP Room Map;
    	setarray .cord,130,161;											// X and Y Coordinate;
    	end;
    }

    Thanks in advance i would really appreciate it ?❤️

  12. 4 hours ago, Resu-Me said:

    If your server max stat is 500, it cannot go beyond that. As for example you set it to <500, any amount below 490 can still be accepted as long as it can reach its limit which is 500, but if the stat has 491 up to 500 it will be rejected as you set it to limit of 500 and each stat bonus gives you 10 points.

    I hope you get it?

     

    If (bStr <500)  - this means you can buy stats from 0 to 490. if your stat is already 491 and above, you cannot buy anymore.

    ayt thanks a lot ?

    will this be possible aside from zeny i mean rather than zeny

    item will be the required to buy stats?

    TIA

     

    EDIT: @Resu-Mestill the same i edited it to 490 coz my max stats is 500

    image.png.0687ff99634ea3fa6fbc2d05a2b77a4e.png

    prontera,147,173,5	script	Stat Dealer	99,{
    
    mes "[ Stat Seller ]";
    mes "Good day, I am the stat seller";
    next;
    mes "[ Stat Seller ]";
    mes "I sell 10 stat points directly to your desired stat.";
    next;
    mes "[ Stat Seller ]";
    mes "Each 10 stat points cost 50,000,000 zeny.";
    mes "Would you like to buy 10 stat points from me?";
    next;
    menu "Yes",YES,"No",NO;
    YES:
    	mes "[ Stat Seller ]";
    	if(Zeny < 49999999) goto no50m;
    	mes "Which status points would you like me to distribute?";
    	next;
    	menu "Str",STR,"Agi",AGI,"Vit",VIT,"Int",INT,"Dex",DEX,"Luk",LUK;
    	STR:
    		if(bStr < 490) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bStr,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	AGI:
    		if(bAgi < 490) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bAgi,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	VIT:
    		if(bVit < 490) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bVit,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;  //-- Change the value to your server's max stat
    		close;
    	INT:
    		if(bInt < 490) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bInt,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	DEX:
    		if(bDex < 490) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bDex,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	LUK:
    		if(bLuk < 490) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bLuk,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    
    	M_Limit:
    		mes "[ Stat Seller ]";
    		mes "You have already reached max on selected stat!";
    		next;
    		mes "[ Stat Seller ]";
    		mes "Please choose another stat.";
    		next;
    		menu "Str",STR,"Agi",AGI,"Vit",VIT,"Int",INT,"Dex",DEX,"Luk",LUK;
    		close;
    
    	no50m:
    		mes "[ Stat Seller ]";
    		mes "Apparently, you don't have enough zeny to buy these points.";
    		next;
    		mes "[ Stat Seller ]";
    		mes "Come by any time.";
    		close;
    NO:
    	mes "[ Stat Seller ]";
    	mes "Come by if you need me.";
    	close;
    	}

    here is the edited script

  13. nice script but it says max stats already reached

    i even edit it to my game max stats

    //=========================== Resu-Me ==============================
    //============= Compatible with any rAthena Version ================
    //======= Please check the guide and report for any bugs ===========
    //=========== This is an updated version of the script! ============
    //== Any previous versions of this script does not belong to me! ==
    //==================================================================
    prontera,168,179,0	script	Stat Seller	831,{
    mes "[ Stat Seller ]";
    mes "Good day, I am the stat seller";
    next;
    mes "[ Stat Seller ]";
    mes "I sell 10 stat points directly to your desired stat.";
    next;
    mes "[ Stat Seller ]";
    mes "Each 10 stat points cost 50,000,000 zeny.";
    mes "Would you like to buy 10 stat points from me?";
    next;
    menu "Yes",YES,"No",NO;
    YES:
    	mes "[ Stat Seller ]";
    	if(Zeny < 49999999) goto no50m;
    	mes "Which status points would you like me to distribute?";
    	next;
    	menu "Str",STR,"Agi",AGI,"Vit",VIT,"Int",INT,"Dex",DEX,"Luk",LUK;
    	STR:
    		if(bStr < 500) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bStr,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	AGI:
    		if(bAgi < 500) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bAgi,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	VIT:
    		if(bVit < 500) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bVit,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;  //-- Change the value to your server's max stat
    		close;
    	INT:
    		if(bInt < 500) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bInt,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	DEX:
    		if(bDex < 500) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bDex,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    	LUK:
    		if(bLuk < 500) goto M_Limit;  //-- Change the value to your server's max stat
    		next;
    		mes "[ Stat Seller ]";
    		mes "There you go.";
    		mes "Come by again.";
    		statusup2 bLuk,10;  //-- Change this value if you want to give more than 10 stats
    		set Zeny, Zeny - 50000000;
    		close;
    
    	M_Limit:
    		mes "[ Stat Seller ]";
    		mes "You have already reached max on selected stat!";
    		next;
    		mes "[ Stat Seller ]";
    		mes "Please choose another stat.";
    		next;
    		menu "Str",STR,"Agi",AGI,"Vit",VIT,"Int",INT,"Dex",DEX,"Luk",LUK;
    		close;
    
    	no50m:
    		mes "[ Stat Seller ]";
    		mes "Apparently, you don't have enough zeny to buy these points.";
    		next;
    		mes "[ Stat Seller ]";
    		mes "Come by any time.";
    		close;
    NO:
    	mes "[ Stat Seller ]";
    	mes "Come by if you need me.";
    	close;
    	}

     

  14. 44 minutes ago, Emistry said:
    StatusPoint += (RESET_COUNT * 10); // free 10 status point per reset.

    add this to your reset npc script.

     

    sir @Emistry

    this one is already in the script but it doesnt add 10 stats points

    prontera,143,173,5	script	Level Reset	757,{
    	if (BaseLevel < 255) {
    		mes "You need to be at least level 99.";
    	}
    	else if (select("Reset", "cancel") == 1) {
    		resetlvl 1;
    		RESET_COUNT++
    		StatusPoint += (RESET_COUNT * 10); // free 10 status point per reset.
    		
    		if (RESET_COUNT && RESET_COUNT % 10 == 0) {
    			getitem 512, 10; // every 10 reset get apple.
    		}
    	}
    	close2;
    }

    i made it close2 coz it got warning on console

    TY again in advance

  15. 10 hours ago, Emistry said:
    prontera,155,181,5	script	Sample	757,{
    	if (BaseLevel < 99) {
    		mes "You need to be at least level 99.";
    	}
    	else if (select("Reset", "cancel") == 1) {
    		resetlvl 1;
    		RESET_COUNT++
    		StatusPoint += (RESET_COUNT * 10); // free 10 status point per reset.
    		
    		if (RESET_COUNT && RESET_COUNT % 10 == 0) {
    			getitem 512, 10; // every 10 reset get apple.
    		}
    	}
    	close;
    }

     

    @Emistry i tried the script what happen is

    first after reset no 

    free 10 status point per reset.

    second added stats are gone example like 500 str after reset it will become 1 str

    can the status added stays after reset?

    third i tried my reset stat NPC after resetting all the accumulated statpoints are gone

    the only left is the 7237 statpoints that can be acquired lvl 1-255

    i've checked my  use_statpoint_table: no 

    its in "no" already still the extra statpoints is gone ?

    can you help me thanks in advance

  16. 8 hours ago, Emistry said:
    prontera,155,181,5	script	Sample	757,{
    	if (BaseLevel < 99) {
    		mes "You need to be at least level 99.";
    	}
    	else if (select("Reset", "cancel") == 1) {
    		resetlvl 1;
    		RESET_COUNT++
    		StatusPoint += (RESET_COUNT * 10); // free 10 status point per reset.
    		
    		if (RESET_COUNT && RESET_COUNT % 10 == 0) {
    			getitem 512, 10; // every 10 reset get apple.
    		}
    	}
    	close;
    }

     

    thanks a lot ill try this one ?❤️

×
×
  • Create New...