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
boofrog
Newbie


Joined: 20 Dec 2016
Posts: 2

PostPosted: Tue Dec 20, 2016 10:50 pm   

Error in cMUD.exe (There must be at least one field.)
 
Yo!

So, last night I upgraded from CMUD 3.32 to CMUD PRO v3. A potential issue with this was that my friend purchased me the new copy. But I doubt it.

Anyhow, I downloaded the program, I foolishly changed the file extensions from default because my original CMUD packages were still on. Then I went to town coding. Everything ran fine until this morning.

The error started while I was polishing this turd I'd been working on for a bit. I use CMUD to learn coding when I'm not MUDing. So I guess this is a two part issue... anyways! Here's the issue with the code. I am trying to create a trigger which will ignore random length strings of words and only focus on specific words (that I intend to database). The purpose is to auto answer people who are asking for directions. Here's what I came up with.


#TRIGGER %1 ask '(*)(*)(*){nomad|nomads|nomad child}'} {IF (@CONDITION={nomad|nomads|nomad child})} {answer From Althainia Market Square: go 3west, 4north, 2east, 5north, all east.}

As you can see, it's not exactly pretty. So this morning I decided to continue playing around with removing random strings prior to and after the CONDITIONS. As I was doing this (basically messing with an exact copy of the above script but with minor changes for trial and error) I started getting error messages. Lots of them. So I deleted the string and they persisted. I then thought perhaps it had to do with file extensions. So I uninstalled and reinstalled. Now it's worse. Now I get the Error Message I posted as the subject.

I also tried to simply do a system restore. STILL DIDN'T FIX IT. Needless to say, I'ma sad panda.

If you have any suggestions on how to best create the code string I have above, please let me know. But more importantly, I don't want to lose my session package and start over from scratch. Damned thing is like 7mb.

I'm not sure how you want me to post the error report, so here goes:

date/time : 2016-12-20, 17:00:30, 658ms
computer name : blahblahblah
user name : Jake
operating system : Windows NT New x64 build 9200
system language : English
system up time : 2 hours 2 minutes
program up time : 14 seconds
processors : 4x AMD A6-5200 APU with Radeon(TM) HD Graphics
physical memory : 954/3548 MB (free/total)
free disk space : (C:) 270.87 GB
display mode : 1600x900, 32 bit
process id : $24bc
allocated memory : 62.31 MB
executable : cMUD.exe
exec. date/time : 2011-04-20 13:20
version : 3.34.0.0
compiled with : BCB 2006/07
madExcept version : 3.0k
callstack crc : $795fb622, $197e613f, $197e613f
data dir : C:\Users\Jake\Documents\My Games\CMUD\
contact name : jake
contact email :
exception number : 1
exception class : EMemTableError
exception message : There must be at least one field.

Main ($10b0):
0061c80a +0aa cMUD.exe kbmMemTable 10440 +13 TkbmCustomMemTable.InternalOpen
0060a56d +019 cMUD.exe DB TDataSet.DoInternalOpen
0060a626 +01e cMUD.exe DB TDataSet.OpenCursor
0060a4e1 +055 cMUD.exe DB TDataSet.SetActive
0061a43a +026 cMUD.exe kbmMemTable 8566 +3 TkbmCustomMemTable.SetActive
0060a2d9 +009 cMUD.exe DB TDataSet.Open
00e20944 +0ac cMUD.exe PkgDM 1549 +11 TPkg.UpdateConfig
00e20adc +030 cMUD.exe PkgDM 1584 +6 TPkg.UpdateDB
00e20e8c +084 cMUD.exe PkgDM 1629 +11 TPkg.LoadDB
00e2265d +1c5 cMUD.exe PkgDM 2092 +30 TPkg.Open
00dd4e54 +384 cMUD.exe PrefDat 3493 +64 PkgData.Load
00cceba1 +29d cMUD.exe PARENT 2658 +112 TParentForm.NewWindow
00cd3287 +3c3 cMUD.exe PARENT 4427 +48 TParentForm.NewMUD
00ccf122 +01a cMUD.exe PARENT 2946 +2 MUDWindow
00ccf1d1 +085 cMUD.exe PARENT 2963 +13 TParentForm.CharAction
00ccf286 +006 cMUD.exe PARENT 2993 +0 TParentForm.DoAction
004bc0b7 +2bb cMUD.exe Controls TControl.WndProc
004c00bb +4fb cMUD.exe Controls TWinControl.WndProc
004a261b +553 cMUD.exe Forms TCustomForm.WndProc
00c7b3cc +020 cMUD.exe DXSounds 2128 +9 TCustomDXSound.FormWndProc
00c798bc +00c cMUD.exe DXClass 635 +1 TControlSubClass.WndProc
004bf7e4 +02c cMUD.exe Controls TWinControl.MainWndProc
0047d448 +014 cMUD.exe Classes StdWndProc
74550123 +093 USER32.dll CallWindowProcA
006f96b7 +0a7 cMUD.exe aqDockingUtils 1728 +7 CallDefWndProc
006f97a5 +0dd cMUD.exe aqDockingUtils 1776 +41 TaqWindowEventFilter.WndProc
0047d448 +014 cMUD.exe Classes StdWndProc
7455bc0b +00b USER32.dll DispatchMessageA
004aa790 +0fc cMUD.exe Forms TApplication.ProcessMessage
004aa7ca +00a cMUD.exe Forms TApplication.HandleMessage
004aaabf +0b3 cMUD.exe Forms TApplication.Run
00e8cdec +088 cMUD.exe CMUD 371 +20 initialization
0046001e +022 cMUD.exe Variants DateToWStrViaOS
004dfaf1 +045 cMUD.exe Dialogs TFileDialogWrapper.OnSelectionChangeEvent
7738506e +02e ntdll.dll RtlCopyUnicodeString
77384852 +042 ntdll.dll LdrGetDllFullName
771362c2 +022 KERNEL32.DLL BaseThreadInitThunk

