Jump to content
  • 0

Script Auto Potion not use on attack


ittiphol

Question


  • Group:  Members
  • Topic Count:  27
  • Topics Per Day:  0.01
  • Content Count:  115
  • Reputation:   7
  • Joined:  05/09/19
  • Last Seen:  

This script it's works fine

but not use Auto Potion on attack

 

I must use this script please fix on this script ?

please help ....

 

//===== 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;
}
Edited by ittiphol
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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...