Documentation: Difference between revisions

From Dyrdex.com
Jump to navigation Jump to search
(Replaced content with "This has all changed significantly. I'm now building a new version and will have documentation and a download coming soon. maybe. -mike")
Tag: Replaced
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Connection Management=
This has all changed significantly. I'm now building a new version and will have documentation and a download coming soon. maybe.
Included in main.tin are the following useful aliases:


{| class="wikitable"
-mike
!Command
!syntax
!notes
|-
|go|| go character (or nickname, or group) || Connect. Prints full character list if no argument is given.
|-
|addchar||addchar character password nickname || nickname is optional
|-
|addnick||addnick character nickname ||add/modify character nickname
|-
|delchar||delchar character||removes connection config. (character file remains in place on system).
|-
|show||show character||prints useful OFFLINE info about the player at last quit. Doesn't print active data (yet).
|-
|addgroup||addgroup groupName member1 member2-7||Must add all group members at once, now. Use full names.
|-
|delgroup||delgroup groupName||deletes a group
|-
|remgroup||remgroup groupName member1||removes member1 from groupName. Use full member name.
|-
|pquit||pquit||Quits a character and flags them 'Prepped'. Will display in 'go' eventually (not yet).
|-
|teston/off||teston or testoff||Reads tt3/test_script.tin into testing class, or kills that class off.
|-
|rtest||rtest||does testoff;teston    useful for quick reloading of test file during development
|}
|}
 
=Session Control=
 
{| class="wikitable"
!Command
!notes
|-
|charname <command>||sends commands to that character
|-
|nickname <command>||sends commands to that character
|-
|all <command>||sends command to all your sessions
|-
|ses||print all active session names (useful to confirm nobody is running in the background)
|-
|}
 
 
=Modules=
You can edit tt3/modules.conf to add/remove modules. Module scripts live in tt3/modules/
 
The most important are the Menu options and inventory counts.
 
{| class="wikitable"
!Command
!notes
|-
|init||attempts to set up some of the character menu options.
|-
|menu||prints the character menu, the primary character config system
|-
|finddir place||searchs speedwalks for the alias to speedwalk to place
|-
|setinv||attempts to set your inventory containers and quantities. If it fails, set these first:
|-
|potcon my.YOURCON ||sets the location of heals. Alias 'heal' works.
|-
|itemcon my.YOURCON||sets the location of recalls. Use menu to see how to set recall option to find/recite scroll.
|-
|restock||DS chars only, run in donation room, see menu to set levels, have container vars set.
|}
 
 
=Game Automation=
Most universal game related stuff I put in tt3/modules/game.tin
 
All these commands will repeat until they succeed:
search
dig
scan
style STYLE
flee
 
{| class="wikitable"
!Command
!notes
|-
|trackon Guy||tracks and moves toward Guy until you get there.
|-
|save||runs automatically ever 500 seconds so you never void
|-
|qtank ||quaffs tankset
|-
|goneut||uses pillow until neutral
|-
|heal||q heal $pot_con
|-
|blue||q mana $pot_con
|-
|app||eat apple $item_con
|}
 
=Optional world flagging system=
*You can flag a character with any of 6 flag names to read stuff at login: '''bot, class, org, run, group, or prompt'''.
**Class and Org are auto-setup.
 
Syntax: flag character flagName value
The value can be any word you want provided a corresponding file exists at tt3/flagName/any_word.tin
Example: 'flag dyrdex run seth' would flag my character to autoload tt3/runs/seth.tin at login.
 
{| class="wikitable"
!Command
!syntax
!notes
|-
|flags||flags character|| If you're connected, run without argument to see current data.
|-
|flag||flag character flagType value|| flagType can be: prompt, class, org, run, group
|-
|unflag||unflag character flagType||removes flag
|}
 
In addition to the 'flag' alias for setting flags, these are shortcuts to call 'flag' from your current session.
 
That is, these would set 'your' active connected session without needing the whole 'flag charname type value' syntax.
 
These can be set to ANY word you want as the argument, as long as tt3/TYPE/any_word.tin exists:
 
Class Flag: cset arg 
Org Flag:  org  arg 
Prompt:    pset arg 
Run Flag:  run  arg 
Botting:    bot  arg* 
 
