|
shalimar GURU
Joined: 04 Aug 2002 Posts: 4691 Location: Pensacola, FL, USA
|
Posted: Mon Jan 25, 2010 2:10 pm
Database Newbie |
I have the hang of database variables but less so to the fully functioal databases.
If i could get a crash course that would be great.
I am wanting to create an item list that would store details about each item i find such as: wear it is worn, weight, zone(s) found in, NPC's found on, item type (with the possibility of fields dependent on the type), where worn, item limit, weight capacity, damage type, protection level(s) offered.
What is the best field type for storing stringlists in a database? Command for adding items to said field?
What is the best way to link databases together? Should i bother with this level of complexity, or should i just have one list? I expect i will end up with hundreds if not thousands of items.
I expect I will not have information for all fields at once, perhaps not even all the fields. What is the best way to create new entries and/or add field data to preexisting entries instead of accidentally making duplicate entries?
That should be enough to get me started. Thank you in advance. |
|
_________________ Discord: Shalimarwildcat |
|
|
|
Arminas Wizard
Joined: 11 Jul 2002 Posts: 1265 Location: USA
|
Posted: Mon Jan 25, 2010 2:54 pm |
I do not have the time to explain this at the moment, perhaps later though.
There are at least two tools in the library for this.
First there is Vijilante's toolbox. He has a tool in there that puts string lists within database records.
Like almost all of us his comments/help-file leave something to be desired, but there have been posts were we discussed how it works in the beta forum.
Second, I have a tool named Hashset in the library. Again a little difficult to understand how and why it works but I do have examples in its help. |
|
_________________ Arminas, The Invisible horseman
Windows 7 Pro 32 bit
AMD 64 X2 2.51 Dual Core, 2 GB of Ram |
|
|
|
shalimar GURU
Joined: 04 Aug 2002 Posts: 4691 Location: Pensacola, FL, USA
|
Posted: Thu Jan 28, 2010 11:41 pm |
Okay... so i was playing around a bit, and this is the code i am using and it is working so far, though it does slow down the machine a bit at times. Maybe it could be optimized a bit?
Code: |
#LOCAL $rec $loc $mob
$ItemList=%replace( %replace( %replace( %replace( %replace( %params, ", ", "|"), " (left hand)"), " (right hand)"), " (left hand and right hand)"), " and a", "|a")
#DBLOAD it
#FORALL $itemlist {#IF %match( %dblist( Name), %i) {
$rec=%find( %i)
#DBGET $rec
$loc=&Location
$mob=&Mobs
#IF (%ismember( %zonename, $loc)) {#NOOP} {$loc=%sort( %concat( $loc, "|", %zonename))}
#IF (%ismember( @lookedAt, $mob)) {#NOOP} {$mob=%sort( %concat( $mob, "|", @lookedAt))}
#DBPUT $rec Location $loc Mobs $mob
} {
$rec=%eval( %numrec+1)it
#DBPUT $rec Name %i Location %zonename Mobs @lookedAt
}}
#DBSAVE |
|
|
_________________ Discord: Shalimarwildcat |
|
|
|
Arminas Wizard
Joined: 11 Jul 2002 Posts: 1265 Location: USA
|
Posted: Fri Jan 29, 2010 2:11 am |
Well, here is a small tweak to start with.
Code: |
#LOCAL $rec $loc $mob
$dif=0
$ItemList=%replace( %replace( %replace( %replace( %replace( %params, ", ", "|"), " (left hand)"), " (right hand)"), " (left hand and right hand)"), " and a", "|a")
#DBLOAD it
#FORALL $itemlist {#IF %match( %dblist( Name), %i) {
$rec=%find( %i)
#DBGET $rec
$loc=&Location
$mob=&Mobs
#IF (%ismember( %zonename, $loc)==0) {$dif=1;$loc=%sort( %concat( $loc, "|", %zonename))}
#IF (%ismember( @lookedAt, $mob)==0) {$dif=1;$mob=%sort( %concat( $mob, "|", @lookedAt))}
#IF ($dif==1) {#DBPUT $rec Location $loc Mobs $mob}
} {
$rec=%eval( %numrec+1)it
#DBPUT $rec Name %i Location %zonename Mobs @lookedAt
}}
#DBSAVE |
Please let me know if it does any better, or even works. |
|
_________________ Arminas, The Invisible horseman
Windows 7 Pro 32 bit
AMD 64 X2 2.51 Dual Core, 2 GB of Ram |
|
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|