Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
…#6307) * Added a missing argument of getiteminfo script command in some script * Fixed the missing curly in ticket_refiner.txt Thanks to @Lemongrass3110 @aleos89 @Daegaladh @Skystar18
201 lines (192 sloc)
7.27 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| //===== rAthena Script ======================================= | |
| //= Auto-Potion | |
| //===== Description: ========================================= | |
| //= Provides an @autopot command to automatically use potions. | |
| //===== Changelogs: ========================================== | |
| //= 1.0 First version. [Euphy] | |
| //= 2.0 rewrite and adding SP option. [sader1992] | |
| //============================================================ | |
| - script #autopot -1,{ | |
| OnInit: | |
| .HP_Option = true; //Allow HP option | |
| .SP_Option = true; //Allow SP option | |
| .MinDelay = 100; //Minimum Delay Allowed in milliseconds (Default and Recommended: 100) [lower values will increase server strain] | |
| setarray .blackList[0],0; //Array of black listed item ID | |
| if(!.HP_Option && !.SP_Option){ | |
| debugmes "Warning: @autopot both hp and sp are Disabled"; | |
| debugmes "Warning: @autopot script has been Disabled!"; | |
| end; | |
| } | |
| bindatcmd("autopot",strnpcinfo(0)+"::OnCommand",0,99); | |
| end; | |
| L_Help: | |
| dispbottom "Available commands:"; | |
| if(.HP_Option && .SP_Option){ | |
| dispbottom " @autopot <hp|sp> <item id> {<min hp|sp % [1..100]> {<delay [" + .MinDelay + "..1000]>}}"; | |
| dispbottom " @autopot <hp|sp> list"; | |
| dispbottom " @autopot <hp|sp> <on|off>"; | |
| }else{ | |
| dispbottom " @autopot <" + (.HP_Option?"hp":"sp") + "> <item id> {<min " + (.HP_Option?"hp":"sp") + " % [1..100]> {<delay [" + .MinDelay + "..1000]>}}"; | |
| dispbottom " @autopot <" + (.HP_Option?"hp":"sp") + "> list"; | |
| dispbottom " @autopot <" + (.HP_Option?"hp":"sp") + "> <on|off>"; | |
| } | |
| dispbottom " @autopot info"; | |
| dispbottom " @autopot help"; | |
| dispbottom " @autopot blacklist"; | |
| return; | |
| L_Info: | |
| dispbottom "----------Auto-Potion Information-----------"; | |
| if(.HP_Option){ | |
| dispbottom "HP POTION: " + getitemname(@autopot_hp_ID) + " (" + @autopot_hp_ID + ")"; | |
| dispbottom "MIN HP: " + @autopot_hp_Min + " %"; | |
| } | |
| if(.SP_Option){ | |
| dispbottom "SP POTION: " + getitemname(@autopot_sp_ID) + " (" + @autopot_sp_ID + ")"; | |
| dispbottom "MIN SP: " + @autopot_sp_Min + " %"; | |
| } | |
| dispbottom "DELAY: " + @autopot_delay + " ms"; | |
| dispbottom "---------------------------------------------"; | |
| return; | |
| L_Start: | |
| deltimer strnpcinfo(3) + "::OnStart"; | |
| .@type$ = getarg(0,0); | |
| .@potion = getarg(1,0); | |
| setd "@autopot_" + .@type$ + "_Min",getarg(2,0); | |
| @autopot_delay = getarg(3,0); | |
| if (getd("@autopot_" + .@type$ + "_Min") < 1 || getd("@autopot_" + .@type$ + "_Min") > 100) setd "@autopot_" + .@type$ + "_Min",90; | |
| if (@autopot_delay < 50 || @autopot_delay > 1000) @autopot_delay = .MinDelay; | |
| if (getiteminfo(.@potion, ITEMINFO_TYPE) != IT_HEALING) { | |
| dispbottom getitemname(.@potion) + " is not a healing item."; | |
| end; | |
| } | |
| if(inarray(.blackList[0],.@potion) != -1){ | |
| message strcharinfo(0), "'" + getitemname(.@potion) + "' is black listed and cannot be used."; | |
| end; | |
| } | |
| if (BaseLevel < getiteminfo(.@potion, ITEMINFO_EQUIPLEVELMIN)) { | |
| message strcharinfo(0), "Your base level is too low to use '" + getitemname(.@potion) + "'."; | |
| end; | |
| } | |
| setd "@autopot_" + .@type$ + "_ID",.@potion; | |
| setd "@autopot_" + .@type$ + "_Active",true; | |
| addtimer .@delay,strnpcinfo(3) + "::OnStart"; | |
| message strcharinfo(0), "Auto-Potion " + strtoupper(.@type$) + " enabled."; | |
| callsub L_Info; | |
| return; | |
| OnCommand: | |
| if (!getarraysize(.@atcmd_parameters$)) { | |
| message strcharinfo(0), "Invalid syntax."; | |
| callsub L_Help; | |
| end; | |
| } | |
| .@command$[0] = strtolower(.@atcmd_parameters$[0]); | |
| .@command$[1] = strtolower(.@atcmd_parameters$[1]); | |
| if(.@command$[0] == "hp" || .@command$[0] == "sp"){ | |
| if((!.HP_Option && .@command$[0] == "hp") || (!.SP_Option && .@command$[0] == "sp")){ | |
| message strcharinfo(0), "Auto-Potion " + strtoupper(.@command$[0]) + " is Disabled from The Server."; | |
| end; | |
| } | |
| if(.@command$[1] == "on"){ | |
| if(getd("@autopot_" + .@command$[0] + "_Active")){ | |
| message strcharinfo(0), "Auto-Potion " + strtoupper(.@command$[0]) + " is already on."; | |
| end; | |
| } | |
| if(!getd("@autopot_" + .@command$[0] + "_ID")){ | |
| dispbottom "You need to set a " + strtoupper(.@command$[0]) + " Potion to be used."; | |
| callsub L_Help; | |
| end; | |
| } | |
| callsub L_Start,.@command$[0],getd("@autopot_" + .@command$[0] + "_ID"); | |
| end; | |
| } | |
| if(.@command$[1] == "off"){ | |
| message strcharinfo(0), "Auto-Potion " + strtoupper(.@command$[0]) + " disabled."; | |
| setd "@autopot_" + .@command$[0] + "_Active",false; | |
| if(!@autopot_hp_Active || !@autopot_sp_Active) | |
| deltimer strnpcinfo(3) + "::OnStart"; | |
| end; | |
| } | |
| if(.@command$[1] == "list"){ | |
| getinventorylist; | |
| for(.@i = 0;.@i < @inventorylist_count;.@i++){ | |
| if (getiteminfo(@inventorylist_id[.@i], ITEMINFO_TYPE) == IT_HEALING) { | |
| .@items[.@count] = @inventorylist_id[.@i]; | |
| .@menu$ = .@menu$ + sprintf("~ ^0055FF%s^000000 (%dx)" + (inarray(.blackList[0],@inventorylist_id[.@i]) != -1? " ^364022Black Listed^000000":"") + (BaseLevel < getiteminfo(@inventorylist_id[.@i], ITEMINFO_EQUIPLEVELMIN)? " ^E82C0CNeed Higher Level^000000":"") + ":", getitemname(@inventorylist_id[.@i]), countitem(@inventorylist_id[.@i])); | |
| .@count++; | |
| } | |
| } | |
| if(.@count){ | |
| mes "[ Auto-Potion ]"; | |
| mes "Select a " + strtoupper(.@command$[0]) + " item."; | |
| .@select = select(.@menu$ + " ^777777Cancel^000000") - 1; | |
| if (.@select != .@count) | |
| callsub L_Start,.@command$[0],.@items[.@select]; | |
| close2; | |
| }else{ | |
| message strcharinfo(0), "There are no healing items in your inventory."; | |
| } | |
| end; | |
| } | |
| .@potion = atoi(.@command$[1]); | |
| .@percent = atoi(.@atcmd_parameters$[2]); | |
| .@delay = atoi(.@atcmd_parameters$[3]); | |
| if(getitemname(.@potion) != "null"){ | |
| callsub L_Start,.@command$[0],.@potion,.@percent,.@delay; | |
| end; | |
| } | |
| message strcharinfo(0), "Auto-Potion : something went wrong!"; | |
| callsub L_Help; | |
| end; | |
| } | |
| if(.@command$[0] == "blacklist"){ | |
| dispbottom "--------------Black Listed Items--------------"; | |
| for(.@i=0;.@i<getarraysize(.blackList);.@i++){ | |
| dispbottom " " + getitemname(.blackList[.@i]) + " (" + .blackList[.@i] + ")"; | |
| } | |
| dispbottom "---------------------------------------------"; | |
| end; | |
| } | |
| if(.@command$[0] == "info"){ | |
| if(@autopot_hp_Active || @autopot_sp_Active){ | |
| message strcharinfo(0), "Auto-Potion information is displayed below."; | |
| callsub L_Info; | |
| }else{ | |
| message strcharinfo(0), "Auto-Potion is not enabled."; | |
| } | |
| end; | |
| } | |
| if(.@command$[0] == "help"){ | |
| message strcharinfo(0), "List of commands is displayed below."; | |
| callsub L_Help; | |
| end; | |
| } | |
| message strcharinfo(0), "Invalid syntax."; | |
| callsub L_Help; | |
| end; | |
| OnStart: | |
| 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) && | |
| !getstatus(SC_STONE) && !getstatus(SC_FREEZE) && !getstatus(SC_STUN) && !getstatus(SC_SLEEP)) | |
| { | |
| if(Hp){ | |
| if(@autopot_hp_Active && Hp * 100 / MaxHp < @autopot_hp_Min) { | |
| if (countitem(@autopot_hp_ID)) { | |
| delitem @autopot_hp_ID,1; | |
| consumeitem @autopot_hp_ID; | |
| specialeffect2 207; | |
| } | |
| } | |
| if(@autopot_sp_Active && Sp * 100 / MaxSp < @autopot_sp_Min) { | |
| if (countitem(@autopot_sp_ID)) { | |
| delitem @autopot_sp_ID,1; | |
| consumeitem @autopot_sp_ID; | |
| specialeffect2 208; | |
| } | |
| } | |
| } | |
| } | |
| if(@autopot_hp_Active || @autopot_sp_Active) | |
| addtimer @autopot_delay,strnpcinfo(3) + "::OnStart"; | |
| end; | |
| } |