For 'bot' there are the special arguments 'on' and 'off' to toggle botting.
1. Set bot type with bot TYPE        (can be any THING provided tt3/bots/THING exists (note: no .tin on file)
2. Set bot tatus with bot on/off
 
Once set, those are saved and will be applied at login.
 
 
 
 
Other aliase that are in main.tin:
 
gather_data - auto-gathers Class and Org flags from 'score'.
load - scans for those flags and reads those files in if found
reload - writes out current world data, then does load again
password - updates local tt3 stored pword when you reset in-game.
 
=Modules=
==The Main Menu==
Alias: menu
Displays config options for your char.
 
All of the options for each settings are also shown, so for example:
  Recalls: scroll            recalls <spell|scroll|rune|stone>
 
===Item Config===
These establish which options you'll use for recalls, springs, dispels, fly.
 
Provided you set ANY of the values, you'll have these aliases:
recall    recalls you
spring    creates a spring
dispel    dispels magic
gofly    uses fly object
===Player Config===
Shows current connection flags. Use bot, run, org, cset, pset, to configure.
===Fight Config===
Sets up autofighting.
 
For spell hits use: hitis {c 'spell name'}  with brackets like that.
 
Manaheal is for anybody whose hit uses mana, to re-mana over time.
 
Apples is for a 'Big Hit' trigger that eats 3 apples upon 1000hp damage change in 1 round.
 
===Restock Config===
Only works with DS chars atm.  Go into donations, type restock.
 
 
== Speedwalk ==
 
There's a ton of places already aliased for speedwalking, and a way to search for those too.
 
All my speedwalk aliases are like goHERE
Alias: finddir bla 
Searchs dirs list for 'bla' to find the the shorthand code for the place you wanna go:
 
finddir tree
#NOP Tree of Life =  tol
#ALIAS {gotol} {#50 w;#5 s;#3 w};
 
You then know the shorthand for Tree of Life is 'tol' and can do 'gotol'
 
I do not have Darkhaven gate unlocking built in yet, so you may run into the closed gate and get all fucked up.
 
== Gameplay Automation ==
Contained in /tinrod/main.tin
 
This section contains a ton of misc stuff to auto-do-stuff in the game.
 
* Auto-style/search/dig/fly/track/re-quaff-drops, etc.
If you do any of those, you will auto-retry literally forever.
Anti-Idle (auto-save every 500 seconds)
Anti-Spam (auto-enters a generic command anytime you receive the warning for same command 20 times.)
 
Aliases......Results:
supcor      stand, supplicate corpse, get all cor, wear all, (get/wear several times actually)
trackon %0  track mob named %0 and automatically continue to track/move/track/move
stoptrack    stop tracking
heal        quaff 1 heal
heal4        quaff 4 heals
heale        quaff 8 heals
blue        quaff a ds orchid mana potion
blueup      quaff orchids until mana is full
qtank        quaff a tankset
drotank      drop a tankset
shockstick  use shockshield stick
cameo        use iceshield cameo
firestick    use fireshield staff
goneut      use a pillow to get align back within +/- 80 of 0. (Must have a pillow in your Item Container)
Also various 'target setting' aliases, but this is pretty much taken care of automatically now by the mob tracking system.
But, in case you just wanna manually set your target variable, check out this section of main.tin for options, there's a lot.
Also Dh potion buying, if you have a potion buyer, just park him at dh shop and put a small birch chest on him, give him 1m.
 
 
== Inventory Tracking ==
Have at least 2 heals in your potion con, and 2 recalls in your item con, and run 'setinv'.
 
If its the first time you're setting inventory, run setinv TWICE.
 
potcon my.FOO
 
itemcon my.FOO
 
clearinv
 
setinv
 
===Supported Items===
You must be using a Supported Container for setinv to auto-detect containers, I only track certain Potions/Items.
 
Supported Containers:
Dragonslayer container
Gnomish crafted metal potion container
a pouch of purple cloth
Kahl's Green Dragonhide Pouch
a laundry basket
a hardened metal case
an extradimensional portal
a small birch chest
an old decaying basket
 
Supported Potions/Items:
Dragonslayer heals
Dragonslayer manas
Dragonslayer recall scrolls
a glowing violet potion
a tribal rune
a recall scroll
a create spring potion
a true sight potion
a sanctuary potion
a cure blindness potion
 
 
 
==Autofight==
===Usage===
 
Enabled via the fighton/fightoff aliases, current status shown in 'menu'
 
Uses a 'minimum health' variable, under which you will heal up. Above which you will hit.
 
Without going into 'how it works' let's just get to 'how to use'
Run these aliases to control on/off/pause/resume
fighton / fightoff  -- enable/disable autofighting.
pause              -- to totally pause this system
resume              -- to restart
 
You should know about these:
tset                -- target set (Used to re-scan msdp mob name variable, if target ever gets 'off')
mobkey KEYWORD      -- If you have to the target keyword it will prompt you to enter this
potclear            -- to restart in the case of false-positive 'No Spring' enforced pause.
trueon/trueoff      -- to enforce truesight re-quaff or not.
*Actually, trueon/trueoff is outside the fight script, and will keep going after the fight, so turn it off manually.
 
The script watches hp, mana, stomach fullness, sanctuary, blindness, blood points, and if all that's good - you hit.
 
 
=== Hit Support ===
 
The whole thing works based on your hit message triggering the recursion. So, ALLLL hit messages have to trigger that.
 
So far I have a lot, but not all setup. See the bottom of the tinrod/scripts/autofighting.tin file, it should be obvious what I mean.
 
If your autofight isn't working, or it only seems to fire 'once' make sure your hit message is setup in that file like all the others.
 
=== Target Support ===
 
*The script always hits a specific target.
*This data is pulled from the mob tracking system, and you MAY have to enter the mob keyword.
*See the Mob Tracking section below for more info on targetting
 
=== Disruptions ===
The system is NOT fully self sufficient. It's intended for leveling mostly, and even then, it's more of a fight-ASSIST than anything.
 
MANY things will pause or otherwise disrupt this system, it WILL very likely require your attention to manage and run.
 
The solution to nearly everything is 'resume' or 'potclear'.
 
'''Shutdowns'''
The fight system will shut itself down under certain conditions, to prevent crashing tintin itself.
 
* If values are impossible to attain:
Case 1: you set a minhealth of 1000. However, you remove a piece of eq that was too damaged, and now, max HP is 999.
The scripting would heal infinitely, so instead, it shuts itself down. fightoff.
 
Case 2: If, due to some mis-configuration of variables:
The fightcheck alias thinks that you should heal via the healup alias
The healup alias thinks that you're healed, and should re-run fightcheck.
That's a loop. fightoff (or tintin crash).
 
In nearly all cases, the solution is to check your mininmum values, namely minhealth in 'menu' and make sure it's attainable.
 
'''Pauses'''
The system automatically pauses itself when:
 
*No mob keyword found, manual entry required.
Run 'mobkey KEYWORD' to enter the key data and initiate the fight.
 
*No spring can be created.
If, after 8 potions, you attempt drink and no spring is found, you will attempt to create one.
If you cannot create one, a warning is echo'd and autofight is PAUSED.
This has killed me many times and I should not do that probably, because for now I do....
potclear    to clear that variable and resume autofight.
 
*Blind (or inevitably blind)
Blindness is granted priority, the hit/heal check pauses while we try to resolve blind.
If blindness is cured, truesight is automatically found, quaffed, and 'trueon' enabled.
 
*If stomach is actually 'too full'
System pause, and all attention is given to trying to obtain a spring/drink asap.
If someone/something creates a spring you AUTOMATICALLY drink from it and resume autofight.
 
'''Stallouts'''
 
*MSDP Missing
Sometimes at the start of a fight, msdp data will be late and still report there is no mob name variable.
Autofight will not kick in.
You need to recheck the msdp vars by doing 'resume' or  'tset'
 
*Single Fire*
The whole thing loops based on sight of your hit message. If it's running ONCE, issuing one hit, and then stalling:
Make sure your hit message is in the bottom of /tinrod/scripts/autofight.tin or add it in if its not present.
fightoff/fighton afterwards to reload that config.
 
=== Debugging ===
 
Currently there are debugging echo's built into the check which say what its doing, with some numeric step numbers. This helps make it obvious at what point in the autofight.tin script problems are occurring.
 
== Mob Database ==
 
Everytime you fight anything, you can capture the mob data from msdp and set a mob keyword.
*Mob Full Name
*Mob keyword
*Mob Area
*Mob Level
 
These are kept in a huge list so that we can automatically see who we're fighting and what keyword we need to use to attack them automatically. It's also handy if you want to look for other mobs of a specific level for leveling purposes or something. I just recently added Area's and Levels, so not all mobs in my 'current' listing have that data (i'll have to refight/rescan them all over time)
 
 
'''Targetting'''
 
