Identify Items into a ZMud DB
Identify Items into a ZMud DB
Heres a question....
Anyone ever try and get ZMud so you could identify an item and have it input directly into your EQ database?
Anyone ever try and get ZMud so you could identify an item and have it input directly into your EQ database?
The man who brought you a working spelltracker it on this, and I should have a solution within the week...
P.S.
Anyone who has logs of ANY itentified items, PLEASE change the numbers on the stats and post them here, so I can see what it looks like... ID scrolls are 'spensive!
-Gerad
"No I dont use zmud! I _OWN_ zmud!"
[This message has been edited by Gerad (edited 05-14-2001).]
P.S.
Anyone who has logs of ANY itentified items, PLEASE change the numbers on the stats and post them here, so I can see what it looks like... ID scrolls are 'spensive!
-Gerad
"No I dont use zmud! I _OWN_ zmud!"
[This message has been edited by Gerad (edited 05-14-2001).]
-
- Sojourner
- Posts: 676
- Joined: Fri Jan 26, 2001 6:01 am
- Location: O' Fallon, MO. USA
- Contact:
See this similar topic and you'll see that the database side is not all that easy. It's easy to get the text into a .txt file, but the ident on items varies a lot. This is where you really need an offline program to do the parsing for you, C/C++ works great for it.
http://www.sojourn3.org/ubb/Forum4/HTML/000020.html
http://www.sojourn3.org/ubb/Forum4/HTML/000020.html
Okay, I have this mostly working but I need some items and info to put the finishing touches on all the triggers. I need sample items (not REAL stats please!!) that have ANY of the following:
sv_BRE
sv_PAR
sv_ROD
!druid if exists
!ranger if exists
!enchanter if exists
!Illusionist if exists
!elf (and any other race-specific item)
!sell (?)
cursed
Any constant spell (haste, etc.)
Any level-specific items
Any "Item type" other than held or Armor
+/- agi
+/- pow
+/- cha
any PROC item
Any item with a specialty (!dual or some such)
Item with both AC Apply and ARMOR stat
For those who want to play with what I have, it's posted below. You'll need 6.16 and you'll need to know how to create database fields. Read the triggers to see what fields need to be created. Here are a few specific ones:
Bless, Magic - both Boolean
Anti-Align - Options List (Evil, Neutral, Good)
AntiClass - Options List (Warrior, Mage, Cleric, Thief, Ranger, Paladin, Druid, AntiPal)
Con, SV_Spell, SV_Para, Move, Int, Dex, HP, Wis, Armor, AC, Damage, Value, Weight, Dam, Level -- All Numbers
Alias to use to Identify items:
#ALIAS ID {#var dbItem {};#var dbItemType {};#T+ Identify;recite identify %1}
VARiables required:
#VAR dbItem {}
#VAR dbItemType {}
Triggers and Alias (Class: Identify) to parse the scroll output and create the item:
#ALIAS CreateItem {#IF (!%null( @dbItem)) {#NEW @dbItemType @dbItem}} "Identify"
#TRIGGER {Object '&dbItem.Name', Item type: &dbItemType} {} "Identify"
#TRIGGER {Weight: &dbItem.Weight, Value: &dbItem.Value} {} "Identify"
#TRIGGER {Affects : WIS by &dbItem.Wis} {} "Identify"
#TRIGGER {Affects : INT By &dbItem.Int} {} "Identify"
#TRIGGER {Affects : HITPOINTS By &dbItem.hp} {} "Identify"
#TRIGGER {AC-apply is &dbItem.ac} {} "Identify"
#TRIGGER {Affects : STR By &dbItem.str} {} "Identify"
#TRIGGER {Affects : ARMOR By &dbItem.armor} {} "Identify"
#TRIGGER {SV_PARA By &dbItem.SV_Para} {} "Identify"
#TRIGGER {Item is* LIT} {dbItem.lite = true} "Identify"
#TRIGGER {NO-THIEF} {#additem dbItem.AntiClass {Thief}} "Identify"
#TRIGGER {NO-MAGE} {#additem dbItem.AntiClass {Mage}} "Identify"
#TRIGGER {NO-WARRIOR} {#additem dbItem.AntiClass {Warrior}} "Identify"
#TRIGGER {NO-CLERIC} {#additem dbItem.AntiClass {Cleric}} "Identify"
#TRIGGER {ANTI-GOOD} {#additem dbItem.antiAlign {Anti-Good}} "Identify"
#TRIGGER {ANTI-NEUTRAL} {#additem dbItem.antiAlign {Anti-Good}} "Identify"
#TRIGGER {ANTI-EVIL} {#additem dbItem.antiAlign {Anti-Evil}} "Identify"
#TRIGGER {Affects : MOVE By &dbItem.Move} {} "Identify"
#TRIGGER {Affects : DEX By &dbItem.Dex} {} "Identify"
#TRIGGER {Affects : CON By &dbItem.con} {} "Identify"
#TRIGGER {Item is* MAGIC} {dbItem.magic = true} "Identify"
#TRIGGER {SV_SPELL By &dbItem.SV_Spell} {} "Identify"
#TRIGGER {$} {createitem;#T- Identify} "Identify"
Most basic items work fine. I've noticed that the first item you identify loses its name in the database -- I'm open to suggestions there.
Please post sample output of items that fail to work with these triggers. NO real stats please.
.xyd
sv_BRE
sv_PAR
sv_ROD
!druid if exists
!ranger if exists
!enchanter if exists
!Illusionist if exists
!elf (and any other race-specific item)
!sell (?)
cursed
Any constant spell (haste, etc.)
Any level-specific items
Any "Item type" other than held or Armor
+/- agi
+/- pow
+/- cha
any PROC item
Any item with a specialty (!dual or some such)
Item with both AC Apply and ARMOR stat
For those who want to play with what I have, it's posted below. You'll need 6.16 and you'll need to know how to create database fields. Read the triggers to see what fields need to be created. Here are a few specific ones:
Bless, Magic - both Boolean
Anti-Align - Options List (Evil, Neutral, Good)
AntiClass - Options List (Warrior, Mage, Cleric, Thief, Ranger, Paladin, Druid, AntiPal)
Con, SV_Spell, SV_Para, Move, Int, Dex, HP, Wis, Armor, AC, Damage, Value, Weight, Dam, Level -- All Numbers
Alias to use to Identify items:
#ALIAS ID {#var dbItem {};#var dbItemType {};#T+ Identify;recite identify %1}
VARiables required:
#VAR dbItem {}
#VAR dbItemType {}
Triggers and Alias (Class: Identify) to parse the scroll output and create the item:
#ALIAS CreateItem {#IF (!%null( @dbItem)) {#NEW @dbItemType @dbItem}} "Identify"
#TRIGGER {Object '&dbItem.Name', Item type: &dbItemType} {} "Identify"
#TRIGGER {Weight: &dbItem.Weight, Value: &dbItem.Value} {} "Identify"
#TRIGGER {Affects : WIS by &dbItem.Wis} {} "Identify"
#TRIGGER {Affects : INT By &dbItem.Int} {} "Identify"
#TRIGGER {Affects : HITPOINTS By &dbItem.hp} {} "Identify"
#TRIGGER {AC-apply is &dbItem.ac} {} "Identify"
#TRIGGER {Affects : STR By &dbItem.str} {} "Identify"
#TRIGGER {Affects : ARMOR By &dbItem.armor} {} "Identify"
#TRIGGER {SV_PARA By &dbItem.SV_Para} {} "Identify"
#TRIGGER {Item is* LIT} {dbItem.lite = true} "Identify"
#TRIGGER {NO-THIEF} {#additem dbItem.AntiClass {Thief}} "Identify"
#TRIGGER {NO-MAGE} {#additem dbItem.AntiClass {Mage}} "Identify"
#TRIGGER {NO-WARRIOR} {#additem dbItem.AntiClass {Warrior}} "Identify"
#TRIGGER {NO-CLERIC} {#additem dbItem.AntiClass {Cleric}} "Identify"
#TRIGGER {ANTI-GOOD} {#additem dbItem.antiAlign {Anti-Good}} "Identify"
#TRIGGER {ANTI-NEUTRAL} {#additem dbItem.antiAlign {Anti-Good}} "Identify"
#TRIGGER {ANTI-EVIL} {#additem dbItem.antiAlign {Anti-Evil}} "Identify"
#TRIGGER {Affects : MOVE By &dbItem.Move} {} "Identify"
#TRIGGER {Affects : DEX By &dbItem.Dex} {} "Identify"
#TRIGGER {Affects : CON By &dbItem.con} {} "Identify"
#TRIGGER {Item is* MAGIC} {dbItem.magic = true} "Identify"
#TRIGGER {SV_SPELL By &dbItem.SV_Spell} {} "Identify"
#TRIGGER {$} {createitem;#T- Identify} "Identify"
Most basic items work fine. I've noticed that the first item you identify loses its name in the database -- I'm open to suggestions there.
Please post sample output of items that fail to work with these triggers. NO real stats please.
.xyd
Ooh, yeah, never thought of them. Could create a trigger to abort.
In the case of nebula, I'll need two in my actual possession to fix.
*snicker*
I made some triggers to pull db info when you look in bags, do an INV, etc. but they don't always work and it's based on the way items are displayed (e.g. in INVentory) vs the item keywords that "recite scroll" gives you. So, a "wreath of entwined roses" comes up in the db as "rose wreath". That fubars things when you try to search based on the output of INV, for example.
I think we'll have to have manual entry of the complete description. Maybe a popup window that prompts for the desc before creating the item in the db.
.xyd
In the case of nebula, I'll need two in my actual possession to fix.
*snicker*
I made some triggers to pull db info when you look in bags, do an INV, etc. but they don't always work and it's based on the way items are displayed (e.g. in INVentory) vs the item keywords that "recite scroll" gives you. So, a "wreath of entwined roses" comes up in the db as "rose wreath". That fubars things when you try to search based on the output of INV, for example.
I think we'll have to have manual entry of the complete description. Maybe a popup window that prompts for the desc before creating the item in the db.
.xyd
Combat Proc: <some name here>
---------------------------------------------
Called Effects: (inkoked by 'say'ing them)
'word' effectname 1/Week
---------------------------------------------
Special Effects: <effect name here>
---------------------------------------------
Sex Allowed: All
---------------------------------------------
Item is: ANTI-NEUTRAL FLOAT NOSUMMON TRANSIENT NO-CLERIC NO-MAGE NOBITS
note: FLOAT, TRANSIENT and NOSUMMON flag, not sure if you have that
---------------------------------------------
Item is: ANTI-GOODRACE MAGIC NOBURN NO-WARRIOR NO-CLERIC NO-MAGE NOBITS
note: ANTI-GOODRACE flag and NOBURN flag
---------------------------------------------
Item type: FIRE WEAPON
note: this is supposed to be a ranged weapon i believe
---------------------------------------------
Called Effects: (inkoked by 'say'ing them)
'word' effectname 1/Week
---------------------------------------------
Special Effects: <effect name here>
---------------------------------------------
Sex Allowed: All
---------------------------------------------
Item is: ANTI-NEUTRAL FLOAT NOSUMMON TRANSIENT NO-CLERIC NO-MAGE NOBITS
note: FLOAT, TRANSIENT and NOSUMMON flag, not sure if you have that
---------------------------------------------
Item is: ANTI-GOODRACE MAGIC NOBURN NO-WARRIOR NO-CLERIC NO-MAGE NOBITS
note: ANTI-GOODRACE flag and NOBURN flag
---------------------------------------------
Item type: FIRE WEAPON
note: this is supposed to be a ranged weapon i believe
-
- Sojourner
- Posts: 31
- Joined: Fri Mar 16, 2001 6:01 am
- Location: Westminster, SC , USA
As far as the first item losing it's name on the DB there's nuthing ya can do about it. It's a glitch in the program. Also I have my script working. I haven't seen much that it won't work with. I'd be glad to e-mail it to ta XYD if ya wanna take a look.
[This message has been edited by Sekon/Fanil (edited 05-15-2001).]
[This message has been edited by Sekon/Fanil (edited 05-15-2001).]
Yeah, I'd love to see 'em. mscottsimon@hotmail.com
The lookup fails if you try to lookup things like "ring" and you have 3 rings in db, or if you lookup "longsword" but the keywords don't include "longsword".
.xyd
The lookup fails if you try to lookup things like "ring" and you have 3 rings in db, or if you lookup "longsword" but the keywords don't include "longsword".
.xyd
Hi Guys,
I can't wait to see this working. Let me know if there is any assistance I can put in.
I _do_ have some ideas to overcome some difficulties.
Problem 1) Item names/keywords.
_If_ you are able to assert that the keyword used for the identify recitation is a keyword that appears in the item's displayed name, AND you can assert that the item is in the inventory, then it is possible to "inv" and trigger from the keyword, getting the full name string (and ansi, possibly). It might require a trigger to detect the beginning of the inventory list (IE: "You are carrying:" or so).
I would be happy to script this, if you would like. Separate "name" and "keywords" fields could also be interesting.
Problem 2) Item descriptions.
Not too much to be done about this, given the variety of patterns that items can be named in. We could leave a field available, if people want to fill it manually, _or_ we could try to catch the description on a timing based method.
One idea: tog smartprompt to off, then do the "inv", for the trigger above. Immediately afterwords do a "look itemname". The trigger would look for:
inventory (can detect the start of this), followed by
PROMPT (IE "~<*$~<" with "display all" on, indicates the end of the inventory) and then
item description, then,
PROMPT (indicates end of item description)
Of course, that is susceptible to badly timed mud messages, so would have to be done in a quiet place (NOT wd :P).
I can give scripting that a shot as well, if you would like.
Another (potential) problem I can forsee is items that affect more than one stat. Aren't these stats listed differently for the first one than for the second one?
IE (on one item):
Affects: Strength by +15
Dexterity by -25
I'm not sure, but that might be worth confirming.
It might also be interesting to have a "total AC" field, or something, to sum the ac-apply and the "affects armor class" field.
Anyhow, all out of ideas. I welcome feedback, of course!
Regards,
Jorus/Arishae
I can't wait to see this working. Let me know if there is any assistance I can put in.
I _do_ have some ideas to overcome some difficulties.
Problem 1) Item names/keywords.
_If_ you are able to assert that the keyword used for the identify recitation is a keyword that appears in the item's displayed name, AND you can assert that the item is in the inventory, then it is possible to "inv" and trigger from the keyword, getting the full name string (and ansi, possibly). It might require a trigger to detect the beginning of the inventory list (IE: "You are carrying:" or so).
I would be happy to script this, if you would like. Separate "name" and "keywords" fields could also be interesting.
Problem 2) Item descriptions.
Not too much to be done about this, given the variety of patterns that items can be named in. We could leave a field available, if people want to fill it manually, _or_ we could try to catch the description on a timing based method.
One idea: tog smartprompt to off, then do the "inv", for the trigger above. Immediately afterwords do a "look itemname". The trigger would look for:
inventory (can detect the start of this), followed by
PROMPT (IE "~<*$~<" with "display all" on, indicates the end of the inventory) and then
item description, then,
PROMPT (indicates end of item description)
Of course, that is susceptible to badly timed mud messages, so would have to be done in a quiet place (NOT wd :P).
I can give scripting that a shot as well, if you would like.
Another (potential) problem I can forsee is items that affect more than one stat. Aren't these stats listed differently for the first one than for the second one?
IE (on one item):
Affects: Strength by +15
Dexterity by -25
I'm not sure, but that might be worth confirming.
It might also be interesting to have a "total AC" field, or something, to sum the ac-apply and the "affects armor class" field.
Anyhow, all out of ideas. I welcome feedback, of course!
Regards,
Jorus/Arishae
Okay, here is a trigger set to identify most of the output of the Identify scroll/spell. There are a few things that don't work (see end of this post) and if you'll send me some samples (mscottsimon@hotmail.com) I will make the necessary additions. Also, you'll need the database structure to use this so either create based on the triggers below or email me and I'll reply with .db struct file.
ALIAS to invoke:
#ALIAS ID {#var dbItem {};#var dbItemType {};#T+ Identify;recite identify %1}
(Simply enables "Identify" class, recites a scroll, and waits.)
The identify meat (snip this, save as text, and import into 6.16):
#ALIAS CreateItem {#IF (!%null( @dbItem)) { #NEW @dbItemType @dbItem};#T- identify} "Identify"
#TRIGGER {$} {createitem;#T- Identify} "Identify"
#TRIGGER {AC-apply is &dbItem.ac} {} "Identify"
#TRIGGER {Affects : AGI By &dbItem.agi} {} "Identify"
#TRIGGER {Affects : ARMOR By &dbItem.armor} {} "Identify"
#TRIGGER {Affects : CON By &dbItem.con} {} "Identify"
#TRIGGER {Affects : DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {Affects : DEX By &dbItem.Dex} {} "Identify"
#TRIGGER {Affects : HITPOINTS By &dbItem.hp} {} "Identify"
#TRIGGER {Affects : HITROLL By &dbitem.hit} {} "Identify"
#TRIGGER {Affects : INT By &dbItem.Int} {} "Identify"
#TRIGGER {Affects : MOVE By &dbItem.Move} {} "Identify"
#TRIGGER {Affects : STR By &dbItem.str} {} "Identify"
#TRIGGER {Affects : WIS by &dbItem.Wis} {} "Identify"
#TRIGGER {ANTI-Barbarian} {#additem dbItem.antiRace {Barbarian}} "Identify"
#TRIGGER {ANTI-DROWELF} {#additem dbItem.antiRace {Drowelf}} "Identify"
#TRIGGER {ANTI-Duergar} {#additem dbItem.antiRace {Duergar}} "Identify"
#TRIGGER {ANTI-DWARF} {#additem dbItem.antiRace {Dwarf}} "Identify"
#TRIGGER {ANTI-ELF} {#additem dbItem.antiRace {Elf}} "Identify"
#TRIGGER {ANTI-EVIL} {#additem dbItem.antiAlign {Evil}} "Identify"
#TRIGGER {ANTI-GNOME} {#additem dbItem.antiRace {Gnome}} "Identify"
#TRIGGER {ANTI-GOOD} {#additem dbItem.antiAlign {Good}} "Identify"
#TRIGGER {ANTI-GOODRACE } {#additem dbItem.antiRace {GoodRace}} "Identify"
#TRIGGER {ANTI-GREYELF} {#additem dbItem.antiRace {Greyelf}} "Identify"
#TRIGGER {ANTI-HALFLING} {#additem dbItem.antiRace {Halfling}} "Identify"
#TRIGGER {ANTI-HUMAN} {#additem dbItem.antiRace {Human}} "Identify"
#TRIGGER {ANTI-ILLITHID} {#additem dbItem.antiRace {Illithid}} "Identify"
#TRIGGER {ANTI-LICH} {#additem dbItem.antiRace {Lich}} "Identify"
#TRIGGER {ANTI-NEUTRAL} {#additem dbItem.antiAlign {Neutral}} "Identify"
#TRIGGER {ANTI-OGRE} {#additem dbItem.antiRace {Ogre}} "Identify"
#TRIGGER {ANTI-TROLL} {#additem dbItem.antiRace {Troll}} "Identify"
#TRIGGER {ANTI-YUANTI} {#additem dbItem.antiRace {Yuanti}} "Identify"
#TRIGGER {Damage Dice is '&dbItem.Damage'} {} "Identify"
#TRIGGER {Item is* BLESS} {dbItem.bless = true} "Identify"
#TRIGGER {Item is* FLOAT} {dbItem.float = true} "Identify"
#TRIGGER {Item is* LIT} {dbItem.lite = true} "Identify"
#TRIGGER {Item is* MAGIC} {dbItem.magic = true} "Identify"
#TRIGGER {Item is* NOBURN} {dbItem.NoBurn = true} "Identify"
#TRIGGER {NO-CLERIC} {#additem dbItem.AntiClass {Cleric}} "Identify"
#TRIGGER {NO-MAGE} {#additem dbItem.AntiClass {Mage}} "Identify"
#TRIGGER {NO-THIEF} {#additem dbItem.AntiClass {Thief}} "Identify"
#TRIGGER {NO-WARRIOR} {#additem dbItem.AntiClass {Warrior}} "Identify"
#TRIGGER {NOSUMMON} {dbItem.Nosummonn = true} "Identify"
#TRIGGER {Object '&dbItem.Name', Item type: &dbItemType} {} "Identify"
#TRIGGER {PR-FIRE} {dbItem.PROTFIRE = true} "Identify"
#TRIGGER {SV_BREATH By &dbItem.SV_BRE} {} "Identify"
#TRIGGER {SV_PARA By &dbItem.SV_Para} {} "Identify"
#TRIGGER {SV_PETRI By &dbItem.SV_Petri} {} "Identify"
#TRIGGER {SV_ROD By &dbItem.SV_Rod} {} "Identify"
#TRIGGER {SV_SPELL By &dbItem.SV_Spell} {} "Identify"
#TRIGGER {TRANSIENT} {dbItem.Transient = true} "Identify"
#TRIGGER {Weight: &dbItem.Weight, Value: &dbItem.Value} {} "Identify"
What doesn't work:
TREASURE & TRASH items don't always get their type set correctly. *shrug*
PROC weapons. (email sample pls)
Staff w/spell to invoke. (email sample pls)
SV_ROD & SV_PAR haven't been tested. (email sample pls)
Next up is an alias/trig set to output item info on inv/eq/etc. If anyone has a head start on that, I'd love to see it. :-)
.xyd
ALIAS to invoke:
#ALIAS ID {#var dbItem {};#var dbItemType {};#T+ Identify;recite identify %1}
(Simply enables "Identify" class, recites a scroll, and waits.)
The identify meat (snip this, save as text, and import into 6.16):
#ALIAS CreateItem {#IF (!%null( @dbItem)) { #NEW @dbItemType @dbItem};#T- identify} "Identify"
#TRIGGER {$} {createitem;#T- Identify} "Identify"
#TRIGGER {AC-apply is &dbItem.ac} {} "Identify"
#TRIGGER {Affects : AGI By &dbItem.agi} {} "Identify"
#TRIGGER {Affects : ARMOR By &dbItem.armor} {} "Identify"
#TRIGGER {Affects : CON By &dbItem.con} {} "Identify"
#TRIGGER {Affects : DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {Affects : DEX By &dbItem.Dex} {} "Identify"
#TRIGGER {Affects : HITPOINTS By &dbItem.hp} {} "Identify"
#TRIGGER {Affects : HITROLL By &dbitem.hit} {} "Identify"
#TRIGGER {Affects : INT By &dbItem.Int} {} "Identify"
#TRIGGER {Affects : MOVE By &dbItem.Move} {} "Identify"
#TRIGGER {Affects : STR By &dbItem.str} {} "Identify"
#TRIGGER {Affects : WIS by &dbItem.Wis} {} "Identify"
#TRIGGER {ANTI-Barbarian} {#additem dbItem.antiRace {Barbarian}} "Identify"
#TRIGGER {ANTI-DROWELF} {#additem dbItem.antiRace {Drowelf}} "Identify"
#TRIGGER {ANTI-Duergar} {#additem dbItem.antiRace {Duergar}} "Identify"
#TRIGGER {ANTI-DWARF} {#additem dbItem.antiRace {Dwarf}} "Identify"
#TRIGGER {ANTI-ELF} {#additem dbItem.antiRace {Elf}} "Identify"
#TRIGGER {ANTI-EVIL} {#additem dbItem.antiAlign {Evil}} "Identify"
#TRIGGER {ANTI-GNOME} {#additem dbItem.antiRace {Gnome}} "Identify"
#TRIGGER {ANTI-GOOD} {#additem dbItem.antiAlign {Good}} "Identify"
#TRIGGER {ANTI-GOODRACE } {#additem dbItem.antiRace {GoodRace}} "Identify"
#TRIGGER {ANTI-GREYELF} {#additem dbItem.antiRace {Greyelf}} "Identify"
#TRIGGER {ANTI-HALFLING} {#additem dbItem.antiRace {Halfling}} "Identify"
#TRIGGER {ANTI-HUMAN} {#additem dbItem.antiRace {Human}} "Identify"
#TRIGGER {ANTI-ILLITHID} {#additem dbItem.antiRace {Illithid}} "Identify"
#TRIGGER {ANTI-LICH} {#additem dbItem.antiRace {Lich}} "Identify"
#TRIGGER {ANTI-NEUTRAL} {#additem dbItem.antiAlign {Neutral}} "Identify"
#TRIGGER {ANTI-OGRE} {#additem dbItem.antiRace {Ogre}} "Identify"
#TRIGGER {ANTI-TROLL} {#additem dbItem.antiRace {Troll}} "Identify"
#TRIGGER {ANTI-YUANTI} {#additem dbItem.antiRace {Yuanti}} "Identify"
#TRIGGER {Damage Dice is '&dbItem.Damage'} {} "Identify"
#TRIGGER {Item is* BLESS} {dbItem.bless = true} "Identify"
#TRIGGER {Item is* FLOAT} {dbItem.float = true} "Identify"
#TRIGGER {Item is* LIT} {dbItem.lite = true} "Identify"
#TRIGGER {Item is* MAGIC} {dbItem.magic = true} "Identify"
#TRIGGER {Item is* NOBURN} {dbItem.NoBurn = true} "Identify"
#TRIGGER {NO-CLERIC} {#additem dbItem.AntiClass {Cleric}} "Identify"
#TRIGGER {NO-MAGE} {#additem dbItem.AntiClass {Mage}} "Identify"
#TRIGGER {NO-THIEF} {#additem dbItem.AntiClass {Thief}} "Identify"
#TRIGGER {NO-WARRIOR} {#additem dbItem.AntiClass {Warrior}} "Identify"
#TRIGGER {NOSUMMON} {dbItem.Nosummonn = true} "Identify"
#TRIGGER {Object '&dbItem.Name', Item type: &dbItemType} {} "Identify"
#TRIGGER {PR-FIRE} {dbItem.PROTFIRE = true} "Identify"
#TRIGGER {SV_BREATH By &dbItem.SV_BRE} {} "Identify"
#TRIGGER {SV_PARA By &dbItem.SV_Para} {} "Identify"
#TRIGGER {SV_PETRI By &dbItem.SV_Petri} {} "Identify"
#TRIGGER {SV_ROD By &dbItem.SV_Rod} {} "Identify"
#TRIGGER {SV_SPELL By &dbItem.SV_Spell} {} "Identify"
#TRIGGER {TRANSIENT} {dbItem.Transient = true} "Identify"
#TRIGGER {Weight: &dbItem.Weight, Value: &dbItem.Value} {} "Identify"
What doesn't work:
TREASURE & TRASH items don't always get their type set correctly. *shrug*
PROC weapons. (email sample pls)
Staff w/spell to invoke. (email sample pls)
SV_ROD & SV_PAR haven't been tested. (email sample pls)
Next up is an alias/trig set to output item info on inv/eq/etc. If anyone has a head start on that, I'd love to see it. :-)
.xyd
Hi Xyd,
I have put together a trigger set that appears to be able to load an item's long name (as seen in inventory) and it's description (from looking at it) into a pair of variables. These could be used to create additional database fields for use for displaying stat's on the fly. (note, the description is really just a little bell/whistle. The long name is the only important thing here, for displaying and searching :P)
It is VERY rough, and performs zero checking, so YMMV. Feel free to add any checks needed (EG: a check to detect if item wasn't in inventory, a check to detect if item wasn't looked at, etc).
There are a few conditions and constraints on this trigger.
1) there really should only be one item with the keyword used in the inventory.
2) there must be such an item in your inventory
3) probably best if there are no items with a matching keyword worn, otherwise the "look" may catch the wrong item.
etc.
The set is as follows:
#ALIAS idstub {tog smartprompt;inv;l %1;tog smartprompt;#var IDItem %1;#t+ ItemLongName;#var ItemDesc {}}
#TRIGGER {@IDItem} {#var IDItemLongName {%trigger};#t- ItemLongName;#t+ ItemDesc1} {ItemLongName} 519
#TRIGGER {$~< } {#t- ItemDesc2;#t- ItemDesc3;#delitem ItemDesc {%item(@ItemDesc,2)}} {ItemDesc3} 7
#TRIGGER {^~<> $(*)} {#t+ ItemDesc2;#t- ItemDesc1;#var ItemDesc {%1}} {ItemDesc1} 519
#TRIGGER {^(*)} {#additem ItemDesc {%1};#t+ itemdesc3} {ItemDesc2} 7
It works as is given a) my zmud settings and b) my mud settings. I can imagine it being fairly sensetive to changes to prompt/smart-prompt settings, so beware. *g*
Feel free to tweak away, or to just scrap the triggers and make use of the general algorithm etc.
Regards,
Jorus/Arishae
I have put together a trigger set that appears to be able to load an item's long name (as seen in inventory) and it's description (from looking at it) into a pair of variables. These could be used to create additional database fields for use for displaying stat's on the fly. (note, the description is really just a little bell/whistle. The long name is the only important thing here, for displaying and searching :P)
It is VERY rough, and performs zero checking, so YMMV. Feel free to add any checks needed (EG: a check to detect if item wasn't in inventory, a check to detect if item wasn't looked at, etc).
There are a few conditions and constraints on this trigger.
1) there really should only be one item with the keyword used in the inventory.
2) there must be such an item in your inventory
3) probably best if there are no items with a matching keyword worn, otherwise the "look" may catch the wrong item.
etc.
The set is as follows:
#ALIAS idstub {tog smartprompt;inv;l %1;tog smartprompt;#var IDItem %1;#t+ ItemLongName;#var ItemDesc {}}
#TRIGGER {@IDItem} {#var IDItemLongName {%trigger};#t- ItemLongName;#t+ ItemDesc1} {ItemLongName} 519
#TRIGGER {$~< } {#t- ItemDesc2;#t- ItemDesc3;#delitem ItemDesc {%item(@ItemDesc,2)}} {ItemDesc3} 7
#TRIGGER {^~<> $(*)} {#t+ ItemDesc2;#t- ItemDesc1;#var ItemDesc {%1}} {ItemDesc1} 519
#TRIGGER {^(*)} {#additem ItemDesc {%1};#t+ itemdesc3} {ItemDesc2} 7
It works as is given a) my zmud settings and b) my mud settings. I can imagine it being fairly sensetive to changes to prompt/smart-prompt settings, so beware. *g*
Feel free to tweak away, or to just scrap the triggers and make use of the general algorithm etc.
Regards,
Jorus/Arishae
I am curious if this work for item that affect more then 1 attribute since each line does not begin with AFFECTS.
Post from Jorus
"Another (potential) problem I can forsee is items that affect more than one stat. Aren't these stats listed differently for the first one than for the second one?
IE (on one item):
Affects: Strength by +15
Dexterity by -25"
Post from Jorus
"Another (potential) problem I can forsee is items that affect more than one stat. Aren't these stats listed differently for the first one than for the second one?
IE (on one item):
Affects: Strength by +15
Dexterity by -25"
I don't know on the "affects" part because I didn't have sample output on that type of item. If that's the case then it's an easy fix. Triggers such as:
#TRIGGER {Affects : DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {Affects : DEX By &dbItem.Dex} {} "Identify"
will become:
#TRIGGER {DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {DEX By &dbItem.Dex} {} "Identify"
Looking at it closer, the "affects" really doesn't help the case for the triggers.
For the ANTI-EVIL vs ANTI-EVILRACE, that's a tad trickier. Probably going to have to create some sort of case statement or something. You go Letat.
.xyd
#TRIGGER {Affects : DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {Affects : DEX By &dbItem.Dex} {} "Identify"
will become:
#TRIGGER {DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {DEX By &dbItem.Dex} {} "Identify"
Looking at it closer, the "affects" really doesn't help the case for the triggers.
For the ANTI-EVIL vs ANTI-EVILRACE, that's a tad trickier. Probably going to have to create some sort of case statement or something. You go Letat.
.xyd
#tr {ANTI-EVI({L|LRACE})} {#case %ismember(%1,G|GRACE) {#additem dbItem.antiAlign {Evil}} {#additem dbItem.antiRace {EvilRace}}} "Identify"
#tr {ANTI-GOO({D|DRACE})} {#case %ismember(%1,L|LRACE) {#additem dbItem.antiAlign {Good}} {#additem dbItem.antiRace {GoodRace}}} "Identify"
(Added the good-vs-goodrace one as that could also be an issue).
HTH,
Jorus/Arishae
#tr {ANTI-GOO({D|DRACE})} {#case %ismember(%1,L|LRACE) {#additem dbItem.antiAlign {Good}} {#additem dbItem.antiRace {GoodRace}}} "Identify"
(Added the good-vs-goodrace one as that could also be an issue).
HTH,
Jorus/Arishae
Stupid Bug! Those should be:
#tr {ANTI-EVI({L|LRACE})} {#case %ismember(%1,L|LRACE) {#additem dbItem.antiAlign {Evil}} {#additem dbItem.antiRace {EvilRace}}} "Identify"
#tr {ANTI-GOO({D|DRACE})} {#case %ismember(%1,D|DRACE) {#additem dbItem.antiAlign {Good}} {#additem dbItem.antiRace {GoodRace}}} "Identify
*mutter*
Jorus
#tr {ANTI-EVI({L|LRACE})} {#case %ismember(%1,L|LRACE) {#additem dbItem.antiAlign {Evil}} {#additem dbItem.antiRace {EvilRace}}} "Identify"
#tr {ANTI-GOO({D|DRACE})} {#case %ismember(%1,D|DRACE) {#additem dbItem.antiAlign {Good}} {#additem dbItem.antiRace {GoodRace}}} "Identify
*mutter*
Jorus
-
- Sojourner
- Posts: 16
- Joined: Wed May 09, 2001 5:01 am
- Location: Melbourne, Victoria, Australia
- Contact:
So is there a finished copy or do you copy the bits and pieces and update as in the posts???
Sorry still new to Zmud programming.. sure most of you are bored with my battle spams, but there all tests to see how these triggers work and such.
Shailar. Medic on Duty.
------------------
Medic Shailar Reporting
Sorry still new to Zmud programming.. sure most of you are bored with my battle spams, but there all tests to see how these triggers work and such.
Shailar. Medic on Duty.
------------------
Medic Shailar Reporting
I think this is the compilation,the only thing not included is the part abou8t long and short names, since it was warned it would be sensitive to individual client settings.
#ALIAS CreateItem {#IF (!%null( @dbItem)) { #NEW @dbItemType @dbItem};#T- identify} "Identify"
#TRIGGER {$} {createitem;#T- Identify} "Identify"
#TRIGGER {AC-apply is &dbItem.ac} {} "Identify"
#TRIGGER {AGI By &dbItem.agi} {} "Identify"
#TRIGGER {ARMOR By &dbItem.armor} {} "Identify"
#TRIGGER {CON By &dbItem.con} {} "Identify"
#TRIGGER {DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {DEX By &dbItem.Dex} {} "Identify"
#TRIGGER {HITPOINTS By &dbItem.hp} {} "Identify"
#TRIGGER {HITROLL By &dbitem.hit} {} "Identify"
#TRIGGER {INT By &dbItem.Int} {} "Identify"
#TRIGGER {MOVE By &dbItem.Move} {} "Identify"
#TRIGGER {STR By &dbItem.str} {} "Identify"
#TRIGGER {WIS by &dbItem.Wis} {} "Identify"
#TRIGGER {ANTI-Barbarian} {#additem dbItem.antiRace {Barbarian}} "Identify"
#TRIGGER {ANTI-DROWELF} {#additem dbItem.antiRace {Drowelf}} "Identify"
#TRIGGER {ANTI-Duergar} {#additem dbItem.antiRace {Duergar}} "Identify"
#TRIGGER {ANTI-DWARF} {#additem dbItem.antiRace {Dwarf}} "Identify"
#TRIGGER {ANTI-ELF} {#additem dbItem.antiRace {Elf}} "Identify"
#TRIGGER {ANTI-EVI({L|LRACE})} {#case %ismember(%1,L|LRACE) {#additem dbItem.antiAlign {Evil}} {#additem dbItem.antiRace {EvilRace}}} "Identify"
#TRIGGER {ANTI-GNOME} {#additem dbItem.antiRace {Gnome}} "Identify"
#TRIGGER {ANTI-GOO({D|DRACE})} {#case %ismember(%1,D|DRACE) {#additem dbItem.antiAlign {Good}} {#additem dbItem.antiRace {GoodRace}}} "Identify"
#TRIGGER {ANTI-GREYELF} {#additem dbItem.antiRace {Greyelf}} "Identify"
#TRIGGER {ANTI-HALFLING} {#additem dbItem.antiRace {Halfling}} "Identify"
#TRIGGER {ANTI-HUMAN} {#additem dbItem.antiRace {Human}} "Identify"
#TRIGGER {ANTI-ILLITHID} {#additem dbItem.antiRace {Illithid}} "Identify"
#TRIGGER {ANTI-LICH} {#additem dbItem.antiRace {Lich}} "Identify"
#TRIGGER {ANTI-NEUTRAL} {#additem dbItem.antiAlign {Neutral}} "Identify"
#TRIGGER {ANTI-OGRE} {#additem dbItem.antiRace {Ogre}} "Identify"
#TRIGGER {ANTI-TROLL} {#additem dbItem.antiRace {Troll}} "Identify"
#TRIGGER {ANTI-YUANTI} {#additem dbItem.antiRace {Yuanti}} "Identify"
#TRIGGER {Damage Dice is '&dbItem.Damage'} {} "Identify"
#TRIGGER {Item is* BLESS} {dbItem.bless = true} "Identify"
#TRIGGER {Item is* FLOAT} {dbItem.float = true} "Identify"
#TRIGGER {Item is* LIT} {dbItem.lite = true} "Identify"
#TRIGGER {Item is* MAGIC} {dbItem.magic = true} "Identify"
#TRIGGER {Item is* NOBURN} {dbItem.NoBurn = true} "Identify"
#TRIGGER {NO-CLERIC} {#additem dbItem.AntiClass {Cleric}} "Identify"
#TRIGGER {NO-MAGE} {#additem dbItem.AntiClass {Mage}} "Identify"
#TRIGGER {NO-THIEF} {#additem dbItem.AntiClass {Thief}} "Identify"
#TRIGGER {NO-WARRIOR} {#additem dbItem.AntiClass {Warrior}} "Identify"
#TRIGGER {NOSUMMON} {dbItem.Nosummonn = true} "Identify"
#TRIGGER {Object '&dbItem.Name', Item type: &dbItemType} {} "Identify"
#TRIGGER {PR-FIRE} {dbItem.PROTFIRE = true} "Identify"
#TRIGGER {SV_BREATH By &dbItem.SV_BRE} {} "Identify"
#TRIGGER {SV_PARA By &dbItem.SV_Para} {} "Identify"
#TRIGGER {SV_PETRI By &dbItem.SV_Petri} {} "Identify"
#TRIGGER {SV_ROD By &dbItem.SV_Rod} {} "Identify"
#TRIGGER {SV_SPELL By &dbItem.SV_Spell} {} "Identify"
#TRIGGER {TRANSIENT} {dbItem.Transient = true} "Identify"
#TRIGGER {Weight: &dbItem.Weight, Value: &dbItem.Value} {} "Identify"
#ALIAS CreateItem {#IF (!%null( @dbItem)) { #NEW @dbItemType @dbItem};#T- identify} "Identify"
#TRIGGER {$} {createitem;#T- Identify} "Identify"
#TRIGGER {AC-apply is &dbItem.ac} {} "Identify"
#TRIGGER {AGI By &dbItem.agi} {} "Identify"
#TRIGGER {ARMOR By &dbItem.armor} {} "Identify"
#TRIGGER {CON By &dbItem.con} {} "Identify"
#TRIGGER {DAMROLL By &dbitem.dam} {} "Identify"
#TRIGGER {DEX By &dbItem.Dex} {} "Identify"
#TRIGGER {HITPOINTS By &dbItem.hp} {} "Identify"
#TRIGGER {HITROLL By &dbitem.hit} {} "Identify"
#TRIGGER {INT By &dbItem.Int} {} "Identify"
#TRIGGER {MOVE By &dbItem.Move} {} "Identify"
#TRIGGER {STR By &dbItem.str} {} "Identify"
#TRIGGER {WIS by &dbItem.Wis} {} "Identify"
#TRIGGER {ANTI-Barbarian} {#additem dbItem.antiRace {Barbarian}} "Identify"
#TRIGGER {ANTI-DROWELF} {#additem dbItem.antiRace {Drowelf}} "Identify"
#TRIGGER {ANTI-Duergar} {#additem dbItem.antiRace {Duergar}} "Identify"
#TRIGGER {ANTI-DWARF} {#additem dbItem.antiRace {Dwarf}} "Identify"
#TRIGGER {ANTI-ELF} {#additem dbItem.antiRace {Elf}} "Identify"
#TRIGGER {ANTI-EVI({L|LRACE})} {#case %ismember(%1,L|LRACE) {#additem dbItem.antiAlign {Evil}} {#additem dbItem.antiRace {EvilRace}}} "Identify"
#TRIGGER {ANTI-GNOME} {#additem dbItem.antiRace {Gnome}} "Identify"
#TRIGGER {ANTI-GOO({D|DRACE})} {#case %ismember(%1,D|DRACE) {#additem dbItem.antiAlign {Good}} {#additem dbItem.antiRace {GoodRace}}} "Identify"
#TRIGGER {ANTI-GREYELF} {#additem dbItem.antiRace {Greyelf}} "Identify"
#TRIGGER {ANTI-HALFLING} {#additem dbItem.antiRace {Halfling}} "Identify"
#TRIGGER {ANTI-HUMAN} {#additem dbItem.antiRace {Human}} "Identify"
#TRIGGER {ANTI-ILLITHID} {#additem dbItem.antiRace {Illithid}} "Identify"
#TRIGGER {ANTI-LICH} {#additem dbItem.antiRace {Lich}} "Identify"
#TRIGGER {ANTI-NEUTRAL} {#additem dbItem.antiAlign {Neutral}} "Identify"
#TRIGGER {ANTI-OGRE} {#additem dbItem.antiRace {Ogre}} "Identify"
#TRIGGER {ANTI-TROLL} {#additem dbItem.antiRace {Troll}} "Identify"
#TRIGGER {ANTI-YUANTI} {#additem dbItem.antiRace {Yuanti}} "Identify"
#TRIGGER {Damage Dice is '&dbItem.Damage'} {} "Identify"
#TRIGGER {Item is* BLESS} {dbItem.bless = true} "Identify"
#TRIGGER {Item is* FLOAT} {dbItem.float = true} "Identify"
#TRIGGER {Item is* LIT} {dbItem.lite = true} "Identify"
#TRIGGER {Item is* MAGIC} {dbItem.magic = true} "Identify"
#TRIGGER {Item is* NOBURN} {dbItem.NoBurn = true} "Identify"
#TRIGGER {NO-CLERIC} {#additem dbItem.AntiClass {Cleric}} "Identify"
#TRIGGER {NO-MAGE} {#additem dbItem.AntiClass {Mage}} "Identify"
#TRIGGER {NO-THIEF} {#additem dbItem.AntiClass {Thief}} "Identify"
#TRIGGER {NO-WARRIOR} {#additem dbItem.AntiClass {Warrior}} "Identify"
#TRIGGER {NOSUMMON} {dbItem.Nosummonn = true} "Identify"
#TRIGGER {Object '&dbItem.Name', Item type: &dbItemType} {} "Identify"
#TRIGGER {PR-FIRE} {dbItem.PROTFIRE = true} "Identify"
#TRIGGER {SV_BREATH By &dbItem.SV_BRE} {} "Identify"
#TRIGGER {SV_PARA By &dbItem.SV_Para} {} "Identify"
#TRIGGER {SV_PETRI By &dbItem.SV_Petri} {} "Identify"
#TRIGGER {SV_ROD By &dbItem.SV_Rod} {} "Identify"
#TRIGGER {SV_SPELL By &dbItem.SV_Spell} {} "Identify"
#TRIGGER {TRANSIENT} {dbItem.Transient = true} "Identify"
#TRIGGER {Weight: &dbItem.Weight, Value: &dbItem.Value} {} "Identify"
Wow, this messege hasn't been touched for a while hehe.
Well I figured out the DataBase finally, But I seem to have a couple of problems. One is that the database doesn't register more then one of any of the options AntiRace/Anticlass/ect. Two, I can't seem to get the class to stay on long enough when I cast the spell. I use the alias given, but no matter what I do, it won't stay enabled long enough to collect all of the information. and finally 3, is there any way to make a field that will catch the location of the items worn? So far I have this, but it doesn't seem to want to work . It wicks it up in the variable, but not when transfered over to the Database:
#TRIGGER {Item can be worn on: (*)} {#ADDITEM dbItem.location {%1}}
I must be doing something wrong, please help =)
Thanks
Well I figured out the DataBase finally, But I seem to have a couple of problems. One is that the database doesn't register more then one of any of the options AntiRace/Anticlass/ect. Two, I can't seem to get the class to stay on long enough when I cast the spell. I use the alias given, but no matter what I do, it won't stay enabled long enough to collect all of the information. and finally 3, is there any way to make a field that will catch the location of the items worn? So far I have this, but it doesn't seem to want to work . It wicks it up in the variable, but not when transfered over to the Database:
#TRIGGER {Item can be worn on: (*)} {#ADDITEM dbItem.location {%1}}
I must be doing something wrong, please help =)
Thanks
Who is online
Users browsing this forum: No registered users and 23 guests