You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
536 lines
14 KiB
536 lines
14 KiB
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!DOCTYPE muclient>
|
|
<!-- Saved on Thursday, April 23, 2015, 2:45 PM -->
|
|
<!-- MuClient version 4.79 -->
|
|
|
|
<!-- Plugin "AutoTrainer" generated by Plugin Wizard -->
|
|
|
|
<muclient>
|
|
<plugin
|
|
name="AutoTrainer"
|
|
author="Borg mods=Dillon"
|
|
id="018bb1b2d053af011c0902f9"
|
|
language="Lua"
|
|
purpose="automaticallt trains stats up to cost 3"
|
|
save_state="y"
|
|
date_written="2015-04-23 14:39:13"
|
|
requires="4.79"
|
|
version="1.0"
|
|
>
|
|
|
|
<description trim="y">
|
|
<![CDATA[
|
|
Check 'at help' for full help :) ENJOY
|
|
]]>
|
|
</description>
|
|
</plugin>
|
|
|
|
|
|
<!-- Get our standard constants -->
|
|
|
|
<include name="constants.lua"/>
|
|
|
|
<!-- Triggers -->
|
|
|
|
<triggers>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^Your stats and amount trained are\:$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^ Base Race Tier Wish Your $"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^ Base Race Wish Your $"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^ Cost Mod Mod Mod Cost Trained Max $"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^ Cost Mod Mod Cost Trained Max $"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^ \-\-\-\-\-\-\- \-\-\-\-\-\- \-\-\-\-\-\- \-\-\-\-\-\- \-\-\-\-\-\- \-\-\-\-\-\-\- \-\-\-\-\-\-\-$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^ \-\-\-\-\-\-\- \-\-\-\-\-\- \-\-\-\-\-\- \-\-\-\-\-\- \-\-\-\-\-\-\- \-\-\-\-\-\-\-$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
custom_colour="7"
|
|
group="autoTrain"
|
|
match="^(\w+)\s*\:\s* \b(\d?\b)\s* ([-]?\d?\b)\s* ([-]?\d?\b)?\s* ([-]?\d?\b)\s*(\b.+?\b)\s*(\b.+?\b)\s*(.+?)(\*)?$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
script="trainerStore"
|
|
send_to="12"
|
|
sequence="100"
|
|
>
|
|
<send>
|
|
</send>
|
|
</trigger>
|
|
<trigger
|
|
custom_colour="7"
|
|
group="autoTrain"
|
|
match="^(\w+)\s*\:\s* \b(\d?\b)\s* ([-]?\d?\b)\s* ([-]?\d?\b)\s*(\b.+?\b)\s*(\b.+?\b)\s*(.+?)(\*)?$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
script="trainerStore"
|
|
send_to="12"
|
|
sequence="100"
|
|
>
|
|
<send>
|
|
</send>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^You have (.*?) practice sessions available\.$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^You have (.*?) total stats out of (.*?) maximum\.$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
<trigger
|
|
group="autoTrain"
|
|
match="^You have (.*?) training sessions available\.$"
|
|
omit_from_output="y"
|
|
regexp="y"
|
|
sequence="100"
|
|
>
|
|
</trigger>
|
|
</triggers>
|
|
|
|
<!-- Aliases -->
|
|
|
|
<aliases>
|
|
<alias
|
|
match="^trainall$"
|
|
enabled="y"
|
|
regexp="y"
|
|
ignore_case="y"
|
|
send_to="12"
|
|
sequence="100"
|
|
>
|
|
<send>EnableTriggerGroup("autoTrain", true)
|
|
--Execute("recal;s")
|
|
Execute("train")
|
|
|
|
</send>
|
|
</alias>
|
|
<alias
|
|
match="^setorder (.{1,4}) (.{1,4}) (.{1,4}) (.{1,4}) (.{1,4}) (.{1,4})"
|
|
enabled="y"
|
|
regexp="y"
|
|
ignore_case="y"
|
|
echo_alias="y"
|
|
send_to="12"
|
|
script="OrderMatters"
|
|
sequence="101">
|
|
<send>
|
|
SetVariable("setorder", "%1")
|
|
setorder = "%1, %2, %3, %4, %5, %6"
|
|
ColourNote("cyan", "", "Your stat order has been set to ", "palegoldenrod", "", "'".. setorder.. "'.")
|
|
</send>
|
|
</alias>
|
|
<alias
|
|
match="^setmax (\d+)"
|
|
enabled="y"
|
|
regexp="y"
|
|
script="setMaxNum"
|
|
sequence="100"
|
|
></alias>
|
|
<alias
|
|
match="^showmax"
|
|
enabled="y"
|
|
regexp="y"
|
|
script="PrintMaxNum"
|
|
sequence="100"
|
|
></alias>
|
|
<alias
|
|
match="^showorder$"
|
|
enabled="y"
|
|
regexp="y"
|
|
script="printOrder"
|
|
sequence="100"
|
|
></alias>
|
|
<alias
|
|
match="at help"
|
|
enabled="y"
|
|
script="showHelp">
|
|
</alias>
|
|
</aliases>
|
|
|
|
<!-- Script -->
|
|
|
|
|
|
<script>
|
|
<![CDATA[
|
|
require "tprint"
|
|
require "serialize"
|
|
value= {}
|
|
value.Str= {}
|
|
value.Int= {}
|
|
value.Wis= {}
|
|
value.Con= {}
|
|
value.Dex= {}
|
|
value.Luck= {}
|
|
value.Trains= {}
|
|
costCurrent= 0
|
|
costMax = 3
|
|
curMaxCost = 0
|
|
didonce= false
|
|
curOrder = {"Int", "Luck", "Wis", "Con", "Dex", "Str"}
|
|
MaxNum = 3
|
|
|
|
|
|
function PrintMaxNum()
|
|
print(string.format("Your current train max number is %s", costMax))
|
|
end
|
|
|
|
function setMaxNum(name, line, wildcards)
|
|
local max = tonumber(wildcards[1])
|
|
if max > 0 then
|
|
costMax = tonumber(max)
|
|
SetVariable("maxNum","maxNum ="..serialize.save_simple(costMax))
|
|
print(string.format("You have set your Max to %s", costMax))
|
|
else
|
|
print("Max number cannot be negative")
|
|
end
|
|
end
|
|
|
|
function printOrder()
|
|
tprint (curOrder)
|
|
|
|
end
|
|
function OrderMatters(name, line, wildcards)
|
|
curOrder = {wildcards[1],wildcards[2],wildcards[3],wildcards[4],wildcards[5],wildcards[6]}
|
|
|
|
SetVariable("test","test ="..serialize.save_simple(curOrder))
|
|
|
|
end
|
|
function OnPluginInstall()
|
|
assert (loadstring (GetVariable ("test") or "")) ()
|
|
curOrder = test or {'Int', 'Luck', 'Wis', 'Con', 'Dex', 'Str'}
|
|
assert(loadstring(GetVariable("maxNum") or "")) ()
|
|
costMax = maxNum or 3
|
|
end
|
|
function check_Lowest_Max_Cost()
|
|
curLowestCost= 3
|
|
curMaxCost= 0
|
|
curMaxIndex = {value.Int, value.Luck, value.Wis, value.Con, value.Dex, value.Str}
|
|
for i, value in ipairs(curMaxIndex) do
|
|
|
|
if tonumber(value.Cost) > tonumber(curMaxCost) then
|
|
|
|
curMaxCost = tonumber(value.Cost)
|
|
|
|
if value.Cost > costMax then curMaxCost = costMax end--if
|
|
end -- if
|
|
if tonumber(value.Cost)<tonumber(curLowestCost) and value.Trained ~= value.Max then
|
|
curLowestCost= tonumber(value.Cost)
|
|
end--if
|
|
end
|
|
end
|
|
function trainerStore(name, line, wildcards)
|
|
local counter = 0
|
|
local str = tostring( wildcards[1])
|
|
if string.find(str, "Hp") or string.find(str, "Moves") or string.find(str, "Mana") then
|
|
if string.find(str, "Moves") then
|
|
EnableTriggerGroup("autoTrain", false)
|
|
check_Lowest_Max_Cost()
|
|
while tonumber(value.Trains) >= tonumber(curLowestCost) and curLowestCost < costMax do-- this is a test case mother fucker also stop programming while drunk
|
|
check_Lowest_Max_Cost()
|
|
for i, p in pairs(curOrder) do
|
|
check_Lowest_Max_Cost()
|
|
if (value[p].Cost ~= costMax) then
|
|
trainerGO(value[p], p)
|
|
end--if
|
|
end --for
|
|
counter = counter +1
|
|
if counter> costMax then return end
|
|
end
|
|
end --if
|
|
return
|
|
end-- if
|
|
|
|
if string.find(str, "Strength") then
|
|
value.Str.Base = tonumber(wildcards[2])
|
|
value.Str.RMod = tonumber(wildcards[3])
|
|
value.Str.TMod = tonumber(wildcards[4])
|
|
value.Str.WMod = tonumber(wildcards[5])
|
|
value.Str.Cost = tonumber(wildcards[6])
|
|
value.Str.Trained = tonumber(wildcards[7])
|
|
value.Str.Max = tonumber(wildcards[8])
|
|
|
|
end --if
|
|
if string.find(str, "Dexterity") then
|
|
value.Dex.Base = tonumber(wildcards[2])
|
|
value.Dex.RMod = tonumber(wildcards[3])
|
|
value.Dex.TMod = tonumber(wildcards[4])
|
|
value.Dex.WMod = tonumber(wildcards[5])
|
|
value.Dex.Cost = tonumber(wildcards[6])
|
|
value.Dex.Trained = tonumber(wildcards[7])
|
|
value.Dex.Max = tonumber(wildcards[8])
|
|
|
|
end --if
|
|
if string.find(str, "Intelligence") then
|
|
value.Int.Base = tonumber(wildcards[2])
|
|
value.Int.RMod = tonumber(wildcards[3])
|
|
value.Int.TMod = tonumber(wildcards[4])
|
|
value.Int.WMod = tonumber(wildcards[5])
|
|
value.Int.Cost = tonumber(wildcards[6])
|
|
value.Int.Trained = tonumber(wildcards[7])
|
|
value.Int.Max = tonumber(wildcards[8])
|
|
|
|
end --if
|
|
if string.find(str, "Wisdom") then
|
|
value.Wis.Base = tonumber(wildcards[2])
|
|
value.Wis.RMod = tonumber(wildcards[3])
|
|
value.Wis.TMod = tonumber(wildcards[4])
|
|
value.Wis.WMod = tonumber(wildcards[5])
|
|
value.Wis.Cost = tonumber(wildcards[6])
|
|
value.Wis.Trained = tonumber(wildcards[7])
|
|
value.Wis.Max = tonumber(wildcards[8])
|
|
|
|
end --if
|
|
if string.find(str, "Constitution") then
|
|
value.Con.Base = tonumber(wildcards[2])
|
|
value.Con.RMod = tonumber(wildcards[3])
|
|
value.Con.TMod = tonumber(wildcards[4])
|
|
value.Con.WMod = tonumber(wildcards[5])
|
|
value.Con.Cost = tonumber(wildcards[6])
|
|
value.Con.Trained = tonumber(wildcards[7])
|
|
value.Con.Max = tonumber(wildcards[8])
|
|
|
|
end --if
|
|
if string.find(str, "Luck") then
|
|
value.Luck.Base = tonumber(wildcards[2])
|
|
value.Luck.RMod = tonumber(wildcards[3])
|
|
value.Luck.TMod = tonumber(wildcards[4])
|
|
value.Luck.WMod = tonumber(wildcards[5])
|
|
value.Luck.Cost = tonumber(wildcards[6])
|
|
value.Luck.Trained = tonumber(wildcards[7])
|
|
value.Luck.Max = tonumber(wildcards[8])
|
|
|
|
end --if
|
|
res, gmcparg = CallPlugin("3e7dedbe37e44942dd46d264","gmcpval","char") --- We just want the gmcp.char section.
|
|
luastmt = "gmcpdata = " .. gmcparg --- Convert the serialized string back into a lua table.
|
|
|
|
assert (loadstring (luastmt or "")) ()
|
|
value.Trains = gmcpdata.worth.trains
|
|
value.Level = tonumber(gmcpdata.status.level)
|
|
if value.Level == 1 and didonce== false then
|
|
Execute("train convertall")
|
|
didonce= true
|
|
end-- if
|
|
curMaxCost=1
|
|
-- value.Con.Base=1
|
|
-- value.Con.Cost=1
|
|
-- value.Con.Trained = 15
|
|
-- value.Int.Trained = 15
|
|
-- value.Int.Base = 1
|
|
-- value.Int.Cost = 1
|
|
-- value.Trains = 100
|
|
end
|
|
curMaxIndex= {}
|
|
curLowestCost= 10
|
|
function trainerGO( value1, string)
|
|
local count = 0
|
|
if tonumber(value.Trains)==0 then
|
|
return
|
|
end--if
|
|
if tonumber(value1.Trained)<tonumber(value1.Max) and tonumber(value1.Cost)<=curLowestCost and tonumber(value.Trains)>=tonumber(value1.Cost) then
|
|
TrainerTrain(value1, string)
|
|
else
|
|
|
|
end --if
|
|
end
|
|
|
|
counter= 0
|
|
function TrainerTrain(stat, string)
|
|
if tonumber(value.Trains)>= tonumber(stat.Cost) then
|
|
|
|
counter = counter + 1
|
|
value.Trains= value.Trains-stat.Cost
|
|
stat.Trained = stat.Trained+1
|
|
|
|
else
|
|
|
|
return
|
|
end --if
|
|
checkLimit(stat)
|
|
if tonumber(stat.Trained)>=tonumber(stat.Max) or tonumber(stat.Cost)>=costMax or tonumber(stat.Cost)>curLowestCost or tonumber(value.Trains)<tonumber(stat.Cost) then
|
|
Execute ("train "..counter.." "..string )
|
|
counter= 0
|
|
end-- if
|
|
if tonumber(value.Trains)>=tonumber(curLowestCost) then
|
|
trainerGO(stat, string)
|
|
|
|
|
|
end --if
|
|
|
|
|
|
end
|
|
|
|
function OnPluginInstall()
|
|
InstallMessage()
|
|
|
|
end
|
|
|
|
function checkLimit(stat)
|
|
if tonumber(stat.Trained)>=60 then
|
|
if stat.RMod > 0 then
|
|
stat.Cost = stat.Cost + stat.RMod
|
|
end
|
|
if tonumber(stat.Trained)>=71 and tonumber(stat.Trained)<=90 then
|
|
if tonumber(stat.Base)==1 then
|
|
stat.Base = stat.Base +1
|
|
end --if
|
|
local testMax= stat.Base+ stat.TMod+ stat.RMod+ stat.WMod
|
|
if testMax> stat.Cost then
|
|
stat.Cost = testMax
|
|
end--if
|
|
elseif tonumber(stat.Trained)>=91 and tonumber(stat.Trained)<=130 then
|
|
if tonumber(stat.Base)==2 then
|
|
stat.Base = stat.Base +1
|
|
end --if
|
|
local testMax= stat.Base+ stat.TMod+ stat.RMod+ stat.WMod
|
|
if testMax> stat.Cost then
|
|
stat.Cost = testMax
|
|
end--if
|
|
elseif tonumber(stat.Trained)>=131 and tonumber(stat.Trained)<=170 then
|
|
if tonumber(stat.Base)==3 then
|
|
stat.Base = stat.Base +1
|
|
end --if
|
|
local testMax= stat.Base+ stat.TMod+ stat.RMod+ stat.WMod
|
|
if testMax> stat.Cost then
|
|
stat.Cost = testMax
|
|
end--if
|
|
elseif tonumber(stat.Trained)>=171 and stat.Trained<=200 then
|
|
if tonumber(stat.Base)==4 then
|
|
stat.Base = stat.Base +2
|
|
end --if
|
|
local testMax= stat.Base+ stat.TMod+ stat.RMod+ stat.WMod
|
|
if testMax> stat.Cost then
|
|
stat.Cost = testMax
|
|
end--if
|
|
|
|
elseif tonumber(stat.Trained)>=201 and stat.Trained<=224 then
|
|
if tonumber(stat.Base)==6 then
|
|
stat.Base = stat.Base +3
|
|
end --if
|
|
local testMax= stat.Base+ stat.TMod+ stat.RMod+ stat.WMod
|
|
if testMax> stat.Cost then
|
|
stat.Cost = testMax
|
|
end--if
|
|
elseif tonumber(stat.Trained)>=225 and stat.Trained<=250 then
|
|
if tonumber(stat.Base)==9 then
|
|
stat.Base = stat.Base +2
|
|
end --if
|
|
local testMax= stat.Base+ stat.TMod+ stat.RMod+ stat.WMod
|
|
if testMax> stat.Cost then
|
|
stat.Cost = testMax
|
|
end--if
|
|
elseif tonumber(stat.Trained)>=251 and stat.Trained<=275 then
|
|
if tonumber(stat.Base)==11 then
|
|
stat.Base = stat.Base +3
|
|
end --if
|
|
local testMax= stat.Base+ stat.TMod+ stat.RMod+ stat.WMod
|
|
if testMax> stat.Cost then
|
|
stat.Cost = testMax
|
|
end--if
|
|
end --if
|
|
end--if
|
|
end
|
|
|
|
function showHelp()
|
|
|
|
Note("")
|
|
ColourNote("cyan", "", "------------------------------------------------------------")
|
|
ColourNote("yellow", "", "Auto Trainer Help")
|
|
ColourNote("cyan", "", "--------------------")
|
|
ColourNote("brightblue", "", "trainall : ", "white", "", "Trains in the order that you have provided till it costs 3 or whatever amount you have chosen.")
|
|
ColourNote("brightblue", "", "setorder : ", "white", "", "e.g setoder Str Int Wis Dex Con Luck. You should put it in the order you want it to be trained, just note it is case sensitive.")
|
|
ColourNote("brightblue", "", "showorder : ", "white", "", "Shows the oder you put it in.")
|
|
ColourNote("brightblue", "", "setmax : ", "white", "", "sets the maximum cost amount you want your stats to be trained to")
|
|
ColourNote("brightblue", "", "showmax : ", "white", "", "shows your max training cost that your stats will train to.")
|
|
|
|
ColourNote("cyan", "", "-------------------------------------------------------------")
|
|
Note("")
|
|
|
|
end
|
|
|
|
function InstallMessage()
|
|
ColourNote("yellow", "", "-----------------|AutoTrainer|-----------------")
|
|
|
|
ColourNote("lime", "",
|
|
"+ AutoTrainer Installed!- type 'at help' +")
|
|
|
|
ColourNote("yellow", "", "-----------------|AutoTrainer|-----------------")
|
|
end
|
|
|
|
]]>
|
|
</script>
|
|
|
|
|
|
<!-- Plugin help -->
|
|
|
|
<aliases>
|
|
<alias
|
|
script="OnHelp"
|
|
match="AutoTrainer help"
|
|
enabled="y"
|
|
>
|
|
</alias>
|
|
</aliases>
|
|
|
|
<script>
|
|
<![CDATA[
|
|
function OnHelp ()
|
|
world.Note (world.GetPluginInfo (world.GetPluginID (), 3))
|
|
end
|
|
]]>
|
|
</script>
|
|
|
|
</muclient> |