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

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