This really only comes into play with aggressive mobs, or when fighting a sucession of mobs.
 
When attacking a non-agg mob, the kill or hit attack itself sets the target variable at that time.
*For example: kil MOB (kil with 1 'L') actually sets the $target variable to MOB at that time, then sends 'kill $target' to the mud.
 
However, when an agg mob attacks you, we watch msdp data for the mob name, and then automatically check if we've fought it before.
*The mob db is queried to see if we can find the mob name and corresponding keyword.
*IF the mob is in the db already, the target is automatically set to its keyword from the db.
*IF the mob is NOT in the db already, you are prompted to enter it with the 'mobkey' alias, see below.
 
'''alias: tset'''
 
(Target Set)
This is the alias to run the target setting actions, query the db, set the target variable.
*This run automatically (upon sight of the fprompt when FightAssist is enabled)
*Running this manually is sometimes necessary in lieu of the following bug:
 
* BUG: At times, msdp data is slow to arrive, and when we run this check the msdp mob name variable hasn't arrived yet.
If the system doesn't see the msdp mob name var, the whole FightAssist system won't engage.
So, run tset to re-scan for msdp mob name var and it should then see it, grab the target, and proceed.
 
 
'''alias: mobkey KEYWORD'''    (i.e. mobkey demon)
 
If a new mob is detected which is not already in the mob db, you will be prompted to enter its keyword:
<pre>
Now Fighting: an octopus
Cannot Locate Mob Data: Capturing...
* * * * * Enter Mob Key: mobkey KEYWORD * * * * *
</pre>
 
