Jump to content
  • 0

Euphys Auto Potion


Quazy

Question


  • Group:  Members
  • Topic Count:  12
  • Topics Per Day:  0.00
  • Content Count:  44
  • Reputation:   0
  • Joined:  11/21/13
  • Last Seen:  

//===== rAthena Script =======================================
//= Auto-Potion
//===== By: ==================================================
//= Euphy
//===== Current Version: =====================================
//= 1.0
//===== Compatible With: =====================================
//= rAthena Project
//===== Description: =========================================
//= Provides an @autopot command to automatically use potions
//= when hit (i.e. 'autobonus2').
//===== Additional Comments: =================================
//= 1.0 First version. [Euphy]
//============================================================

-	script	#autopot	-1,{
OnInit:
	bindatcmd("autopot",strnpcinfo(0)+"::OnCommand");
	end;

L_Help:
	dispbottom "Available commands:";
	dispbottom "    @autopot <item id> {<min hp % [1..100]> {<delay [50..1000]>}}";
	dispbottom "    @autopot <on|off>";
	dispbottom "    @autopot list";
	dispbottom "    @autopot info";
	dispbottom "    @autopot help";
	return;

L_Info:
	dispbottom "------ Auto-Potion Information ------";
	dispbottom "POTION:  " + getitemname(@autopot_id) + " (" + @autopot_id + ")";
	dispbottom "MIN HP:   " + @autopot_min + " %";
	dispbottom "DELAY:    " + @autopot_delay + " ms";
	dispbottom "---------------------------------------------";
	return;

L_Start:
	.@potion = getarg(0);
	.@min    = getarg(1);
	.@delay  = getarg(2);
	if (.@min   < 1  || .@min   > 100)  .@min   = 90;
	if (.@delay < 50 || .@delay > 1000) .@delay = 50;  // lower values will increase server strain
	switch (.@potion) {
		case 501:
		case 507:
		case 545:
		case 569: .@effect = EF_POTION1; break;
		case 502: .@effect = EF_POTION2; break;
		case 503:
		case 508:
		case 546:
		case 579:
		case 11500: .@effect = EF_POTION3; break;
		case 504:
		case 509:
		case 547:
		case 11501:
		case 11503:
		case 11548: .@effect = EF_POTION4; break;
		case 512:
		case 513:
		case 515:
		case 516:
		case 548:
		case 549:
		case 550:
		case 582:
		case 607: .@effect = EF_POTION7; break;
		default: .@effect = EF_EXIT; break;
	}

	if (BaseLevel < getiteminfo(.@potion,12)) {
		message strcharinfo(0), "Your base level is too low to use '" + getitemname(.@potion) + "'.";
		end;
	}

	@autopot_id    = .@potion;
	@autopot_min   = .@min;
	@autopot_delay = .@delay;
	@autopot_eff   = .@effect;
	@autopot_none  = 0;
	bonus_script "{ callfunc \"start_autopot\"; }",86400,8,0,SI_INCHEALRATE;

	message strcharinfo(0), "Auto-Potion started.";
	callsub L_Info;
	return;

OnCommand:
	if (!getarraysize(.@atcmd_parameters$)) {
		message strcharinfo(0), "Invalid syntax.";
		callsub L_Help;
		end;
	}

	.@command$ = strtolower(.@atcmd_parameters$[0]);

	if (.@command$ == "on") {
		if (@autopot_min)
			message strcharinfo(0), "Auto-Potion is already on.";
		else if (@autopot_min_) {
			@autopot_min  = @autopot_min_;
			@autopot_min_ = 0;
			message strcharinfo(0), "Auto-Potion enabled.";
			callsub L_Info;
		} else {
			message strcharinfo(0), "Auto-Potion has not been set.";
			callsub L_Help;
		}
		end;
	} else if (.@command$ == "off") {
		if (!@autopot_min)
			message strcharinfo(0), "Auto-Potion is already off.";
		else {
			@autopot_min_ = @autopot_min;
			@autopot_min  = 0;
			message strcharinfo(0), "Auto-Potion disabled.";
		}
		end;
	} else if (.@command$ == "list") {  // credits to AnnieRuru
		getinventorylist;
		for (; .@i < @inventorylist_count; .@i++) {
			if (getiteminfo(@inventorylist_id[.@i],2) == IT_HEALING) {
				.@items[.@count] = @inventorylist_id[.@i];
				.@menu$ = .@menu$ + sprintf("~ ^0055FF%s^000000 (%dx):", getitemname(@inventorylist_id[.@i]), countitem(@inventorylist_id[.@i]));
				.@count++;
			}
		}
		if (.@count) {	// 'mes' window needed if player is hit during selection
			mes "[ Auto-Potion ]";
			mes "Select a healing item.";
			.@select = select(.@menu$ + "   ^777777Cancel^000000") - 1;
			if (.@select != .@count)
				callsub L_Start, .@items[.@select], 0, 0;
			close2;
		} else
			message strcharinfo(0), "There are no healing items in your inventory.";
		end;
	} else if (.@command$ == "info") {
		if (@autopot_min) {
			message strcharinfo(0), "Auto-Potion information is displayed below.";
			callsub L_Info;
		} else
			message strcharinfo(0), "Auto-Potion is not enabled.";
		end;
	} else if (.@command$ == "help") {
		message strcharinfo(0), "List of commands is displayed below.";
		callsub L_Help;
		end;
	} else {
		.@potion = atoi(.@atcmd_parameters$[0]);
		if (getiteminfo(.@potion,2) != IT_HEALING) {
			message strcharinfo(0), getitemname(.@potion) + " is not a healing item.";
			end;
		}
		callsub L_Start, .@potion, atoi(.@atcmd_parameters$[1]), atoi(.@atcmd_parameters$[2]);
		end;
	}
}

