Register to post in forums, or Log in to your existing account
 

Play RetroMUD
Post new topic  Reply to topic     Home » Forums » CMUD General Discussion
draean
Newbie


Joined: 04 May 2009
Posts: 9

PostPosted: Wed Feb 13, 2013 9:30 pm   

Database spell list crash issue
 
Hi there!

I'm running Cmud 3.34, and am trying to write myself a handy little script. I'm trying to use a database, thinking that having a separate file storing a large part of the data will help prevent the program from eating my script from time to time, so I've been trying to figure that out, but I have a sortof strange crash going on.

I have a database with the following columns
name, in, out, duration

each contains the name of a spell, the line(or | delimited list of lines) that may be shown when the spell is cast, same for when the spell runs out, and then the duration, in seconds, that the spell lasts.

first I run this alias:
#DBLOAD affectslist.db
#dbfirst
affinlist=""
affin=""
affoutlist=""
affout=""
affnames=""
afflist=""
affdur=""
#WHILE (!%null(%rec)) {
affinlist=%additem(&in, @affinlist)
affoutlist=%additem(&out, @affoutlist)
affin=%addkey(affin, &in, &affectname)
affout=%addkey(affout, &out, &affectname)
affnames=%additem(&affectname, @affnames)
#DBNEXT
}

I have this trigger:
^({@affinlist})$

#say meep
#DBGET %find(%1,afintonames,in)
affectslist.&affectname....


Except, as soon as I type the & symbol on that last line, the program crashes. not when it's run even, just when I type the character. the view afintonames has column 1 be in, and column 2 be affectname.

I'm running window 7 64 bit.

I'm wondering if there's a way around this, or if anyone has any advice for the common crashes I've been experiencing other than, 'backup your scripts'

Thanks!
Reply with quote
shalimar
GURU


Joined: 04 Aug 2002
Posts: 4672
Location: Pensacola, FL, USA

PostPosted: Wed Feb 13, 2013 9:56 pm   
 
what are you using the & symbol for?

variables are referenced via the @varName
local variables use $varName

Have you tried using a dbVar?
_________________
Discord: Shalimarwildcat
Reply with quote
draean
Newbie


Joined: 04 May 2009
Posts: 9

PostPosted: Wed Feb 13, 2013 10:08 pm   
 
the help file shows this line as an example:

#DBFIRST;#WHILE (!%null(%rec)) {#SHOW &Name;#DBNEXT}

using & to reference the value in a field of the current db record
Reply with quote
Daern
Sorcerer


Joined: 15 Apr 2011
Posts: 809

PostPosted: Thu Feb 14, 2013 2:56 am   
 
What is your last line (affectslist.&affectname....) supposed to do exactly? It looks like you cut it short, which kinda makes it hard to figure that out...

I'm gonna guess affectslist is a db variable, and you're trying to get the item with the key &affectname, in which case you would do %db(@affectslist, &affectname). Of course, you don't have an affectname field in your database, so that could cause problems - should that be &name instead?
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Thu Feb 14, 2013 1:43 pm   
 
Code:
affectslist.&affectname....

has a big problem. You are trying to specify a variable at the beginning of a command line without a leading @. The only time you can do that is if you are setting a variable with the syntax
Code:
varname = value

But you have a period after affectslist, which means you are specifying an item or database key within the @affectslist variable. You can only use the varname=value syntax for the variable itself, not an item or database within the variable. So whatever you are trying to do here must be done a different way. If you explain what you are trying to do, we can help figure out the correct syntax.
Reply with quote
Rahab
Wizard


Joined: 22 Mar 2007
Posts: 2320

PostPosted: Thu Feb 14, 2013 1:48 pm   
 
That said, it is very odd that simply typing the character crashes the system. Are you saying that it actually crashes Cmud? While you are editing the trigger in the Package Editor? What exactly happens? Do you get an error message? Does Cmud freeze? Or does Cmud close unexpectedly?
Reply with quote
Daern
Sorcerer


Joined: 15 Apr 2011
Posts: 809

PostPosted: Thu Feb 14, 2013 5:51 pm   
 
I didn't test it, but I imagine it doesn't like the & character after the dot. I'm pretty sure when using the dot notation, it only uses literal keys, it doesn't expand anything. That's what %db is for - I suggested using it above.
Reply with quote
Display posts from previous:   
Post new topic   Reply to topic     Home » Forums » CMUD General Discussion All times are GMT
Page 1 of 1

 
Jump to:  
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

© 2009 Zugg Software. Hosted by Wolfpaw.net