You would then do 'mobkey octo' to enter the key, once entered, the FightAssist system engages and takes control of the fight.
*IMPORTANT: Autofight will NOT proceed until you enter the mob's keyword with this alias.
 
Note: upon entering the mobkey, autofighting IS automatically restarted and you WILL hit the target.
NOTE: DO NOT TYPE MOBKEY BEFORRREEE YOU (or your group) are ready to start the fight: Cuz you WILL $hit $target and start it. 
 
'''alias: mobstat'''
 
Display the entire mob database: mob full name, mob level, mob keyword.
Note: I would like to start saving lots of other mob data well, seems like it could be useful for future purposes.
      I now track level as well.
 
'''alias: findmob TERM'''
 
This is a general search function to query the mob database.
*Can query by any term in the mob's full name, or by numeric level.
*Case insensitive. Partial matching accepted.
 
Examples:
findmob hound
                      the denizen hound: Level 39  key hound
findmob Dragon
                Talinka, the Red Dragon: Level 50  key tali 
                the Ancient Green Dragon: Level 32  key drag 
findmob 34
            Asema, the disturbed spirit: Level 34  key asem 
                                    Life: Level 34  key life 
              The first horseman, Famine: Level 34  key horse 
                              the amazon: Level 34  key ama
 
= Current Issues =
 
1. The default is no-write mode. New stuff you setup live isn't saved to your character file.
    TODO: character write-enable mode. for now, #class $character write tt3/characters/$character.tin
 
2. can only set bot status from inside game with 'bot foo' and 'bot on/off'.
    TODO: fix 'flag' alias to regex for bot key, and require type/status
 
3. cannot set flag to null, use unflag.
    TODO: build additional regex for 'off' (run off, prompt off, etc).
 
4. addgroup cannot append names to group, must set all at once.
  TODO: make this work with list indexes and append
 
5. TODO: showchar nickname support
 
=Backup & Restore=
'''BACKUP YOUR DATA:'''
I make a copy of a few of the folders fairly regularly:
cp -r tt3 tt3.bak
 
(Writing a cron job to do this every 2 days is a pretty good idea)
 
 
'''File Restoration'''
If you accidentally wipe out a config somehow (it happens), just copy the backup into place:
cp /tt3/characters.bak/dyrdex.tin /tt3/characters/
 
And reconnect or do 'reload'.
 
=Contact=
 
If anybody ever uses this, feel free to contact me at dyrdex@gmail.com about it.

Latest revision as of 19:06, 3 December 2020

This has all changed significantly. I'm now building a new version and will have documentation and a download coming soon. maybe.

-mike