function	script	start_autopot	{
	if (@autopot_active) end;
	@autopot_active = 1;
	while (Hp && Hp * 100 / MaxHp < @autopot_min) {
		if (!countitem(@autopot_id)) {
			if (@autopot_none <= gettimetick(2)) {
				@autopot_none = gettimetick(2) + 10;
				dispbottom "There are no '" + getitemname(@autopot_id) + "' in your inventory.";
			}
			break;
		}
		if (getstatus(SC_BERSERK) || getstatus(SC_SATURDAYNIGHTFEVER) || getstatus(SC_GRAVITATION) ||
		    getstatus(SC_TRICKDEAD) || getstatus(SC_HIDING) || getstatus(SC__SHADOWFORM) || getstatus(SC__INVISIBILITY) ||
		    getstatus(SC__MANHOLE) || getstatus(SC_KAGEHUMI) || getstatus(SC_HEAT_BARREL_AFTER))
			break;
		if (getstatus(SC_STONE) || getstatus(SC_FREEZE) || getstatus(SC_STUN) || getstatus(SC_SLEEP))
			;
		else {
			delitem @autopot_id,1;
			consumeitem @autopot_id;
			specialeffect2 @autopot_eff;
		}
		sleep2 @autopot_delay;
	}
	@autopot_active = 0;
	autobonus2 "{}",10000,1,BF_WEAPON|BF_MAGIC;
	end;
}

 

Hello Guys!  can you help me with my problem? can someone please help me how to make this auto potion works only for group id 1 or higher only? thank you!!

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 1

  • Group:  Members
  • Topic Count:  1
  • Topics Per Day:  0.00
  • Content Count:  71
  • Reputation:   25
  • Joined:  11/23/11
  • Last Seen:  

Just replace 

bindatcmd("autopot",strnpcinfo(0)+"::OnCommand");

with

bindatcmd("autopot",strnpcinfo(0)+"::OnCommand",1);

 

  • Upvote 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  12
  • Topics Per Day:  0.00
  • Content Count:  44
  • Reputation:   0
  • Joined:  11/21/13
  • Last Seen:  

13 hours ago, Omnipotent said:

Just replace 


bindatcmd("autopot",strnpcinfo(0)+"::OnCommand");

with


bindatcmd("autopot",strnpcinfo(0)+"::OnCommand",1);

 

not working sir

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  12
  • Topics Per Day:  0.00
  • Content Count:  44
  • Reputation:   0
  • Joined:  11/21/13
  • Last Seen:  

On 11/25/2016 at 3:16 AM, Omnipotent said:

Just replace 


bindatcmd("autopot",strnpcinfo(0)+"::OnCommand");

with


bindatcmd("autopot",strnpcinfo(0)+"::OnCommand",1);

 

the first comment works sir! thank you very much! i forgot to reload hahaha!

 

btw sir can you make it autopotion detect SP too? because euphys autopotion only detects HP. can you make it for SP too? so champion's asura can spam ^_^ 

 

THANK YOU VERY MUCH for the help!

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  12
  • Topics Per Day:  0.00
  • Content Count:  44
  • Reputation:   0
  • Joined:  11/21/13
  • Last Seen:  

up! need help for SP too!

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  2
  • Topics Per Day:  0.00
  • Content Count:  10
  • Reputation:   0
  • Joined:  06/08/15
  • Last Seen:  

Can't get this to work for my server :(

using 2015 client

git version : 552c39acc3e8f74f1a99d855641d67b7f2adf46e

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...