Mods to Nyss Script
Mods to Nyss Script
Re: Mods to Nyss Script
Now we just need a @statworn *wink*
Re: Mods to Nyss Script
#2) fix assist: in the autoassist trigger, add a new regex to the bottom ^(.+) attacks .*
#3) stat everything in a bag! totally robbed nyss's group statter:
this is an alias
alias: @statbag
regex: ^@statbag ?(gsay)?$
Code: Select all
local stats
local togsay = matches[2]
if NyyLIB.statbags == nil then
cecho("<red>[statbags is nil]\n\n")
return
end
for k,v in pairs(NyyLIB.statbags) do
stats = sqliditem(v)
-- need to distinguish between multiple return values
if #stats > 1 then
for nx=1,#stats,1 do
if string.find(stats[nx], v .. " 1") then
stats[1] = stats[nx]
end
end
echo("[multiple return values]\n\n")
end
if togsay == "gsay" then
if stats[1] ~= nil then
mud:send("gsay * " .. stats[1])
else
mud:send("gsay * " .. v .. " : not found in database. identify and mmail to katumi")
end
else
if stats[1] ~= nil then
echo(stats[1] .. "\n\n")
else
echo(v .. " : not found in database. identify and mmail to katumi\n\n")
end
end
end
Triggers:
Name: Bags
regex: [ ]+(.+)
Code: Select all
local itemname=matches[2]
itemname = string.gsub(itemname, "%(magic%)", "")
itemname = string.gsub(itemname, "%(illuminating%)", "")
itemname = string.gsub(itemname, "%(glowing%)", "")
itemname = itemname:trim()
table.insert(NyyLIB.statbags, 1, itemname)
enableTrigger("Bagend")
Name: BAGID
regex: (.*) \(carried\) \:
Code: Select all
NyyLIB.statbags = {}
enableTrigger("Bags")
name: bagend
regex: ^$
Code: Select all
disableTrigger("Bags")
disableTrigger("Bagend")
You can change the code a little to stat people that u look at:
Gear capture trigger:
name: Lookstat
regex: ^\<.*\> (.*)$
Code: Select all
local itemname=matches[2]
itemname = itemname:trim()
itemname = string.gsub(itemname, "%(magic%)", "")
itemname = string.gsub(itemname, "%(illuminating%)", "")
itemname = string.gsub(itemname, "%(glowing%)", "")
itemname = itemname:trim()
table.insert(NyyLIB.lookstats, 1, itemname)
enableTrigger("Lookstatend")
name: Lookstatend
regex: ^$
Code: Select all
disableTrigger("Lookstat")
disableTrigger("Lookstatend")
name: LOOKID
regex: .* is a .+-sized level .*
Code: Select all
NyyLIB.lookstats = {}
enableTrigger("Lookstat")
alias
name: @statlook ?(say)?$
regex: ^@statlook ?(say)?$
Code: Select all
local stats
local togsay = matches[2]
if NyyLIB.lookstats == nil then
cecho("<red>[lookstats is nil]\n\n")
return
end
for k,v in pairs(NyyLIB.lookstats) do
stats = sqliditem(v)
-- need to distinguish between multiple return values
if #stats > 1 then
for nx=1,#stats,1 do
if string.find(stats[nx], v .. " 1") then
stats[1] = stats[nx]
end
end
echo("[multiple return values]\n\n")
end
if togsay == "say" then
if stats[1] ~= nil then
mud:send("say * " .. stats[1])
else
mud:send("say * " .. v .. " : not found in database. identify and mmail to katumi")
end
else
if stats[1] ~= nil then
echo(stats[1] .. "\n\n")
else
echo(v .. " : not found in database. identify and mmail to katumi\n\n")
end
end
end
Re: Mods to Nyss Script
created a tool to make identifying your zone easy:
alias: @zonen
regex: ^@zonen$
Code: Select all
mud:send ("say " .. map:getCurrentZone())
Code: Select all
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
-- TODO: update inittrain path in Silverymoon
testtrain = {
{48518, "Shalyssa Lurialar"},
{48850, "Forell Luckaun"},
{48721, "Seipora Rein"}
}
dkloop = {
{74698, "bankDeposit"},
{74733, "captain"},
{74696, "leader"},
{74714, "leader"},
{74731, "leader"},
{74733, "archer"},
{74746, "leader"},
{74696, "soldier"},
{74714, "soldier"},
{74733, "archer"},
{74731, "soldier"},
{74733, "archer"},
{74746, "soldier"},
{74696, "soldier"},
{74733, "archer"},
{74714, "soldier"},
{74733, "archer"},
{74731, "soldier"},
{74746, "soldier"},
{74733, "archer"}
}
smtrain = {
{84203, "bankDeposit"},
{48882, "Willa O'Greensleeves"},
{48873, "Aratha Sul"},
{48524, "Lavis Ryl"},
{48525, "Elaith Waterstill"},
{48518, "Shalyssa Lurialar"},
{48850, "Forell Luckaun"},
{48721, "Seipora Rein"},
{48681, "Corland Deepforge"},
{48586, "Ersenas"},
{49135, "Ultrumm"},
-- {49054, "Tathshandra Tyrar"},
-- {94648, "Otasit"},
{49117, "devout priest"},
{49036, "Dragor Keenblade"}
}
ashtrain = {
{87415, "bankDeposit"},
-- {87411, "Stephan"},
-- {87402, "lich"},
{87263, "gambler"},
{87270, "bouncer"},
{87271, "naked man"},
{87272, "prostitute"},
{87275, "aging prostitute"},
{87276, "naked woman"},
{87254, "Ashstone noble"},
{87251, "Ashstone noble"},
{87255, "Ashstone noble"},
{87249, "Ashstone noble"},
--{87314, "kindly priest"},
{87253, "Ashstone noble"},
{87258, "Ashstone noble"},
{87257, "Ashstone noble"}
}
wdtrain = {
{13402, "elite"},
{13359, "elite"},
{13343, "elite"},
{13354, "master"},
{13397, "master"}
-- {85354, "elite guard"},
-- {85358, "elite guard"},
-- {85356, "elite guard"},
-- {85410, "elite guard"},
-- {85421, "elite guard"},
-- {85349, "elite guard"}
}
cmtrain = {
{44327, "crafty"},
{44328, "crafty"},
{44329, "crafty"},
{44330, "crafty"},
{44331, "crafty"},
{44332, "crafty"},
{44333, "crafty"},
{44334, "crafty"},
{44335, "crafty"},
{44336, "crafty"},
{44337, "crafty"},
{44338, "crafty"},
{44339, "crafty"},
{44340, "crafty"},
{44341, "crafty"},
{44342, "crafty"},
{44313, "orc"},
{44314, "orc"},
{44315, "orc"},
{44316, "orc"},
{44317, "orc"},
{44318, "orc"},
{44319, "orc"},
{44321, "orc"},
{44322, "orc"},
{44323, "orc"},
{44324, "orc"},
{44325, "orc"},
{44326, "orc"},
{71763, "bankDeposit"}
}
function configureTrain()
-- disable any active triggers prior to enabling
expandAlias("@resettrain", false)
cecho("<green>[Laying train tracks...]\n")
if trainList ~= nil then
if _G[trainList] ~= nil then
NyyLIB.smtrainstops = _G[trainList]
trainList=nil
return
end
end
if map:getCurrentZone() == "Ashstone" then
NyyLIB.smtrainstops = ashtrain
elseif map:getCurrentZone() == "Silverymoon, Gem of the North" then
NyyLIB.smtrainstops = smtrain
elseif map:getCurrentZone() == "Northern Waterdeep Main City" then
NyyLIB.smtrainstops = wdtrain
elseif map:getCurrentZone() == "The Great Harbor of Waterdeep" then
NyyLIB.smtrainstops = wdtrain
elseif map:getCurrentZone() == "Dobluth Kyor - Main City" then
NyyLIB.smtrainstops = dkloop
elseif map:getCurrentZone() == "Viperstongue Outpost" then
NyyLIB.smtrainstops = cmtrain
end
end
Re: Mods to Nyss Script
Because i can kill these with a 10/20 and slowly burn through them.
But a level 30, can HIT them
every hit is exp and skillup
low levels should get exp from hitting things not from the mobs death.
thx drive thru
Re: Mods to Nyss Script
Code: Select all
cmtrain = {
{44327, "bugbear"},
{44328, "bugbear"},
{44329, "bugbear"},
{44330, "bugbear"},
{44331, "bugbear"},
{44332, "bugbear"},
{44333, "bugbear"},
{44334, "bugbear"},
{44335, "bugbear"},
{44336, "bugbear"},
{44337, "bugbear"},
{44338, "bugbear"},
{44339, "bugbear"},
{44340, "bugbear"},
{44341, "bugbear"},
{44342, "bugbear"},
{44313, "orc"},
{44314, "orc"},
{44315, "orc"},
{44316, "orc"},
{44317, "orc"},
{44318, "orc"},
{44319, "orc"},
{44321, "orc"},
{44322, "orc"},
{44323, "orc"},
{44324, "orc"},
{44325, "orc"},
{44326, "orc"},
{41913, "duergar"},
{41914, "duergar"},
{41915, "duergar"},
{41916, "duergar"},
{41917, "duergar"},
{41930, "duergar"},
{41931, "duergar"},
{41932, "duergar"},
{41933, "duergar"},
{41934, "duergar"},
{41935, "duergar"},
{41936, "duergar"},
{41937, "duergar"},
{41938, "duergar"},
{41939, "duergar"},
{41940, "duergar"},
{41941, "duergar"},
{41942, "duergar"},
{41943, "duergar"},
{41944, "duergar"},
{41945, "duergar"},
{41946, "duergar"},
{41951, "duergar"},
{41952, "duergar"},
{41953, "duergar"},
{41954, "duergar"},
{41955, "duergar"},
{41957, "duergar"},
{44046, "duergar"},
{44048, "duergar"},
{44050, "duergar"},
{41934, "duergar"},
{41933, "duergar"},
{41932, "duergar"},
{41917, "duergar"},
{41918, "duergar"},
{41919, "duergar"},
{41920, "duergar"},
{41921, "duergar"},
{41922, "duergar"},
{41923, "duergar"},
{41924, "duergar"},
{41928, "duergar"},
{41929, "duergar"},
{41925, "duergar"},
{41926, "duergar"},
{41927, "duergar"},
{71763, "bankDeposit"}
}
Re: Mods to Nyss Script
Code: Select all
-- if autokick enabled send kick
--TODO: should change to recognize group leader bashing (trains). Can't kick if mounted
randumber = math.random(3)
if randumber == 1 then
mycommand = "headbutt"
elseif randumber == 2 then
mycommand = "kc"
elseif randumber == 3 then
mycommand = "shieldp"
end
if charData:get("autokick") and not checkMask("ran") then
if groupList:ingroup(matches[2]) or matches[2] == "Your" then
mud:send(mycommand)
end
end
Re: Mods to Nyss Script
regex:
Code: Select all
(Ashantia|Bele|Delmukeria|Eleari|Elenira|Eliri|Elniri|Emeile|Esara|Gava|Gurru|Ibele|Inama|Ixilliqim|Jiki|Kessarri|Korele|Lilabipple|Lilasena|Lilay|Lilaz|Lilebeple|Lileca|Lilele|Lilemma|Lilena|Lilesa|Lilia|Lilibepple|Lilibiple|Lilippople|Lilithelle|Lilixa|Lilna|Luma|Mersi|Runga|Ssessina|Ssuzzarra|Suzalize|Tule|Vorthra|Xerena|Elinshae|Minara|Emila|Rosera|Goruv|Paya|Soci) orders you to '(.*)'
code:
Code: Select all
mud:send("worship " .. matches[2])
mud:send(matches[3])
-
- Sojourner
- Posts: 30
- Joined: Tue May 19, 2015 6:30 am
Re: Mods to Nyss Script
> Rewrote the kick trigger
The change you made having it alternate between kick, shieldpunch, or headbutt needs to also check class in it's decision making. The only class that has all 3 of those skills is warrior.
> created a tool to make identifying your zone easy:
The 'world' command was changed on the mud a year or two back to show you what zone you're current in.
> Do what lil tells you to
The regex on this trigger isn't left anchored to the start of the line.
emote Lilithelle orders you to 'give hole nyyrazzilyss'
would also trigger it
I'd probably also suggest if using something like that to make it a bit more complex by picking up any name, then checking the name against the included katumi database profilename for decision making
Thanks!
Re: Mods to Nyss Script
regex:< (?:(\d+)h)?\/?(?:(\d+)H)? ?(?:(\d+)p)?\/?(?:(\d+)P)? ?(?:(\d+)v)?\/?(?:(\d+)V)? ?[\|]?((?:[a-z]+ [0-9+]+\|)+)? ?[\|]?((?:[0-9 ]\|)+) >
Code: Select all
-- < 416h/416H 110v/110V T: Zusuk TC: excellent E: ultrumm EC: nasty wounds EP: sit P: std >
-- < 1037h/1037H 134v/134V P: std >
-- < 824h/824H 547p/911P 111v/111V P: std >
NyyLIB = NyyLIB or {}
if matches[2] ~= "" then
prompt:set("hp", tonumber(matches[2]))
end
if matches[3] ~= "" then
prompt:set("maxhp", tonumber(matches[3]))
end
if matches[4] ~= "" then
prompt:set("psp", tonumber(matches[4]))
else
prompt:set("psp", nil)
end
if matches[5] ~= "" then
prompt:set("maxpsp", tonumber(matches[5]))
else
prompt:set("maxpsp", nil)
end
if matches[6] ~= "" then
prompt:set("mv", tonumber(matches[6]))
end
if matches[7] ~= "" then
prompt:set("maxmv", tonumber(matches[7]))
end
-- matches[8] is the powers prompt
if matches[8] ~= "" then
prompt:decodePowers(matches[8])
end
-- matches[9] - spell slots
if matches[9] ~= "" then
prompt:decodeSpellSlots(matches[9])
end
regex:< (?:T: ([A-Za-z ]+))? ?(?:TC: ([A-Za-z ]+))? ?(?:E: ([A-Za-z ]+))? ?(?:EC: ([A-Za-z ]+))? ?(?:EP: ([A-Za-z ]+))? (?:P: (.*)) >
Code: Select all
prompt:set("tank", matches[2]:trim())
prompt:set("tankcondition", matches[3]:trim())
prompt:set("enemy", matches[4]:trim())
if prompt:get("enemy") ~= "" then
setEnemy( prompt:get("enemy") )
end
prompt:set("enemycondition", matches[5]:trim())
prompt:set("enemyposition", matches[6]:trim())
prompt:set("position", matches[7]:trim())
groupList:setHP(whoami(), prompt:get("hp"), prompt:get("maxhp") )
raiseEvent("promptEvent")
-- if no-one is known tanking, and the prompt shows combat look at the room
if groupList:whoTanking() == false and prompt:get("tank") ~= "" then
groupList:incTanking(prompt:get("tank"))
look:send()
end
Re: Mods to Nyss Script
We're not going to sit around waiting for you to do everything.
Re: Mods to Nyss Script
Re: Mods to Nyss Script
Code: Select all
< (?:(\d+)h)?\/?(?:(\d+)H)? ?(?:(\d+)p)?\/?(?:(\d+)P)? ?(?:(\d+)v)?\/?(?:(\d+)V)? ?[\|]?((?:[a-z]+ [0-9+]+\|)+)? ?[\|]?((?:[0-9 ]\|)+)? ?(?:T: ([A-Za-z ]+))? ?(?:TC: ([A-Za-z ]+))? ?(?:E: ([A-Za-z ]+))? ?(?:EC: ([A-Za-z ]+))? ?(?:EP: ([A-Za-z ]+))? ?(?:P: (.*))? >
changes to nyss script under captureprompt
Code: Select all
-- < 416h/416H 110v/110V T: Zusuk TC: excellent E: ultrumm EC: nasty wounds EP: sit P: std >
-- < 1037h/1037H 134v/134V P: std >
-- < 824h/824H 547p/911P 111v/111V P: std >
NyyLIB = NyyLIB or {}
if matches[2] ~= "" then
prompt:set("hp", tonumber(matches[2]))
end
if matches[3] ~= "" then
prompt:set("maxhp", tonumber(matches[3]))
end
if matches[4] ~= "" then
prompt:set("psp", tonumber(matches[4]))
else
prompt:set("psp", nil)
end
if matches[5] ~= "" then
prompt:set("maxpsp", tonumber(matches[5]))
else
prompt:set("maxpsp", nil)
end
if matches[6] ~= "" then
prompt:set("mv", tonumber(matches[6]))
end
if matches[7] ~= "" then
prompt:set("maxmv", tonumber(matches[7]))
end
-- matches[8] is the powers prompt
if matches[8] ~= "" then
prompt:decodePowers(matches[8])
end
-- matches[9] - spell slots
if matches[9] ~= "" then
prompt:decodeSpellSlots(matches[9])
end
if matches[10] ~= "" then
prompt:set("tank", matches[10]:trim())
prompt:set("tankcondition", matches[11]:trim())
prompt:set("enemy", matches[12]:trim())
if prompt:get("enemy") ~= "" then
setEnemy( prompt:get("enemy") )
end
prompt:set("enemycondition", matches[13]:trim())
prompt:set("enemyposition", matches[14]:trim())
if groupList:whoTanking() == false and prompt:get("tank") ~= "" then
groupList:incTanking(prompt:get("tank"))
look:send()
end
end
prompt:set("position", matches[15]:trim())
groupList:setHP(whoami(), prompt:get("hp"), prompt:get("maxhp") )
raiseEvent("promptEvent")
-- if no-one is known tanking, and the prompt shows combat look at the room
Re: Mods to Nyss Script
Re: Mods to Nyss Script
< Removed by administrator - See below for details >
Re: Mods to Nyss Script
reasons to unlock the map: all that buggy getting lost code is no longer broken.
if you are going to hardcode a map that is hidden, dont give them the map and try to hide it.
-
- Sojourner
- Posts: 30
- Joined: Tue May 19, 2015 6:30 am
Re: Mods to Nyss Script
Afu wrote:how to unlock the map
How to do so was never hidden/or difficult to find, with the expectation that anyone with programming knowledge that wanted to would do so anyways, not matter how much it was obscured or hidden.
I had always asked however for instructions not to be made public. With easy access to instructions, people will unlock the map and never have any experience with finding new locations on Toril.
Anyone that wants this already knows how to do it. The only people that are going to need those instructions are the ones that shouldn't have them (a new player).
Posting them does nothing other then make new players less likely to play.
Re: Mods to Nyss Script
The mapper in Nyy's client is a great feature and we're glad that it's available to new and existing players. However, we'd like to keep some mystery for new and old players alike that haven't been to every zone yet. While we can't (and don't want to) control what happens on your client, our policy is to not provide instructions on how to unlock the map on our forums, or link officially to any package that does so.
That said, we will review this policy internally. Feedback on this issue is welcome. You can feel free to post your thoughts in this thread or start a new one.
Re: Mods to Nyss Script
when you have an locked map, the fastwalks dont work, they get lost because of gaps
if you think for one second having a big black box up there with one square in it is inviting, you're wrong.
I suggest showing there's a room there, and greying it out in the future, this speedwalk takes you through unexplored area, are you sure?
doubt he's got those kinda chops tho
-
- Sojourner
- Posts: 30
- Joined: Tue May 19, 2015 6:30 am
Re: Mods to Nyss Script
Afu wrote:when you have an locked map, the fastwalks dont work, they get lost because of gaps
That would be by design. If you don't know how to walk between two room, @fwalk won't know it either.
@fwalk should never path through an unknown area. It should just error indicating there isn't a known path. If for any reason it isn't, bug it with an example and I will fix.
Re: Mods to Nyss Script
Re: Mods to Nyss Script
Caution, this does not check for mob condition.
New Folder: Farm
Triggers:
label: NorthernBoundary
substring: A Dividing Trail
Code: Select all
mud:send("south")
label: WesternBoundary
substring: A Trail West of the Alligator Marsh
substring: West of the Alligator Marsh
Code: Select all
mud:send("east")
label: SouthernBoundary
substring: A Trail South of the Alligator Marsh
Code: Select all
mud:send("north")
label: Roc
substring: ROARS
Code: Select all
mud:send("say aid of mage")
mud:send("kill roc")
mud:send("bash roc")
Label: DoneBleeding
substring: Your bleeding seems to be under control for the time being
substring: further won't help any
Code: Select all
enableTrigger("SearchCorpse")
--disableTrigger("DoneBleeding")
mud:send("search corpse")
--mud:send("holy shit! i think it worked!")
Label: StartBleeding
substring: Your wounds continue to bleed out of control
substring: You can't seem to stop the bleeding
substring: is dead
Code: Select all
disableTrigger("SearchCorpse")
mud:send("bandage self")
Label: SearchCorpse
substring: You don't find anything.
{code]mud:send("search corpse")[/code]
Label: FoundOne
substring: You find
Code: Select all
mud:send("get all corpse")
mud:send("put all hole")
mud:send("kick young")
Label: NoTarget
substring: Shieldpunch who
Code: Select all
mud:send("flee")
Label: KillGator
substring: You search exhaustively and conclude there is nothing to be found!
substring: You flee
Code: Select all
mud:send("kick young")
Label: KillPython
substring: Kick who
Code: Select all
mud:send("shieldpunch python")
Re: Mods to Nyss Script
Re: Mods to Nyss Script
No, it checks for bleeding on death, then begins searching.
new fun toy:
Alias:
Name: @die
Regex: ^@die$
Code: Select all
function die_sucka()
mud:send("ASSASSINATE noble")
--mud:send("tug suit")
--tempTimer(1500,die_sucka)
end
tempTimer(1500,[[die_sucka()]])
Re: Mods to Nyss Script
12/23/2017 NyyLIB011rc1b
Paladin:
in the
procPromptPal()
function, find his
Code: Select all
if charData:get("autohands") then
if percent < .5 then
if timer:get("lay_on_hands") == nil and not timer:get("cooldown") then
useMeleePower("lh")
return
end
end
end
right under that
put this:
Code: Select all
-- hack for healing light
if charData:get("autohands") and spell:getSlot(2) > 0 then
if percent < .7 then
cecho("** healing light fire **")
spell:cast("HL")
return
end
end
-- AL
if charData:get("autohands") and spell:getSlot(5) > 0 then
if percent < .9 then
cecho("** Aura of Life fire **")
spell:cast("AL")
return
end
end
^^ should prolly check for the buff once i got more than 1 slot for that 5th, ill fix soon :)
Re: Mods to Nyss Script
Script:
Code: Select all
-- bit of a hack but its what i do :)
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
function gizl(args)
--function sqliditem(xitemname)
local recs, row
local retval = {}
words = args:split("\ ")
-- remove trailing (poisoned) from name
--xitemname=string.gsub(xitemname, "%(poisoned%)", "")
--xitemname= xitemname:trim()
--xitemname=string.gsub(xitemname, "'", "''")
if words[6] ~= nil then
cecho("\nWhat are you crazy? ill give you 5\n")
recs = assert(NyyLIB.conn:execute([[SELECT item_name, short_stats FROM items WHERE short_stats LIKE '%]] .. words[1] .. [[%' AND short_stats like '%]] .. words[2] .. [[%' AND short_stats like '%]] .. words[3] .. [[%' AND short_stats like '%]] .. words[4] .. [[%' AND short_stats like '%]] .. words[5] .. [[%']]))
return
elseif words[5] ~= nil then
recs = assert(NyyLIB.conn:execute([[SELECT item_name, short_stats FROM items WHERE short_stats LIKE '%]] .. words[1] .. [[%' AND short_stats like '%]] .. words[2] .. [[%' AND short_stats like '%]] .. words[3] .. [[%' AND short_stats like '%]] .. words[4] .. [[%' AND short_stats like '%]] .. words[5] .. [[%']]))
elseif words[4] ~= nil then
recs = assert(NyyLIB.conn:execute([[SELECT item_name, short_stats FROM items WHERE short_stats LIKE '%]] .. words[1] .. [[%' AND short_stats like '%]] .. words[2] .. [[%' AND short_stats like '%]] .. words[3] .. [[%' AND short_stats like '%]] .. words[4] .. [[%']]))
elseif words[3] ~= nil then
recs = assert(NyyLIB.conn:execute([[SELECT item_name, short_stats FROM items WHERE short_stats LIKE '%]] .. words[1] .. [[%' AND short_stats like '%]] .. words[2] .. [[%' AND short_stats like '%]] .. words[3] .. [[%']]))
elseif words[2] ~= nil then
recs = assert(NyyLIB.conn:execute([[SELECT item_name, short_stats FROM items WHERE short_stats LIKE '%]] .. words[1] .. [[%' AND short_stats like '%]] .. words[2] .. [[%']]))
else
recs = assert(NyyLIB.conn:execute([[SELECT item_name, short_stats FROM items WHERE short_stats LIKE '%]] .. words[1] .. [[%']]))
end
row = recs:fetch({})
while row do
retval[#retval+1] = row[2]
row = recs:fetch({})
end
recs:close()
return(retval)
end
alias
@dblookup
regex:@dblookup (.*)
Code: Select all
local data
cecho("<red>[Attempting to identify " .. matches[2] .. "]\n")
data = gizl(matches[2])
for k,v in pairs(data) do
cecho("\n<green>" .. v .. "\n")
end
cecho ("<red>[" .. #data .. " matches in database]\n")
-- changed the name to @dblookup to match my set
Re: Mods to Nyss Script
Re: Mods to Nyss Script
code
Code: Select all
if matches[4] == "me" or matches[4] == "please" then
send("worm " .. matches[2])
else
send("worm " .. matches[4])
end
Re: Mods to Nyss Script
...
this is my working idea
in the singer script
Code: Select all
if prompt:get("psp") == prompt:get("maxpsp") and charData:get("_switch") == 0 and not charData:get("forcerenew") then
if charData:get("_song") ~= charData:get("song") then
if charData:get("_song") ~= "" and charData:get("song") ~= "" then
cecho("<red>\n[Max mana : switching songs]\n")
if charData:get("_song") == "song of harming" or charData:get("_song") == "song of offensive disruption" then
music(charData:get("_instrument"), charData:get("_song"), charData:get("effect") )
else
music(charData:get("_instrument"), charData:get("_song"), "")
end
elseif charData:get("_song") == "" and charData:get("song") == "song of renewal" then
-- if max psp and singing renew switch to heal (or regen)
if charData:get("level") >= 31 then
cecho("<red>\n[Max mana : switching songs to heal]\n")
music(charData:get("lute"), "song of healing", "")
else
cecho("<red>\n[Max mana : switching songs to regen]\n")
music(charData:get("lute"), "song of regeneration", "")
end
end
end
end
replace with something like this
Code: Select all
if prompt:get("psp") == prompt:get("maxpsp") and charData:get("_switch") == 0 and not charData:get("forcerenew") then
if charData:get("_song") ~= charData:get("song") then
if charData:get("_song") ~= "" and charData:get("song") ~= "" then
cecho("<red>\n[Max mana : switching songs]\n")
if charData:get("_song") == "song of harming" or charData:get("_song") == "song of offensive disruption" then
music(charData:get("_instrument"), charData:get("_song"), charData:get("effect") )
else
music(charData:get("_instrument"), charData:get("_song"), "")
end
elseif charData:get("_song") == "" and charData:get("song") == "song of renewal" then
-- if max psp and singing renew switch to heal (or regen)
if table.contains( {"awful", "pretty hurt", "nasty wounds", "small wounds"}, tankcondition ) then
cecho("<red>\n[Max mana : switching songs to heal]\n")
music(charData:get("lute"), "song of healing", "")
end
end
end
end
also needs one before the final end
Code: Select all
if not charData:get("_switch") and table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds", "small wounds"}, tankcondition ) and charData:get("song") == "song of offensive harmony" then
music(charData:get("lute"), "song of healing", "")
return
end
Code: Select all
if not charData:get("_switch") and table.contains( {"excellent", "few scratches"}, tankcondition ) and charData:get("song") == "song of healing" then
music(charData:get("drum"), "song of offensive harmony", "")
return
end
Re: Mods to Nyss Script
Code: Select all
function procPromptPal()
local hp=prompt:get("hp")
local maxhp=prompt:get("maxhp")
local percent=hp/maxhp
if not checkMask("pal") then
return
end
if inCombat() then
-- melee powers
if charData:get("autohands") then
if percent < .5 then
if timer:get("lay_on_hands") == nil and not timer:get("cooldown") then
useMeleePower("lh")
return
end
end
end
if charData:get("autohands") and percent < .7 and spell:getSlot(2) > 0 then
spell:cast("HL")
return
end
if charData:get("autohands") and maxhp < 800 and spell:getSlot(5) > 0 and percent < .95 then
spell:cast("AL")
return
end
-- abort if stunned
if buff:get("stun") then
return
end
-- taunts : need to change usage
if charData:get("autodivchal") then
if timer:get("divine_challenge") == nil and not timer:get("cooldown") then
useMeleePower("dc")
return
end
end
if charData:get("autonemesis") then
if timer:get("true_nemesis") == nil and not timer:get("cooldown") then
if prompt:get("tank") ~= "" and prompt:get("tank") ~= whoami() then
useMeleePower("tn")
return
end
end
end
-- divine smite
if charData:get("autodivsmite") then
if timer:get("divine_smite") == nil and not timer:get("cooldown") then
useMeleePower("ds")
return
end
end
-- 1h/shield melee powers
if isIconActive("bolstering_strike") then
if charData:get("autorcharge") then
if timer:get("radiant_charge") == nil and not timer:get("cooldown") then
if prompt:get("enemyposition") == "std" then
useMeleePower("rc")
return
end
end
end
if charData:get("autossmite") then
if timer:get("shielding_smite") == nil and not timer:get("cooldown") then
useMeleePower("ss")
return
end
end
if maxhp-hp > 100 then
if charData:get("autobstrike") then
if timer:get("bolstering_strike") == nil and not timer:get("cooldown") then
useMeleePower("bs")
return
end
end
end
if charData:get("autowsmite") then
if timer:get("wrathful_smite") == nil and not timer:get("cooldown") then
useMeleePower("ws")
return
end
end
if charData:get("autoesmite") then
if timer:get("enervating_smite") == nil and not timer:get("cooldown") then
useMeleePower("es")
return
end
end
--if charData:get("autobstrike") then
--if timer:get("bolstering_strike") == nil and not timer:get("cooldown") then
-- useMeleePower("bs")
-- return
--end
--end
end
-- 2h powers
if isIconActive("valiant_strike") then
if charData:get("autothsmite") and prompt:get("enemyposition") == "std" then
if timer:get("thunderous_smite") == nil and not timer:get("cooldown") then
useMeleePower("ts")
return
end
end
if charData:get("autovstrike") then
if timer:get("valiant_strike") == nil and not timer:get("cooldown") then
useMeleePower("vs")
return
end
end
if charData:get("autobsmite") then
if timer:get("brilliant_smite") == nil and not timer:get("cooldown") then
useMeleePower("brs")
return
end
end
if charData:get("autotesmite") then
if timer:get("terrifying_smite") == nil and not timer:get("cooldown") then
useMeleePower("trs")
return
end
end
if charData:get("autowsmite") then
if timer:get("whirlwind_smite") == nil and not timer:get("cooldown") then
useMeleePower("wws")
return
end
end
end
end
end
function SpellsPal()
return
end
function divine_challenge(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autodivchal") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autodivchal", xcommand)
end
end
function true_nemesis(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autonemesis") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autonemesis", xcommand)
end
end
function divine_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autodivsmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autodivsmite", xcommand)
end
end
function PopulateButtonCooldown(fname, xvalue)
local label=findlabel(fname)
-- Make sure button is still active
if label ~= nil then
if xvalue > 0 then
-- label:echo([[<p style="font-size:20px"><b><center><font color="]] .. charData:get("numcolor", true) .. [[">]] .. timedisplay(xvalue) .. [[</font></center></b></p>]])
label:echo([[<p style="font-size:20px"><b><center><font color="]] .. charData:get("numcolor", true) .. [[">]] .. xvalue .. [[</font></center></b></p>]])
else
label:echo([[<p style="font-size:14px"><b><center><font color="white"> </font></center></b></p>]])
end
end
end
function lay_on_hands(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autohands") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autohands", xcommand)
end
end
function bolstering_strike(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autobstrike") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton("bolstering_strike", "autobstrike", xcommand)
end
end
function radiant_charge(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autorcharge") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton("radiant_charge", "autorcharge", xcommand)
end
end
function shielding_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autossmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton("shielding_smite", "autossmite", xcommand)
end
end
function enervating_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autoesmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton("enervating_smite", "autoesmite", xcommand)
end
end
function wrathful_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autowsmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton("wrathful_smite", "autowsmite", xcommand)
end
end
-- 2h melee powers
function valiant_strike(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autovstrike") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autovstrike", xcommand)
end
end
function thunderous_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autothsmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autothsmite", xcommand)
end
end
function brilliant_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autobsmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autobsmite", xcommand)
end
end
function terrifying_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autotesmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autotesmite", xcommand)
end
end
function whirlwind_smite(fname, xcommand)
-- if xcommand > 0, function being called re: timer
if xcommand >= 0 then
PopulateButtonCooldown(fname, xcommand)
end
if xcommand == buttons.INIT then
if charData:get("autowsmite") then
setLabelImage(fname, fname .. "-on.png")
else
setLabelImage(fname, fname .. "-off.png")
end
return
end
if xcommand == buttons.CLICK then
shiftSkillButton(fname, "autowhsmite", xcommand)
end
end
Re: Mods to Nyss Script
Code: Select all
function SingerScript(event)
if checkMask("singer") then
local tankcondition= prompt:get("tankcondition")
local psp=prompt:get("psp")
local maxpsp=prompt:get("maxpsp")
-- cast harmonious blessing if down and not moving
if charData:get("autobless") then
if not buff:get("harmonious_blessing") then
if getSpellCount("harmonious_blessing") > 0 then
if not spell:getMoving() then
spell:cast("hbl")
end
end
end
end
-- gonna switch if psp is still pretty good and im playing the wrong song based on the prompt conditions
-- ie, i dont wanna sing heal if tank is excellent, few scratches or small wounds
if table.contains( {"awful", "pretty hurt", "nasty wounds"}, tankcondition ) and charData:get("song") == "song of offensive harmony" then
music(charData:get("lute"), "song of healing", "")
--return
end
if table.contains( {"excellent", "few scratches"}, tankcondition ) and charData:get("song") == "song of healing" then
music(charData:get("drum"), "song of offensive harmony", "")
--return
end
-- end mod to normal script
if prompt:get("psp") == prompt:get("maxpsp") and charData:get("_switch") == 0 and not charData:get("forcerenew") then
if charData:get("_song") ~= charData:get("song") then
if charData:get("_song") ~= "" and charData:get("song") ~= "" then
cecho("<red>\n[Max mana : switching songs]\n")
if charData:get("_song") == "song of harming" or charData:get("_song") == "song of offensive disruption" then
music(charData:get("_instrument"), charData:get("_song"), charData:get("effect") )
else
music(charData:get("_instrument"), charData:get("_song"), "")
end
elseif charData:get("_song") == "" and charData:get("song") == "song of renewal" then
-- if max psp and singing renew switch to heal or offensive harmony
if charData:get("level") >= 31 then
if table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds"}, tankcondition ) then
music(charData:get("lute"), "song of healing", "")
else
music(charData:get("drum"), "song of offensive harmony", "")
end
else
if table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds"}, tankcondition ) then
music(charData:get("lute"), "song of regeneration", "")
else
music(charData:get("drum"), "song of offensive harmony", "")
end
end
end
end
end
end
end
Re: Mods to Nyss Script
Code: Select all
-- this function will be called on all mud prompts
function SingerScript(event)
if checkMask("singer") then
-- cast harmonious blessing if down and not moving
if charData:get("autobless") then
if not buff:get("harmonious_blessing") then
if getSpellCount("harmonious_blessing") > 0 then
if not spell:getMoving() then
spell:cast("hbl")
end
end
end
end
if prompt:get("psp") == prompt:get("maxpsp") and charData:get("_switch") == 0 and not charData:get("forcerenew") then
if charData:get("_song") ~= charData:get("song") then
if charData:get("_song") ~= "" and charData:get("song") ~= "" then
cecho("<red>\n[Max mana : switching songs]\n")
if charData:get("_song") == "song of harming" or charData:get("_song") == "song of offensive disruption" then
music(charData:get("_instrument"), charData:get("_song"), charData:get("effect") )
else
music(charData:get("_instrument"), charData:get("_song"), "")
end
elseif charData:get("_song") == "" and charData:get("song") == "song of renewal" then
-- if max psp and singing renew switch to heal (or regen)
if charData:get("level") >= 31 then
cecho("<red>\n[Max mana : switching songs to heal]\n")
music(charData:get("lute"), "song of healing", "")
else
cecho("<red>\n[Max mana : switching songs to regen]\n")
music(charData:get("lute"), "song of regeneration", "")
end
end
end
end
end
if not charData:get("_switch") and table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds", "small wounds"}, tankcondition ) and charData:get("song") == "song of offensive harmony" then
music(charData:get("lute"), "song of healing", "")
return
end
if not charData:get("_switch") and table.contains( {"excellent", "few scratches"}, tankcondition ) and charData:get("song") == "song of healing" then
music(charData:get("drum"), "song of offensive harmony", "")
return
end
end
Re: Mods to Nyss Script
from line 211 -- the begining of the singer script function to the end
replace all the code with this:
Code: Select all
function SingerScript(event)
if checkMask("singer") then
-- cast harmonious blessing if down and not moving
if charData:get("autobless") then
if not buff:get("harmonious_blessing") then
if getSpellCount("harmonious_blessing") > 0 then
if not spell:getMoving() then
spell:cast("hbl")
end
end
end
end
-- gonna switch if psp is still pretty good and im playing the wrong song based on the prompt conditions
-- ie, i dont wanna sing heal if tank is excellent, few scratches or small wounds
if table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds"}, tankcondition ) and charData:get("song") == "song of offensive harmony" then
music(charData:get("lute"), "song of healing", "")
--return
end
if table.contains( {"excellent", "few scratches", "small wounds"}, tankcondition ) and charData:get("song") == "song of healing" then
music(charData:get("drum"), "song of offensive harmony", "")
--return
end
-- end mod to normal script
if prompt:get("psp") == prompt:get("maxpsp") and charData:get("_switch") == 0 and not charData:get("forcerenew") then
if charData:get("_song") ~= charData:get("song") then
if charData:get("_song") ~= "" and charData:get("song") ~= "" then
cecho("<red>\n[Max mana : switching songs]\n")
if charData:get("_song") == "song of harming" or charData:get("_song") == "song of offensive disruption" then
music(charData:get("_instrument"), charData:get("_song"), charData:get("effect") )
else
music(charData:get("_instrument"), charData:get("_song"), "")
end
elseif charData:get("_song") == "" and charData:get("song") == "song of renewal" then
-- if max psp and singing renew switch to heal or offensive harmony
if charData:get("level") >= 31 then
if table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds"}, tankcondition ) then
music(charData:get("lute"), "song of healing", "")
else
music(charData:get("drum"), "song of offensive harmony", "")
end
else
if table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds"}, tankcondition ) then
music(charData:get("lute"), "song of regeneration", "")
else
music(charData:get("drum"), "song of offensive harmony", "")
end
end
end
end
end
end
end
Re: Mods to Nyss Script
Code: Select all
function SingerScript(event)
if checkMask("singer") then
local tankcondition = prompt:get("tankcondition")
local psp = prompt:get("psp")
local maxpsp = prompt:get("maxpsp")
-- cast harmonious blessing if down and not moving
if charData:get("autobless") then
if not buff:get("harmonious_blessing") then
if getSpellCount("harmonious_blessing") > 0 then
if not spell:getMoving() then
spell:cast("hbl")
end
end
end
end
-- gonna switch if psp is still pretty good and im playing the wrong song based on the prompt conditions
-- ie, i dont wanna sing heal if tank is excellent, few scratches or small wounds
if psp > 50 then
if table.contains( {"awful", "pretty hurt", "nasty wounds"}, tankcondition ) and charData:get("song") == "song of offensive harmony" then
music(charData:get("lute"), "song of healing", "")
--return
end
if table.contains( {"excellent", "few scratches"}, tankcondition ) and charData:get("song") == "song of healing" then
music(charData:get("drum"), "song of offensive harmony", "")
--return
end
end
-- end mod to normal script
if prompt:get("psp") == prompt:get("maxpsp") and charData:get("_switch") == 0 and not charData:get("forcerenew") then
if charData:get("_song") ~= charData:get("song") then
if charData:get("_song") ~= "" and charData:get("song") ~= "" then
cecho("<red>\n[Max mana : switching songs]\n")
if charData:get("_song") == "song of harming" or charData:get("_song") == "song of offensive disruption" then
music(charData:get("_instrument"), charData:get("_song"), charData:get("effect") )
else
music(charData:get("_instrument"), charData:get("_song"), "")
end
elseif charData:get("_song") == "" and charData:get("song") == "song of renewal" then
-- if max psp and singing renew switch to heal or offensive harmony
if charData:get("level") >= 31 then
if table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds"}, tankcondition ) then
music(charData:get("lute"), "song of healing", "")
else
music(charData:get("drum"), "song of offensive harmony", "")
end
else
if table.contains( {"awful", "pretty hurt", "nasty wounds", "few wounds"}, tankcondition ) then
music(charData:get("lute"), "song of regeneration", "")
else
music(charData:get("drum"), "song of offensive harmony", "")
end
end
end
end
end
end
end
Re: Mods to Nyss Script
Code: Select all
function procPromptPal()
local hp=prompt:get("hp")
local maxhp=prompt:get("maxhp")
local percent=hp/maxhp
local rn
if not checkMask("pal") then
return
end
if inCombat() then
-- melee powers
if charData:get("autohands") then
if percent < .5 then
if timer:get("lay_on_hands") == nil and not timer:get("cooldown") then
useMeleePower("lh")
return
end
end
end
if charData:get("autohands") and percent < .7 and spell:getSlot(2) > 0 then
spell:cast("HL")
return
end
-- arbitrary number 750 because thats how many hp i have max without al
if charData:get("autohands") and maxhp < 750 and spell:getSlot(5) > 0 and percent < .95 then
spell:cast("AL")
return
end
-- abort if stunned
if buff:get("stun") then
return
end
-- taunts : need to change usage
if charData:get("autodivchal") then
if timer:get("divine_challenge") == nil and not timer:get("cooldown") then
useMeleePower("dc")
return
end
end
if charData:get("autonemesis") then
if timer:get("true_nemesis") == nil and not timer:get("cooldown") then
if prompt:get("tank") ~= "" and prompt:get("tank") ~= whoami() then
useMeleePower("tn")
return
end
end
end
-- divine smite
if charData:get("autodivsmite") then
if timer:get("divine_smite") == nil and not timer:get("cooldown") then
useMeleePower("ds")
return
end
end
-- 1h/shield melee powers
if isIconActive("bolstering_strike") then
if charData:get("autorcharge") then
if timer:get("radiant_charge") == nil and not timer:get("cooldown") then
if prompt:get("enemyposition") == "std" then
useMeleePower("rc")
return
end
end
end
if charData:get("autossmite") then
if timer:get("shielding_smite") == nil and not timer:get("cooldown") then
useMeleePower("ss")
return
end
end
if maxhp-hp > 100 then
if charData:get("autobstrike") then
if timer:get("bolstering_strike") == nil and not timer:get("cooldown") then
useMeleePower("bs")
return
end
end
end
if charData:get("autowsmite") then
if timer:get("wrathful_smite") == nil and not timer:get("cooldown") then
useMeleePower("ws")
return
end
end
if charData:get("autoesmite") then
if timer:get("enervating_smite") == nil and not timer:get("cooldown") then
useMeleePower("es")
return
end
end
--if charData:get("autobstrike") then
--if timer:get("bolstering_strike") == nil and not timer:get("cooldown") then
-- useMeleePower("bs")
-- return
--end
--end
end
if charData:get("autodivsmite") and spell:getSlot(4) > 0 then
rn = math.random(1000)
if rn > 980 then
spell:cast("DB")
return
end
end
-- 2h powers
if isIconActive("valiant_strike") then
if charData:get("autothsmite") and prompt:get("enemyposition") == "std" then
if timer:get("thunderous_smite") == nil and not timer:get("cooldown") then
useMeleePower("ts")
return
end
end
if charData:get("autovstrike") then
if timer:get("valiant_strike") == nil and not timer:get("cooldown") then
useMeleePower("vs")
return
end
end
if charData:get("autobsmite") then
if timer:get("brilliant_smite") == nil and not timer:get("cooldown") then
useMeleePower("brs")
return
end
end
if charData:get("autotesmite") then
if timer:get("terrifying_smite") == nil and not timer:get("cooldown") then
useMeleePower("trs")
return
end
end
if charData:get("autowsmite") then
if timer:get("whirlwind_smite") == nil and not timer:get("cooldown") then
useMeleePower("wws")
return
end
end
end
end
end
Re: Mods to Nyss Script
Add to the bottom of nyss - Capture Prompt --
updated red to show pain of death
Code: Select all
Giz = Giz or {}
--- new code for hp bar
--- new code for hp bar
local cur_hp, max_hp = tonumber(matches[2]), tonumber(matches[3])
Giz.hpbar = Geyser.Gauge:new({
name="Giz.hpbar", -- name
x="0%", y="4%", -- position
width="10%", -- how far across the screen
height="20px", -- how tall
})
Giz.hpbar.front:setStyleSheet([[background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #98f041, stop: 0.1 #8cf029, stop: 0.49 #66cc00, stop: 0.5 #52a300, stop: 1 #66cc00);
border-top: 1px black solid;
border-left: 1px black solid;
border-bottom: 1px black solid;
border-radius: 7;
font-size:18px;
padding: 3px;
]])
Giz.hpbar.back:setStyleSheet([[background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #cc3300, stop: 0.1 #cc6600, stop: 0.49 #ff0000, stop: 0.5 #993300, stop: 1 #993300);
border-width: 1px;
border-color: black;
border-style: solid;
border-radius: 7;
font-size:18px;
padding: 3px;
]])
Giz.hpbar:setValue(cur_hp,max_hp)
xp bar goes in the exp trigger, search for next level
Code: Select all
-- Your guildmaster says 'You have just begun the trek to your next level!' - l1/0%
--if NyyLIB.xpwindow == nil then
-- return
--end
--local xppercent = 100 - tonumber(matches[3])
--NyyLIB.xpwindow:echo([[<p style="font-size:20px"><b><center><font color="red">L:]] .. charData:get("level") .. " " .. xppercent .. [[%</font></center></b></p>]])
--if NyyLIB.delxpline then
-- eraseLine()
-- NyyLIB.delxpline = false
--end
--- new code for xp bar
Giz = Giz or {}
if tonumber(charData:get("level")) > 49 then
local cur_xp = 100
else
local cur_xp = 100 - tonumber(matches[3])
end
local max_xp = 100
-- vote button
Giz.xpbar = Geyser.Gauge:new({
name="Giz.xpbar", -- name
x="0%", y="1%", -- position
width="10%", -- how far across the screen
height="20px", -- how tall
})
Giz.xpbar.front:setStyleSheet([[background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffff99, stop: 0.1 #ffff99, stop: 0.49 #ffff00, stop: 0.5 #cccc00, stop: 1 #ffff00);
border-top: 1px black solid;
border-left: 1px black solid;
border-bottom: 1px black solid;
border-radius: 7;
padding: 3px;
]])
Giz.xpbar.back:setStyleSheet([[background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #cc3300, stop: 0.1 #cc6600, stop: 0.49 #ff0000, stop: 0.5 #993300, stop: 1 #993300);
border-width: 1px;
border-color: black;
border-style: solid;
border-radius: 7;
padding: 3px;
]])
Giz.xpbar:setValue(cur_xp,max_xp)
Re: Mods to Nyss Script
I think i got this right, i tested it with another buff.
Basically add this to GUI Group at or near line 82
Code: Select all
if buff:get("Nondetection", xchar) then
buffdisplay = buffdisplay .. createBuffDisplay(xchar, "Nondetection", "non")
end
going to need a trigger to null it when it drops before timer ends
Code: Select all
buff:del(whoami(), "Nondetection")
Re: Mods to Nyss Script
@target mobname
@cd n|s|e|w|d|u
Code: Select all
function countdown()
NyyLIB.countdown = NyyLIB.countdown - 1
if NyyLIB.countdown > 0 then
mud:send("GSAY moving " .. NyyLIB.countdir .. " in " .. NyyLIB.countdown .. " seconds and killing " .. NyyLIB.target)
tempTimer(1, [[countdown()]])
else
expandAlias("movea " .. NyyLIB.countdir, false)
if NyyLIB.target ~= nil then
mud:send("KILL " .. NyyLIB.target)
else
mud:send("HITALL all")
end
end
end
if matches[2] == nil then
if NyyLIB.target == nil then
cecho("<red>[Countdown script: No target set]\n")
return
else
cecho("<red>[Countdown script: " .. NyyLIB.target .. "]\n")
cecho("\nMove Dir:" .. matches[2] .. "\n")
end
else
-- disable rescue
if checkMask("fighter") then
if charData:get("rescuetype") ~= "off" then
buttons:change("rescuetype", "off", "rescue")
end
end
NyyLIB.countdown = 6
NyyLIB.countdir = NyyLIB.fulldirs[matches[2]:trim()]
countdown()
end
Re: Mods to Nyss Script
save as spring.wav in the sounds folder of the nyss profile
add this to your stability boots!
trigger: You spring from the ground like a leopard
type: substring
if you want to hear on others:
trigger: springs from the ground like a leopard, coming up into a fighting stance
type: substring
Code: Select all
sound("spring.wav")
or
if you dont wanna rename it..
Code: Select all
sound("cartoon011.wav")
Re: Mods to Nyss Script
Ok, this one is kinda complicated
First make a new timer, and activate it.
Name It: Animated Timers
Next make a new script object:
Name: xTimers
Code: Select all
demonnic.anitimer = demonnic.anitimer or {}
demonnic.anitimer.timers = demonnic.anitimer.timers or {}
demonnic.anitimer.activeTimers = demonnic.anitimer.activeTimers or {}
function demonnic.anitimer:new(name, cons, time, container, showTime, timerCaption, ...)
--demonic.antitimer.timers[name] = {}
local args = {...}
if container == "" then
container = nil
end
if showTime == nil then
showTime = true
end
if timerCaption == nil then
timerCaption=""
end
if demonnic.anitimer.timers[name] then
demonnic.anitimer.timers[name].max = time
demonnic.anitimer.timers[name].current = time
demonnic.anitimer.timers[name].showTime = showTime
demonnic.anitimer.timers[name].timerCaption = timerCaption
demonnic.anitimer.timers[name].text = (demonnic.anitimer.timers[name].showTime and string.format("%.1f %s", time, timerCaption or "")) or (timerCaption or "")
for k,v in pairs(cons) do
demonnic.anitimer.timers[name].gauge[k] = v
end
demonnic.anitimer.timers[name].gauge:setValue(time, time, demonnic.anitimer.timers[name].text)
if container then
container:add(demonnic.anitimer.timers[name].gauge)
else
Geyser:add(demonnic.anitimer.timers[name].gauge)
end
demonnic.anitimer.timers[name].gauge:show()
else
demonnic.anitimer.timers[name] = {}
demonnic.anitimer.timers[name].gauge = Geyser.Gauge:new(cons, container)
demonnic.anitimer.timers[name].max = time
demonnic.anitimer.timers[name].current = time
demonnic.anitimer.timers[name].showTime = showTime
demonnic.anitimer.timers[name].text = (demonnic.anitimer.timers[name].showTime and string.format("%.1f %s", time, timerCaption or "")) or (timerCaption or "")
demonnic.anitimer.timers[name].gauge:setValue(time, time, demonnic.anitimer.timers[name].text)
demonnic.anitimer.timers[name].watch = createStopWatch()
end
if #args > 0 then
demonnic.anitimer.timers[name].gauge:setStyleSheet(unpack(args))
end
if not table.contains(demonnic.anitimer.activeTimers, name) then
table.insert(demonnic.anitimer.activeTimers, name)
end
resetStopWatch(demonnic.anitimer.timers[name].watch)
startStopWatch(demonnic.anitimer.timers[name].watch)
end
function demonnic.anitimer:getTime(name)
local max = demonnic.anitimer.timers[name].max
local current = getStopWatchTime(demonnic.anitimer.timers[name].watch)
local newValue = max - current
return newValue
end
function demonnic.anitimer:showTimers()
demonnic:echo("<yellow>List of animated timers which have been created")
for timer,_ in pairs(demonnic.anitimer.timers) do
demonnic:echo(string.format(" %s", timer))
end
local actives = ""
for _,timer in ipairs(demonnic.anitimer.activeTimers) do
if actives == "" then
actives = timer
else
actives = string.format("%s, %s", actives, timer)
end
end
demonnic:echo("<yellow>Active timers: <red>" .. actives)
end
function demonnic.anitimer:update(name)
demonnic.anitimer.timers[name].current = demonnic.anitimer:getTime(name)
local time = demonnic.anitimer.timers[name].current
demonnic.anitimer.timers[name].text = (demonnic.anitimer.timers[name].showTime and string.format("%.1f %s", time, demonnic.anitimer.timers[name].timerCaption or "")) or (demonnic.anitimer.timers[name].timerCaption or "")
demonnic.anitimer.timers[name].gauge:setValue(demonnic.anitimer.timers[name].current, demonnic.anitimer.timers[name].max, demonnic.anitimer.timers[name].text)
end
function demonnic.anitimer:stop(name)
if not demonnic.anitimer.timers[name] then
return nil
end
stopStopWatch(demonnic.anitimer.timers[name].watch)
demonnic.anitimer.timers[name].gauge:hide()
for i,v in pairs(demonnic.anitimer.activeTimers) do
if demonnic.anitimer.timers[v] == demonnic.anitimer.timers[name] then
table.remove(demonnic.anitimer.activeTimers, i)
return
end
end
end
function demonnic.anitimer:animate()
for i,v in pairs(demonnic.anitimer.activeTimers) do
name = v
demonnic.anitimer:update(name)
if demonnic.anitimer:getTime(name) <= 0 then
demonnic.anitimer.timers[name].gauge:hide()
table.remove(demonnic.anitimer.activeTimers, i)
stopStopWatch(demonnic.anitimer.timers[name].watch)
end
end
end
Next a new alias
Name: @mtimer
regex: ^@mtimer$
Code: Select all
demonnic.newContainer = demonnic.newContainer or Geyser.Container:new({x=0, y=0, height=400, width = 200})
myCss1 = [[
border-width: 4px;
border-radius: 7;
border-color: red;
background-color: green;
]]
myCss2 = [[
border-width: 4px;
border-radius: 7;
border-color: green;
background-color: red;
]]
demonnic.anitimer:new("Test1", {x=10, y="10%", height = 30, width = 300, color="red"}, tonumber(buff:get("mislead")))
--demonnic.anitimer:new("Test2", {x = 0, y="50%", height = 20, width = "100%"}, tonumber(buff:get("mislead")), demonnic.newContainer, true, myCss1, myCss2)
--demonnic.anitimer:new("Test3", {x = 500, y = 300, height = 40, width = 100}, tonumber(buff:get("mislead")), "", myCss2, myCss1)
--demonnic.anitimer:new("Test4", {x="1%", y="15%", height = 20, width = "100%"}, tonumber(buff:get("mislead")), demonnic.newContainer, true)
Next a trigger
substring: A sphere of swirling shadows envelops you...
Code: Select all
mud:send("status")
tempTimer(3, [[expandAlias("@mtimer")]])
Re: Mods to Nyss Script
Trigger:
Regex: ^([A-Za-z]+) tells you '(worm|well|hole|wormhole|hol) ([A-Za-z]+)( .*)?'
Code: Select all
-- ^([A-Za-z]+) tells you '(worm|well|hole|wormhole|hol) ([A-Za-z]+)( .*)?'
-- ^([A-Za-z]+) ASSOC::? '(worm|well|hole|wormhole|hol) ([A-Za-z]+)( .*)?'
local sender = matches[2]
local target = matches[4]
--if charData:get("disableworm") then
-- if checkMask("psi") then
--mud:send("t " .. matches[2] .. " " .. string.title(matches[2]) .. ", lack of voting on TMC (http://www.mudconnect.com/cgi-bin/vote_rank.cgi?mud=TorilMud,+the+Sojourner%27s+Home) has disabled this trigger. 30+ people are online free daily, but not willing to vote.")
--- return
-- end
--end
if matches[4] == "me" then
mud:send("worm " .. target)
tempTimer(1.5, [[mud:send("med")]])
look:send()
else
mud:send("worm " .. sender)
tempTimer(1.5, [[mud:send("med")]])
look:send()
end
Re: Mods to Nyss Script
save this in the sound directory under the profile
http://www.wavsource.com/snds_2018-01-14_3453803176249356/tv/simpsons/nelson/haha.wav
regex: You nimbly avoid .* attempt to knock you down and attack as .* falls past!
code:
Code: Select all
sound("haha.wav")
Changed the main train script
Code: Select all
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
-- various functions used with the xp trains
function NextTrainStop()
local currentroom = map:getRoom()
local hp=prompt:get("hp")
local maxhp=prompt:get("maxhp")
local percent=hp/maxhp
local mv=prompt:get("mv")
local maxmv=prompt:get("maxmv")
local mpercent=mv/maxmv
callNextTrain=nil
-- if currently tanking anything, don't move
if inCombat() then
cecho("<red>[Still in combat - not leaving room]\n")
return
end
if percent < .5 or mpercent < .5 then
tempTimer(5*60, [[NextTrainStop()]])
cecho("\n<cyan>Waiting 5 minutes to heal or regain moves\n")
return
end
-- look has been sent but not received - recall function after 1 second if grouped player fighting
if type(groupList:whoTanking()) == "table" and not look:get() then
for k,v in pairs( groupList:whoTanking() ) do
if groupList:ingroup(k) and v ~= 0 then
--echoDebug("<red>[look sent and not received]\n")
tempTimer(1, [[NextTrainStop()]])
return
end
end
end
if NyyLIB.smtrainposition == nil then
assert(currentroom, "[Error: room id is nil]")
--if map:getCurrentZone() == "Ashstone" then
-- getPath(currentroom, 87415)
-- mud:send("gcmd [Stopping train and returning to bank (87415)" .. " <." .. compressSpeedwalk() .. ">]")
-- expandAlias("@fwalk 87415", false)
--else
-- getPath(currentroom, 48603)
-- mud:send("gcmd [Stopping train and returning to inn (48603)" .. " <." .. compressSpeedwalk() .. ">]")
-- expandAlias("@fwalk 48603", false)
--end
expandAlias("@resettrain", false)
else
NyyLIB.smtrainposition = NyyLIB.smtrainposition + 1
if NyyLIB.smtrainposition > #NyyLIB.smtrainstops then
NyyLIB.smtrainposition = 1
--printStats(3)
--expandAlias("@stats write", false)
--mud:send("gcmd [Resetting Stats]")
--resetStats()
end
NyyLIB.nextstop = NyyLIB.smtrainstops[NyyLIB.smtrainposition][1]
enableTrigger("trainstation")
assert(currentroom, "[Error: room id is nil]")
if getPath(currentroom, NyyLIB.nextstop) then
local str = NyyLIB.smtrainstops[NyyLIB.smtrainposition][2]
local nextmob = string.gsub(" "..str, "%W%l", string.upper):sub(2)
mud:send("gcmd Moving to --> " .. nextmob .. " <--")
end
NyyLIB.traintarget=false
if currentroom ~= NyyLIB.nextstop then
--echoDebug("<red>[queueing fwalk in 3 seconds]\n")
tempTimer(3, [[expandAlias("@fwalk " .. NyyLIB.nextstop)]])
end
end
end
Re: Mods to Nyss Script
Code: Select all
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
function Standing()
if prompt:get("position") ~= "std" then
return(false)
else
return(true)
end
end
function Bashed()
if prompt:get("enemyposition") ~= "std" then
return(true)
else
return(false)
end
end
function Tanking()
if prompt:get("tank") ~= "" and prompt:get("tank") ~= whoami() then
return(false)
else
return(true)
end
end
function twoHanded()
if charData:get("twohanded") then
return(true)
else
return(false)
end
end
function timerset(timer,time)
timer:set(timer,time)
end
function slotOne()
if spell:getSlot(1) > 0 then
return(true)
end
return(false)
end
function slotTwo()
if spell:getSlot(2) > 0 and charData:get("level") >= 10 then
return(true)
end
return(false)
end
function slotThree()
if spell:getSlot(3) > 0 and charData:get("level") >= 20 then
return(true)
end
return(false)
end
function slotFour()
if spell:getSlot(4) > 0 and charData:get("level") >= 30 then
return(true)
end
return(false)
end
function slotFive()
if spell:getSlot(5) > 0 and charData:get("level") >= 40 then
return(true)
end
return(false)
end
function gCool()
-- global cooldown
timer:set("gcool", 5)
end
function getCooldown()
return(tonumber(timer:get("gcool")))
end
function doTurnin()
charData:set("needs_turnin", true)
tempTimer(60, [[NextTrainStop()]])
mud:send("enter tower")
cecho("\n<cyan>Waiting 60 seconds for turnin to complete\n")
mud:send("gcmd waiting 60 seconds for turnin to complete")
end
function Turnin()
return(charData:get("needs_turnin"))
end
function doneTurnin()
charData:set("needs_turnin", false)
end
then you need these trains:
Code: Select all
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
-- TODO: update inittrain path in Silverymoon
testtrain = {
{48518, "Shalyssa Lurialar"},
{48850, "Forell Luckaun"},
{48721, "Seipora Rein"}
}
swamppit = {
{41966, "doTurnin"},
{41973, "young"},
{41980, "young"},
{41966, "young"},
{41979, "young"},
{41974, "young"},
{41965, "young"},
{41964, "young"},
{41975, "young"},
{41978, "young"},
{41979, "young"},
{41978, "young"},
{41979, "young"},
{41978, "young"},
{41979, "young"},
{41966, "young"},
{41973, "young"},
{41980, "young"},
{41966, "young"},
{41979, "young"},
{41974, "young"},
{41965, "young"},
{41964, "huge"},
{41975, "young"},
{41978, "young"},
{41979, "young"},
{41978, "young"},
{41979, "young"},
{41978, "young"},
{41979, "young"},
{41966, "young"},
{41973, "young"},
{41980, "young"},
{41966, "young"},
{41979, "young"},
{41974, "young"},
{41965, "young"},
{41964, "huge"},
{41975, "young"},
{41978, "young"},
{41979, "young"},
{41978, "young"},
{41979, "young"},
{41978, "young"},
{41979, "young"}
}
forcs = {
{79386, "orog"},
{79387, "orog"},
{79388, "orog"},
{79389, "orog"},
{79390, "orog"},
{79391, "orog"},
{79392, "orog"},
{79393, "orog"},
{79394, "orog"},
{79395, "orog"},
{79396, "orog"},
{79397, "orog"},
{79398, "orog"},
{79399, "orog"},
{79400, "orog"},
{79401, "orog"},
{79402, "orog"},
{79403, "orog"},
{79404, "orog"},
{79405, "orog"},
{79406, "orog"},
{79407, "orog"},
{79408, "orog"},
{79409, "orog"},
{79410, "orog"},
{79411, "orog"},
{79410, "orc"},
{79409, "orc"},
{79408, "orc"},
{79407, "orc"},
{79406, "orc"},
{79405, "orc"},
{79404, "orc"},
{79403, "orc"},
{79402, "orc"},
{79401, "orc"},
{79400, "orc"},
{79399, "orc"},
{79398, "orc"},
{79397, "orc"},
{79396, "orc"},
{79395, "orc"},
{79394, "orc"},
{79393, "orc"},
{79392, "orc"},
{79391, "orc"},
{79390, "orc"},
{79389, "orc"},
{79388, "orc"},
{79386, "orc"},
{79387, "orc"},
{79386, "orc"}
}
pship = {
{85876, "newbs"},
{85870, "naval"},
{85879, "slaver"},
{85889, "first"},
{85880, "turds"},
{85886, "navigator"},
{85880, "turds"},
{85890, "miplit"}
}
dkloop = {
{74698, "bankDeposit"},
--{74687, "traveler"},
{74862, "durdyn"},
{74855, "chef"},
{74860, "soldier"},
{74859, "cook"},
{74846, "mistress"},
--{74687, "duergar"},
{74843, "cook"},
{74733, "archer"},
{74746, "leader"},
{74696, "soldier"},
{74714, "soldier"},
--{74687, "trader"},
{74696, "leader"},
{74733, "archer"},
--{74687, "diplomat"},
{74731, "soldier"},
{74733, "archer"},
{74746, "soldier"},
{74731, "leader"},
{74696, "soldier"},
{74733, "archer"},
{74714, "soldier"},
{74733, "archer"},
{74714, "leader"},
{74731, "soldier"},
--{74733, "captain"},
{74746, "soldier"},
{74719, "tubby"},
{74733, "archer"},
--{74723, "archivist"},
{74750, "dummy"}
}
smtrain = {
{84203, "bankDeposit"},
{48882, "Willa O'Greensleeves"},
{48873, "Aratha Sul"},
{48524, "Lavis Ryl"},
{48525, "Elaith Waterstill"},
{48518, "Shalyssa Lurialar"},
{48850, "Forell Luckaun"},
{48721, "Seipora Rein"},
{48681, "Corland Deepforge"},
{48586, "Ersenas"},
{49135, "Ultrumm"},
-- {49054, "Tathshandra Tyrar"},
-- {94648, "Otasit"},
{49117, "devout priest"},
{49036, "Dragor Keenblade"}
}
ashtrain = {
{87415, "bankDeposit"},
{87263, "gambler"},
{87262, "gambler"},
{87270, "bouncer"},
{87271, "naked man"},
{87272, "prostitute"},
{87275, "aging prostitute"},
{87276, "naked woman"},
{87275, "aging prostitute"},
{87272, "prostitute"},
{87270, "bouncer"},
{87263, "gambler"},
{87262, "gambler"},
{87254, "Ashstone noble"},
{87251, "Ashstone noble"},
{87255, "Ashstone noble"},
{87249, "Ashstone noble"},
{87253, "Ashstone noble"},
{87258, "Ashstone noble"},
{87257, "Ashstone noble"},
{87258, "Ashstone noble"},
{87253, "Ashstone noble"},
{87249, "Ashstone noble"},
{87255, "Ashstone noble"},
{87251, "Ashstone noble"},
{87254, "Ashstone noble"}
}
wdtrain = {
{13402, "elite"},
{13359, "elite"},
{13343, "elite"},
{13354, "master"},
{13397, "master"}
-- {85354, "elite guard"},
-- {85358, "elite guard"},
-- {85356, "elite guard"},
-- {85410, "elite guard"},
-- {85421, "elite guard"},
-- {85349, "elite guard"}
}
cmtrain = {
{44327, "bugbear"},
{44328, "bugbear"},
{44329, "bugbear"},
{44330, "bugbear"},
{44331, "bugbear"},
{44344, "bugbear"},
{44345, "bugbear"},
{44346, "bugbear"},
{44347, "bugbear"},
{44348, "bugbear"},
{44349, "bugbear"},
{44350, "bugbear"},
{44349, "bugbear"},
{44348, "bugbear"},
{44347, "bugbear"},
{44346, "bugbear"},
{44345, "bugbear"},
{44344, "bugbear"},
{44331, "bugbear"},
{44332, "bugbear"},
{44333, "bugbear"},
{44334, "bugbear"},
{44335, "bugbear"},
{44340, "bugbear"},
{44341, "bugbear"},
{44342, "bugbear"},
{44343, "bugbear"},
{44342, "bugbear"},
{44341, "bugbear"},
{44340, "bugbear"},
{44335, "bugbear"},
{44336, "bugbear"},
{44337, "bugbear"},
{44338, "bugbear"},
{44339, "bugbear"},
{44338, "bugbear"},
{44337, "bugbear"},
{44336, "bugbear"},
{44335, "bugbear"},
{44334, "bugbear"},
{44333, "bugbear"},
{44332, "bugbear"},
{44331, "bugbear"},
{44330, "bugbear"},
{44329, "bugbear"},
{44328, "bugbear"},
{44327, "bugbear"},
{44313, "orc"},
{44314, "orc"},
{44315, "orc"},
{44316, "orc"},
{44317, "orc"},
{44318, "orc"},
{44319, "orc"},
{44320, "orc"},
{44321, "orc"},
{44322, "orc"},
{44323, "orc"},
{44322, "orc"},
{44321, "orc"},
{44324, "orc"},
{44325, "orc"},
{44326, "orc"},
{44325, "orc"},
{44324, "orc"},
{44325, "orc"},
{44324, "orc"},
{44321, "orc"},
{44320, "orc"},
{44319, "orc"},
{44318, "orc"},
{44317, "orc"},
{44316, "orc"},
{44315, "orc"},
{44314, "orc"},
{44313, "orc"}
}
function configureTrain()
-- disable any active triggers prior to enabling
expandAlias("@resettrain", false)
cecho("<green>[Laying train tracks...]\n")
if trainList ~= nil then
if _G[trainList] ~= nil then
NyyLIB.smtrainstops = _G[trainList]
trainList=nil
return
end
end
if map:getCurrentZone() == "Ashstone" then
NyyLIB.smtrainstops = ashtrain
elseif map:getCurrentZone() == "Silverymoon, Gem of the North" then
NyyLIB.smtrainstops = smtrain
elseif map:getCurrentZone() == "Northern Waterdeep Main City" then
NyyLIB.smtrainstops = wdtrain
elseif map:getCurrentZone() == "The Great Harbor of Waterdeep" then
NyyLIB.smtrainstops = wdtrain
elseif map:getCurrentZone() == "Dobluth Kyor - Main City" then
NyyLIB.smtrainstops = dkloop
elseif map:getCurrentZone() == "The Comarian Mines" then
NyyLIB.smtrainstops = cmtrain
elseif map:getCurrentZone() == "The Spirit Raven" then
NyyLIB.smtrainstops = pship
elseif map:getCurrentZone() == "Ghore - City of Trolls" then
NyyLIB.smtrainstops = swamppit
elseif map:getCurrentZone() == "Faang - City of Ogres" then
NyyLIB.smtrainstops = forcs
end
end
and the trainscripts script:
Code: Select all
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
-- various functions used with the xp trains
function NextTrainStop()
local currentroom = map:getRoom()
local hp=prompt:get("hp")
local maxhp=prompt:get("maxhp")
local percent=hp/maxhp
local mv=prompt:get("mv")
local maxmv=prompt:get("maxmv")
local mpercent=mv/maxmv
local searching = charData:get("needs_search")
callNextTrain=nil
-- if currently tanking anything, don't move
if inCombat() or gCool() or Turnin() then
cecho("<red>[Still in combat - not leaving room]\n")
return
end
if searching then
tempTimer(30, [[NextTrainStop()]])
cecho("\n<cyan>Waiting 30 seconds for search to complete\n")
mud:send("gcmd waiting 30 seconds for search to complete")
return
end
if percent < .5 or mpercent < .5 then
tempTimer(5*60, [[NextTrainStop()]])
cecho("\n<cyan>Waiting 5 minutes to heal or regain moves\n")
return
end
-- look has been sent but not received - recall function after 1 second if grouped player fighting
if type(groupList:whoTanking()) == "table" and not look:get() then
for k,v in pairs( groupList:whoTanking() ) do
if groupList:ingroup(k) and v ~= 0 then
--echoDebug("<red>[look sent and not received]\n")
tempTimer(5, [[NextTrainStop()]])
return
end
end
end
if NyyLIB.smtrainposition == nil then
assert(currentroom, "[Error: room id is nil]")
--if map:getCurrentZone() == "Ashstone" then
-- getPath(currentroom, 87415)
-- mud:send("gcmd [Stopping train and returning to bank (87415)" .. " <." .. compressSpeedwalk() .. ">]")
-- expandAlias("@fwalk 87415", false)
--else
-- getPath(currentroom, 48603)
-- mud:send("gcmd [Stopping train and returning to inn (48603)" .. " <." .. compressSpeedwalk() .. ">]")
-- expandAlias("@fwalk 48603", false)
--end
expandAlias("@resettrain", false)
else
NyyLIB.smtrainposition = NyyLIB.smtrainposition + 1
if NyyLIB.smtrainposition > #NyyLIB.smtrainstops then
NyyLIB.smtrainposition = 1
--printStats(3)
--expandAlias("@stats write", false)
--mud:send("gcmd [Resetting Stats]")
--resetStats()
end
NyyLIB.nextstop = NyyLIB.smtrainstops[NyyLIB.smtrainposition][1]
enableTrigger("trainstation")
assert(currentroom, "[Error: room id is nil]")
if getPath(currentroom, NyyLIB.nextstop) then
local str = NyyLIB.smtrainstops[NyyLIB.smtrainposition][2]
local nextmob = string.gsub(" "..str, "%W%l", string.upper):sub(2)
mud:send("gcmd Moving to --> " .. nextmob .. " <--")
end
NyyLIB.traintarget=false
if currentroom ~= NyyLIB.nextstop then
--echoDebug("<red>[queueing fwalk in 3 seconds]\n")
tempTimer(3, [[expandAlias("@fwalk " .. NyyLIB.nextstop)]])
end
end
end
function StartFight()
if prompt:get("tank") ~= "" then
return
end
-- train was just stopped
if NyyLIB.smtrainposition == nil then
return
end
local mobtarget = string.split(NyyLIB.smtrainstops[NyyLIB.smtrainposition][2], " ")[1]
if NyyLIB.traintarget then
setEnemy(mobtarget)
mud:send("gcmd Attacking --> " .. string.title(mobtarget) .. " <--")
-- rogue, anti-paladin - apply poison
if checkMask("venomer") then
sendPoison()
end
-- rogue: start with assassinate
if checkMask("rog") then
if not sendAssassinate(mobtarget) then
mud:send("bs " .. mobtarget)
end
return
end
if charData:get("twohanded") then
if checkMask("pal") then
if not timer:get("thunder_smite") then -- autobash
mud:send("TS " .. mobtarget)
timer:set("*thunder smite*",15)
timer:set("gcool", 5)
--local comtosend = "KILL " .. mobtarget
mud:send("KILL " .. mobtarget)
cecho("\n<cyan>*thunder smite* " .. mobtarget .. "<--\n")
charData:set("holywords", 0)
charData:set("searing", 0)
return
else
local timeleft = tonumber(timer:get("thunder_smite"))
local comtosend = "TS " .. mobtarget
tempTimer(timeleft, [[mud:send(comtosend)]])
timer:set("*thunder smite*",15+timeleft)
timer:set("gcool", 5+timeleft)
cecho("\n<cyan>*thunder smite* " .. mobtarget .. " in " .. timeleft .. " seconds\n")
charData:set("holywords", 0)
charData:set("searing", 0)
end
end
else
if checkMask("pal") and not timer:get("radiant_charge") then -- autobash
mud:send("RC " .. mobtarget)
timer:set("radiant_charge", 13)
timer:set("gcool",5)
cecho("\n<cyan>*radiant charge* " .. mobtarget .. "\n")
return
end
end
if charData:get("twohanded") then
if checkMask("blk") and not timer:get("dominating_smite") then -- autobash
mud:send("SS " .. mobtarget)
timer:set("shattering_smite", 13) -- 1h bash Strike with all weapons for 128% (Weapon, Shield, One handed) Mod: +28%
timer:set("gcool", 5)
cecho("\n<cyan>*shattering_smite* " .. mobtarget .. "\n")
return
end
else
if checkMask("blk") and not timer:get("dominating_smite") then -- autobash
mud:send("DS " .. mobtarget)
timer:set("dominating_smite", 13)
timer:set("gcool", 5)
mud:send("KILL " .. mobtarget)
cecho("\n<cyan>*dominating_smite* " .. mobtarget .. "\n")
return
end
end
-- warrior classed - start with bash, bodyslam, mounted charge
if checkMask("traintanks") then
if checkMask("fighter") and not checkMask("ran") then
if mount:get() == nil then
if whorace(whoami()) == "Ogre" then
mud:send("BS " .. mobtarget) -- bodyslam
elseif checkMask("blk") then
expandAlias("kill " .. mobtarget)
else
mud:send("kill " .. mobtarget)
end
else
mud:send("mount")
mount:charge(mobtarget)
end
return
end
if checkMask("ran") and not timer:get("sweeping_strike") then
meleePowerUsed=false
useMeleePower("SS " .. mobtarget)
tempTimer(2, [[StartFight()]])
return
end
end
--spell:setMoving(false)
mud:send("kill " .. mobtarget)
else
cecho("\n<red>[Target is damaged or already dead - Moving to next target]\n")
NextTrainStop()
end
end
function bankDeposit()
--expandAlias("dep", false)
if groupList:size() > 1 then
--botWarning()
end
end
function botWarning()
--mud:send("gsay * [ Warning! Use at own risk! ]")
--mud:send("gsay * Toril discourages use of robots. Use may be")
--mud:send("gsay * permitted if at or near keys, but not for")
--mud:send("gsay * long periods of time. This may result in")
--mud:send("gsay * arbitrary punishment, including aggressive")
--mud:send("gsay * mob loads, caging, freezing or deletion.")
--mud:send("gsay * [ Warning! Use at own risk! ]")
end
and then a few triggers for searching corpses in ghore..
3 triggers on this:
substring: a young alligator is dead! R.I.P.
substring: stop the bleeding
substring: a huge python is dead! R.I.P.
Code: Select all
charData:set("needs_search", true)
mud:send("bandage me")
substring: You search exhaustively and conclude there is nothing to be found!
substring: You find a raw alligator steak!
substring: Search what?
Code: Select all
mud:send("get steak corpse")
mud:send("put steak hole")
charData:set("needs_search", false)
--expandAlias("kill young")
substring: An experienced troll hunter stands here licking his chops.
Code: Select all
mud:send("get steak hole")
[code]
substring: You get a raw alligator steak from a portable hole.
[code]mud:send("give steak troll")[/code]
substring: The a portable hole does not contain the steak.
[code]
mud:send("down")
doneTurnin()
[/code]
substring: A small roc flies in.
substring: A small roc spreads its wings and ROARS, filling your heart with terror!
[code]
mud:send("kill roc")
[/code]
regex: Bandaging .* further won't help any
substring: You don't find anything.
[code]
mud:send("search corpse")
charData:set("needs_search", true)
[/code]
substring: A raw alligator steak lays here in the mud.
[code]
mud:send("get steak")
mud:send("put steak hole")
[/code]
substring: You find a flayed piece of snakeskin!
[code]
mud:send("get flayed corpse")
charData:set("needs_search", false)
i think thats it, lemme know if u cant get the steak one working, rest is pretty straight forward.
Re: Mods to Nyss Script
Code: Select all
function sendAssist(xchar)
--if xchar ~= nil then
-- cecho("<green>[sendASsist: " .. xchar .. "]\n")
--end
if NyyLIB.castertrain then
return
end
-- if hp not listed send group
if groupList:getHP(xchar) == 0 then
group:send()
end
if charData:get("autoassist") == false then
return
end
-- already in combat: why assist again?
if inCombat() then
return
end
-- sm caster train is active : flee to mem?
if isActive("SMTrainCaster", "trigger") ~= 0 then
if not fightreturn then
if prompt:get("position") == "sit" then
mud:send("ST")
end
-- send flee
fleeMem()
return
end
end
echoDebug("<red>[assist]")
if checkMask("rog") then
local enemytarget = getEnemy()
-- invis target, don't have di
if enemytarget == "Someone" or enemytarget == "someone" then
return
end
if enemytarget == "nightmare" then
return
end
if enemytarget ~= "" then
if enemytarget == "mage" or enemytarget == "wight" then
if not buff:get("globe_of_invulnerability") then
return
end
end
end
end
if assistSent == nil then
assistSent = true
-- currently sitting: send stand first TODO is this sending multiple times?
if prompt:get("position") == "sit" then
mud:send("ST")
end
sendPoison()
if checkMask("rog") then
local enemytarget = getEnemy()
if enemytarget ~= "" then
-- if wraith kill, not backstab
if timer:get("wraithform") then
mud:send("KILL " .. enemytarget)
return
end
if sendAssassinate(enemytarget) then
return
end
-- nonpowers backstab for practice
local backstab
if prompt:get("hp") > 1000 then
backstab = "backstab " .. enemytarget
else
backstab = "bs " .. enemytarget
end
cecho("\n<red>[" .. backstab .. "]\n")
mud:send(backstab)
end
look:send()
return
end
-- mount before assisting
--if mount:get() ~= nil and not mount:getMounted() then
--send("mount " .. mount:get() )
--mud:send("mount")
--end
-- if memorizing stand before sending assist
if spell:getMem() or memsent then
mud:send("ST")
end
if checkMask("ran") then
local enemytarget = getEnemy()
if enemytarget ~= "" then
cecho("\n<red>[kill " .. enemytarget .. "]\n")
mud:send("KILL " .. enemytarget)
look:send()
return
end
end
if whorace(whoami()) == "Ogre" then
local enemytarget = getEnemy()
if enemytarget ~= "" then
cecho("\n<red>[bs " .. enemytarget .. "]\n")
mud:send("bs " .. enemytarget)
look:send()
return
end
end
if whorace(whoami()) == "Halfling" then
local enemytarget = getEnemy()
if enemytarget ~= "" then
cecho("\n<red>[hs " .. enemytarget .. "]\n")
mud:send("hamstring " .. enemytarget)
--mud:send("kill " .. enemytarget)
look:send()
return
end
end
echoDebug("<red>[assist " .. xchar .. "]\n")
mud:send("assist " .. xchar)
end
end
Re: Mods to Nyss Script
i could make it better if i wasnt exausted and going to work..
prolly revisit later
Trigger: Finditem
regex: (.+)\.(.*) inside.*
regex: (.+)\.(.*) worn.*
Code: Select all
expandAlias("@id " .. matches[3])
Re: Mods to Nyss Script
how it works:
lets say you want to find all items with dam > 3 for finger
with this alias you would type
@dbfind dam > 3 finger
Results:
SQL:select items.item_name, items.short_stats, item_slots.slot_abbr, items.item_id, items.item_type,
item_attribs.attrib_abbr, item_attribs.attrib_value from items, item_attribs, item_slots where
items.item_id == item_attribs.item_id and items.item_id == item_slots.item_id and item_slots.
slot_abbr like '%finger%' and item_attribs.attrib_abbr like '%dam%' and item_attribs.attrib_value >
3
a dragonhunter ring (Finger) Dam:5 * Magic No_Burn !Neut * Wt:1 Val:1000p * Zone: CM (Q) * Last ID:
2012-12-16
a silvery ring of solarian truesteel (Finger or Tail) Dam:4 Svsp:-3 Fire:5% SENSE * Magic No_Burn *
Wt:1 Val:0p * Zone: KV (Q) * Last ID: 2008-11-22
a band of killing frost (Finger) Armor:-6 Dam:4 * Magic No_Burn No_Loc * Wt:1 Val:0p * Zone: Magma
(R) * Last ID: 2006-09-05
a ring of seaweed set with a black pearl (Finger or Tail) Dam:4 Blud:-5% Pier:-5% Rang:-5% Slas:-5%
Unarm:-5% * Float No_Burn No_Loc !Mage !Priest * Wt:0 Val:0p * Zone: Ice (UI) * Last ID: 2013-05-21
a ring of seaweed set with a white pearl (Finger or Tail) Dam:4 * Float No_Burn No_Loc !Mage
!Priest * Wt:0 Val:0p * Zone: Unknown (Q) * Last ID: 2013-10-18
[5 matches in database]
alias:
Name:@dbfind
Regex:^@dbfind (.*)$
Code: Select all
local data
--cecho("<red>[Attempting to identify " .. matches[2] .. "]\n")
local args = matches[2]
local temp = args:split("\ ")
local attr = temp[1]
local oppr = temp[2]
local amt = temp[3]
local slot = temp[4]
data = statlookup(attr, oppr, amt,slot)
for k,v in pairs(data) do
cecho("\n<green>" .. v .. "\n")
end
cecho ("<red>[" .. #data .. " matches in database]\n")
Script can be placed anywhere, i just made a new one in the base, above nysslib so it doesnt get delted
Code: Select all
function statlookup (stat, operator, amount, slot)
local recs, row
local retval = {}
--select items.item_name, items.short_stats, item_slots.slot_abbr, items.item_id, items.item_type, item_attribs.attrib_abbr, item_attribs.attrib_value
--from items, item_attribs, item_slots where items.item_id == item_attribs.item_id
--and items.item_id == item_slots.item_id
--and items.item_name like "%a black-hafted broadsword stained with blood%"
--and item_attribs.attrib_abbr like "%dam%"
--and item_attribs.attrib_value > 2
sql = "select items.item_name, items.short_stats, item_slots.slot_abbr, items.item_id, items.item_type, item_attribs.attrib_abbr, item_attribs.attrib_value "
sql = sql .. "from items, item_attribs, item_slots where items.item_id == item_attribs.item_id "
sql = sql .. "and items.item_id == item_slots.item_id "
sql = sql .. "and item_slots.slot_abbr like '%" .. slot .. "%' "
sql = sql .. "and item_attribs.attrib_abbr like '%" .. stat .. "%' "
sql = sql .. "and item_attribs.attrib_value " .. operator .. " " .. amount
cecho("<cyan>SQL:" .. sql .. "\n")
recs = assert(NyyLIB.conn:execute(sql))
row = recs:fetch({})
while row do
retval[#retval+1] = row[2]
row = recs:fetch({})
end
recs:close()
return(retval)
end
Warriors
basic setup code
first, fix the two handed debacle
trigger #1 name - irrelavant
matching: You are using:
Code: Select all
charData:set("twohanded", false)
initClass() -- show any buttons needed
enableTrigger("twhohand2")
--cecho("<cyan> set onehanded")
trigger #2 name - twohand2
matching: <wielding twohanded>
Code: Select all
charData:set("twohanded", true)
--cecho("<cyan> set twohand")
initClass()
disableTrigger("twohand2")
adds these new set variables
[autoros] true true|false use Rain of Steel during combat
[autoua] true true|false use Unyielding Avalanche during combat
[autosc] true true|false use Skullcrusher during combat
[autoss] true true|false use Spinning Sweep during combat
[autocv] true true|false use Cleave during combat
[autora] true true|false use Relentless Assault during combat
[autobs] true true|false use Brutal Strike during combat
[autods] true true|false use Defensive Strike during combat
[autosb] true true|false use Shield Bash during combat
[autocs] true true|false use Comeback Strike during combat
[autowu] true true|false use Warriors Ultimatum during combat
[autocc] true true|false use Combat Challenge during combat
[autoiw] true true|false use Iron Warrior during combat
[autosod] true true|false use Storm of Destruction during combat
[autodsd] true true|false use Diamond Shield Defense during combat
[autohd] true true|false use Heroic Defiance during combat
[autout] true true|false use Unstoppable during combat
[autoub] true true|false use Unbreakable during combat
[autonop] true true|false use No Opening during combat
Code: Select all
-------------------------------------------------
-- Put your Lua functions here. --
-- --
-- Note that you can also use external Scripts --
-------------------------------------------------
function Standing()
if prompt:get("position") ~= "std" then
return(false)
else
return(true)
end
end
function Bashed()
if prompt:get("enemyposition") ~= "std" then
return(true)
else
return(false)
end
end
function Tanking()
if prompt:get("tank") ~= "" and prompt:get("tank") ~= whoami() then
return(false)
else
return(true)
end
end
function twoHanded()
if charData:get("twohanded") then
return(true)
else
return(false)
end
end
function timerset(timer,time)
timer:set(timer,time)
end
function slotOne()
if spell:getSlot(1) > 0 then
return(true)
end
return(false)
end
function slotTwo()
if spell:getSlot(2) > 0 and charData:get("level") >= 10 then
return(true)
end
return(false)
end
function slotThree()
if spell:getSlot(3) > 0 and charData:get("level") >= 20 then
return(true)
end
return(false)
end
function slotFour()
if spell:getSlot(4) > 0 and charData:get("level") >= 30 then
return(true)
end
return(false)
end
function slotFive()
if spell:getSlot(5) > 0 and charData:get("level") >= 40 then
return(true)
end
return(false)
end
function gCool()
-- global cooldown
timer:set("gcool", 5)
end
function getCooldown()
if timer:get("gcool") then
return(true)
else
return(false)
end
end
function doTurnin()
if charData:get("level") > 25 then
charData:set("needs_turnin", true)
tempTimer(60, [[NextTrainStop()]])
mud:send("enter tower")
--mud:send("enter boat")
cecho("\n<cyan>Waiting 60 seconds for turnin to complete\n")
--mud:send("gcmd waiting 60 seconds for turnin to complete")
end
end
function Turnin()
return(charData:get("needs_turnin"))
end
function doneTurnin()
charData:set("needs_turnin", false)
end
function almostDead()
local mobcond=prompt:get("enemycondition")
if mobcond ~= "awful" then
return false
else
return true
end
end
Replace in the char data script
Find:
Code: Select all
{ "autogreen", "ran", {"true", "false"}, "false", "use greenfire during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
}
replace with:
Code: Select all
{ "autoros", "war", {"true", "false"}, "false", "use Rain of Steel during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autoua", "war", {"true", "false"}, "false", "use Unyielding Avalanche during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autosc", "war", {"true", "false"}, "false", "use Skullcrusher during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autoss", "war", {"true", "false"}, "false", "use Spinning Sweep during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autocv", "war", {"true", "false"}, "false", "use Cleave during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autora", "war", {"true", "false"}, "false", "use Relentless Assault during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autobs", "war", {"true", "false"}, "false", "use Brutal Strike during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autods", "war", {"true", "false"}, "false", "use Defensive Strike during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autosb", "war", {"true", "false"}, "false", "use Shield Bash during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autocs", "war", {"true", "false"}, "false", "use Comeback Strike during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autowu", "war", {"true", "false"}, "false", "use Warriors Ultimatum during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autocc", "war", {"true", "false"}, "false", "use Combat Challenge during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autoiw", "war", {"true", "false"}, "false", "use Iron Warrior during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autosod", "war", {"true", "false"}, "false", "use Storm of Destruction during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autodsd", "war", {"true", "false"}, "false", "use Diamond Shield Defense during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autohd", "war", {"true", "false"}, "false", "use Heroic Defiance during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autout", "war", {"true", "false"}, "false", "use Unstoppable during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autoub", "war", {"true", "false"}, "false", "use Unbreakable during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autonop", "war", {"true", "false"}, "false", "use No Opening during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
},
{ "autogreen", "ran", {"true", "false"}, "false", "use greenfire during combat",
"\n<green>[@ will be used during combat.]\n",
"\n<red>[@ will not be used.]\n"
}
Finally add this function in the top of the Warrior Script
Code: Select all
function procPromptWar()
local hp=prompt:get("hp")
local maxhp=prompt:get("maxhp")
local percent=hp/maxhp
local rn
if not checkMask("war") or not Standing() or getCooldown() or not inCombat() then
return
end
-- Unstoppable
if percent < .7 then
if not timer:get("unstoppable") then
mud:send("UT")
cecho("\n<cyan>*unstoppable*\n")
timer:set("unstoppable", 5*61)
timer:set("gcool", 3)
return
end
end
if percent < .8 then
if not timer:get("iron_warrior") then
mud:send("IW")
cecho("\n<cyan>*iron_warrior*\n")
timer:set("unstoppable", 7*61)
timer:set("gcool", 3)
return
end
end
if not twoHanded() then -- One Handed
-- Shield Bash
if not timer:get("shield_bash") and not Bashed() and charData:get("autosb") then
send("SB")
timer:set("gcool", 3)
timer:set("shield_bash", 14)
cecho("\n<cyan>*shield bash*")
return
end
-- Comeback Strike
if not timer:get("comeback_strike") and percent < .85 and charData:get("autocs") then
send("CS")
timer:set("gcool", 3)
timer:set("comeback_strike", 14)
cecho("\n<cyan>*comeback_strike*")
return
end
-- Defensive Strike
if not timer:get("defensive_strike") and charData:get("autods") then
send("DS")
timer:set("gcool", 3)
timer:set("defensive_strike", 14)
cecho("\n<cyan>*defensive strike*")
return
end
-- Relentless Assault
if not timer:get("relentless_assault") and charData:get("autora") and not Bashed() then
send("SB")
timer:set("gcool", 3)
timer:set("relentless_assault", 40)
cecho("\n<cyan>*relentless_assault*")
return
end
-- Brutal Strike
if not timer:get("brutal_strike") and charData:get("autobs") then
send("BS")
timer:set("gcool", 3)
timer:set("brutal_strike", 40)
cecho("\n<cyan>*brutal_strike*")
return
end
else -- Two Handed Stuff
-- Spinning Sweep
if not timer:get("spinning_sweep") and not Bashed() and charData:get("autoss") then
send("SS")
timer:set("gcool", 3)
timer:set("spinning_sweep", 14)
cecho("\n<cyan>*spinning sweep*")
return
end
-- Unyielding Avalanche
if not timer:get("unyielding_avalanche") and charData:get("autoua") then
send("UA")
timer:set("gcool", 3)
timer:set("unyielding_avalanche", 30)
cecho("\n<cyan>*unyielding_avalanche*")
return
end
-- Skullcrusher
if not timer:get("skullcrusher") and charData:get("autosc") then
send("SK")
timer:set("gcool", 3)
timer:set("skullcrusher", 30)
cecho("\n<cyan>*skullcrusher*")
return
end
-- Cleave
if not timer:get("cleave") and charData:get("autosv") then
send("CV")
timer:set("gcool", 3)
timer:set("cleave", 14)
cecho("\n<cyan>*cleave*")
return
end
-- Storm of Destruction
if not timer:get("storm_of_destruction") and charData:get("autosod") and not Bashed() then
send("SOD")
timer:set("gcool", 3)
timer:set("storm_of_destruction", 7*61)
cecho("\n<cyan>*storm_of_destruction*")
return
end
end -- End two Handed
end
Re: Mods to Nyss Script
room and name level
{48931, "patron"}, 10
{48711, "ranger"}, 11
{48711, "druid"}, 11
{48747, "guard"}, 13
{48747, "warrior"}, 13
{48743, "guard"}, 13
{48743, "warrior"}, 13
{48650, "commoner"}, 17
{48740, "commoner"}, 17
{48724, "commoner"}, 17
{48481, "commoner"}, 17
{48927, "commoner"}, 17
{48615, "commoner"}, 17
{48907, "commoner"}, 17
{48762, "commoner"}, 17
{48725, "commoner"}, 17
{48809, "commoner"}, 17
{48783, "commoner"}, 17
{48485, "commoner"}, 19
{48730, "commoner"}, 19
{48718, "commoner"}, 19
{48713, "commoner"}, 19
{48480, "commoner"}, 19
{48929, "commoner"}, 19
{48920, "commoner"}, 19
{48909, "commoner"}, 19
{48759, "commoner"}, 19
{48770, "commoner"}, 19
{48798, "commoner"}, 19
{48772, "commoner"}, 19
{48917, "halfling"}, 20
{48766, "guide"}, 21
{48766, "patron"}, 21
{48575, "commoner"}, 25
{48840, "commoner"}, 25
{48575, "commoner"}, 25
{48840, "commoner"}, 25
{48663, "commoner"}, 27
{48697, "commoner"}, 27
{48663, "commoner"}, 27
{48558, "commoner"}, 27
{48834, "commoner"}, 27
{48812, "commoner"}, 27
{48811, "commoner"}, 27
{48737, "commoner"}, 27
{48729, "commoner"}, 27
{48483, "commoner"}, 27
{48916, "commoner"}, 27
{48912, "commoner"}, 27
{48726, "commoner"}, 27
{48808, "commoner"}, 27
{48786, "commoner"}, 27
{48773, "commoner"}, 27
{48663, "commoner"}, 27
{48558, "commoner"}, 27
{48834, "commoner"}, 27
{48812, "commoner"}, 27
{48811, "commoner"}, 27
{48658, "cleric"}, 32
{48665, "commoner"}, 33
{48739, "commoner"}, 33
{48484, "commoner"}, 33
{48629, "commoner"}, 33
{48736, "commoner"}, 35
{48717, "commoner"}, 35
{48704, "commoner"}, 35
{48617, "commoner"}, 35
{48611, "commoner"}, 35
{48785, "commoner"}, 35
{48479, "soldier"}, 36
{48644, "commoner"}, 38
{48666, "commoner"}, 39
{48699, "commoner"}, 39
{48732, "commoner"}, 39
{48722, "commoner"}, 39
{48919, "commoner"}, 39
{48614, "commoner"}, 39
{48605 "commoner"}, 39
{48758, "commoner"}, 39
{48799, "commoner"}, 39
{48761, "macbeck"}, 56
Re: Mods to Nyss Script
this works in room:
[Silverymoon, Gem of the North ] [ 48829 SMTrapper ] [ 0] The Stagstand Tavern
The Stagstand Tavern
This tavern is popular with hunters, its dark wooden walls are
adorned with deer antlers. Bright banners hang from the ceiling, each
lit by their own lantern. One has a silver arrow with green fletching,
another a green oak leaf, and a third a bestial claws with long talons.
A fire burns in the stone hearth throwing dancing shadows about the
room while men sit and drink. The center of the floor has been kept
clear of tables and is often used by people for dancing. A short
counter on the far side of the room houses the barkeep.
Exits: - South
trigger:
A tired hunter gives you a hunter's trap.
You don't detect anything strange on a hunter's trap.
A tired hunter places a hunter's trap on the ground in front of you
Code: Select all
tempTimer(15,[[send("detecttrap trap")]])
trigger:
You detect a trap on a hunter's trap!
You try to disarm a trap on a hunter's trap, but nothing seems to happen..
You cannot concentrate enough at the moment...rest a bit.
Code: Select all
tempTimer(25, [[send("disarmtrap trap")]])
trigger:
You trigger a trap on a hunter's trap!
You disarm a trap on a hunter's trap!
Code: Select all
send("drop trap")
send("give 25 c hunter")
Who is online
Users browsing this forum: No registered users and 11 guests