error details:
start up, package error?

[/list][/code]
Reply with quote
shalimar
GURU


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

PostPosted: Wed Dec 21, 2016 6:26 am   
 
Couple syntax issues I see in your #TRIGGER
1. no opening brace on the pattern.
2. using %1 (an as yet undefined variable) in the pattern instead of a wildcard
3. triple use of the everything wildcard '*', surely we can be a bit more precise in what we are expecting
4. basing things off a variable we don't seem to be ever changing the value of
5. capturing (substrings) of the pattern in parenthesis and not using them

This could certainly be cleaned up a good bit, but I would need to see sample strings of MUD output.
You may not need to use #CONDITIONs at all, state-based triggers can get tricky.

I would try opening your session offline and deleting the offending trigger for now and see if that fixes the error message at least.
_________________
Discord: Shalimarwildcat
Reply with quote
boofrog
Newbie


Joined: 20 Dec 2016
Posts: 2

PostPosted: Wed Dec 21, 2016 10:45 am   
 
I am unable to open the session offline even whilst holding shift. It freezes the client. It sends me that error message that I posted above. Probably time to give up and rewrite all that crap.

But as for the trigger. The output looks like this:

Krazeth asks 'Where does one find the nomad village?'
Thanatael asks 'How do I get to the gnomes?

Something like that. I was going to make it conditional so that I could keep from answering some questions based on keywords. For instance:

Boof ask 'What are the directions from Silversand Garrison to New Thalos?'

I wouldn't want it to answer in that case, because it'd fire off two answers. I'll be using databases for the future of it, all I was trying to figure out was the initial pattern. Specifically how to ignore a random length string. So for the last question I was hoping to have it ignore everything after the trigger fires from "Krazeth asks, '" and then have it answer based off the keywords I've established (or ignore).
Reply with quote
shalimar
GURU


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

PostPosted: Wed Dec 21, 2016 1:13 pm   
 
Something like this would work best if you have a predefined activation message:

#TR {(%w) asks, "How do I get to (*)?"} {
#LOCAL $path
$who=%1
$where=%2
#IF (!%ismember($where, @bannedPlaces)) {$path=%pathfrom(, $where)}
#IF ($path) {answer $who Just go $path to get there} {answer $who Sorry, I can't help you with that}
}

You would need to populate @bannedPlaces manually to keep from giving directions to specific rooms on your map.
It works off of %roomname, or any optional keyword you may have entered in the 'short name' field of the room properties window (room text tab).
_________________
Discord: Shalimarwildcat
Reply with quote
shalimar
GURU


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

PostPosted: Wed Dec 21, 2016 1:27 pm   
 
alternately:

#TR {(%w) asks, "How do I get to (*)?"} {
#SWITCH (%2)
("Gregg's house") {answer Head east and take the third right, look for the blue house}
("Carnegie Hall") {answer You can't get there from here}
("my house") {answer I don't know where you live}
{answer Never heard of that place}
}

This way is a bit more work to set up the various answers but can seem a lot more personable, and you don't have to have mapped out the game world to use it.
_________________
Discord: Shalimarwildcat
Reply with quote
Vijilante
SubAdmin


Joined: 18 Nov 2001
Posts: 5182

PostPosted: Wed Dec 21, 2016 5:04 pm   
 
I would suggest renaming your package files one at time to find which file is the problem. Once you have isolated the problem file you may want to retrieve data from it using something like Sqlite Browser. That can save you having to rewrite everything.
_________________
The only good questions are the ones we have never answered before.
Search the Forums
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