The AI Engine
This forum is for discussion of how The Personality Forge's AI Engine works. This is the place for questions on what means what, how to script, and ideas and plans for the Engine.
Posts 5,248 - 5,259 of 7,766
Posts 5,248 - 5,259 of 7,766
psimagus
19 years ago
19 years ago
Anyone got any idea what's happening with 'god beast'? He seems to have no Creator - perhaps the bots have started breeding?
I have found the page where his BotMaster should be, but strangely isn't...
http://www.personalityforge.com/botland/Userviewer.php?UserID=24475
I have found the page where his BotMaster should be, but strangely isn't...
MickMcA
19 years ago
19 years ago
I'm running into a slew of this sort of problem:
do you (verb) [0,0] {?PF rem "(key1) (postkey)" as only "tmpwd"; ?)
If the KP is "What do you want to do now?" I would expect this to load "want to do now" into tmpwd. It doesn't, according to both transcripts and debugger. Last debug run, it loaded tmpwd with "uncurl to do." I understood from Book 3 that if I specify (verb) it becomes (key1) or whatever its order is. This does not appear to be true.
I've hit the same problem with
I have (artadjnoun) [0,0] {?PF rem "(key1) (key2) (key3)" as tmpwd; ?}
The tmpwd is not created on the KP "I have a green stone." I suppose the whole thing is (key1), so the code fails because there are no other key#s? I tried
I have (art|) (adj|) (noun|) [0,0] {?PF rem "(key1) (key2) (key3)" as tmpwd; ?}
and it still won't load. Yes, I realize that the construction has a problem if there is no article, etc., BTW. I'm testing it with "I have a green stone."
I'm also finding that I can't test for (postkey) as in
{?PF if (postkey) exists; ?}
which makes catching a phrase that might or might not have one very problematic. For example, "What do you want?" and "What do you want to do?"
This has me stumped. Any ideas would be welcome.
M
do you (verb) [0,0] {?PF rem "(key1) (postkey)" as only "tmpwd"; ?)
If the KP is "What do you want to do now?" I would expect this to load "want to do now" into tmpwd. It doesn't, according to both transcripts and debugger. Last debug run, it loaded tmpwd with "uncurl to do." I understood from Book 3 that if I specify (verb) it becomes (key1) or whatever its order is. This does not appear to be true.
I've hit the same problem with
I have (artadjnoun) [0,0] {?PF rem "(key1) (key2) (key3)" as tmpwd; ?}
The tmpwd is not created on the KP "I have a green stone." I suppose the whole thing is (key1), so the code fails because there are no other key#s? I tried
I have (art|) (adj|) (noun|) [0,0] {?PF rem "(key1) (key2) (key3)" as tmpwd; ?}
and it still won't load. Yes, I realize that the construction has a problem if there is no article, etc., BTW. I'm testing it with "I have a green stone."
I'm also finding that I can't test for (postkey) as in
{?PF if (postkey) exists; ?}
which makes catching a phrase that might or might not have one very problematic. For example, "What do you want?" and "What do you want to do?"
This has me stumped. Any ideas would be welcome.
M
MickMcA
19 years ago
19 years ago
I tried one more possibility. I re-read the Book and decided that (artadjnoun) is ONE key, called (key1). Ok, so I tried that.
I have (artadjnoun) [0,0]
Does NOT match "I have a yellow pen." "I have a pen in my pocket," or "I have a red dog running in my back yard." What is this all about?
M
I have (artadjnoun) [0,0]
Does NOT match "I have a yellow pen." "I have a pen in my pocket," or "I have a red dog running in my back yard." What is this all about?
M
MickMcA
19 years ago
19 years ago
Ok, I found the problem with (artadjnoun). It seems that (adjartnoun) (which is an impossible sequence as a syntactic unit) not a concatenation, it's a keyword. So (artadjnoun) is meaningless, and (adjartnoun) works. That doesn't explain the (verb) problem or the other questions I raised. But one down.
little monster 1
19 years ago
19 years ago
its very odd yes regarding godbeast,he should have reached cold status now but hasn't...
MickMcA
19 years ago
19 years ago
The "too many gotos in a row" error does not seem to be related to how many gotos my LC has. I've been testing it, and in terms of the number of gotos I present the engine with, the results are "random."
MickMcA
19 years ago
19 years ago
I wish there were a place to both post and find information about how things work. I have no idea if what I turn up is of any use to anyone besides myself.
For example, I'm pretty sure it is not possible to put a conditional on a Seek or Keyphrase. For example:
call me [50,0] {?PF if (mem-nickname) is "Obnox"; emo: -1; ?}
There is nothing logically wrong with using a conditional here, but I get chided for badly formed AI Script if I put a condition after a KP or a Seek.
Second: A construction like this:
(18th C|19th C|20th C|) classical music [40,0] {?PF rem "(key1) classical music" as "youlike"; ?}
will not work as you might expect. In fact, there is a good chance that the AI Script will be silently discarded, and good luck finding out.
The problem is that there is a chance that (key1) will be a null, and apparently one can't reference nulls. So it appears that the intention here requires two KPs:
(18th C|19th C|20th C) classical music [40,0] {?PF rem "(key1) classical music" as "youlike"; ?}
classical music [0,0] {?PF rem "(key1) classical music" as "youlike"; ?}
Of course, with a specific and a general KP, precedence becomes crucial, so lots of Rank twiddling.
For example, I'm pretty sure it is not possible to put a conditional on a Seek or Keyphrase. For example:
call me [50,0] {?PF if (mem-nickname) is "Obnox"; emo: -1; ?}
There is nothing logically wrong with using a conditional here, but I get chided for badly formed AI Script if I put a condition after a KP or a Seek.
Second: A construction like this:
(18th C|19th C|20th C|) classical music [40,0] {?PF rem "(key1) classical music" as "youlike"; ?}
will not work as you might expect. In fact, there is a good chance that the AI Script will be silently discarded, and good luck finding out.
The problem is that there is a chance that (key1) will be a null, and apparently one can't reference nulls. So it appears that the intention here requires two KPs:
(18th C|19th C|20th C) classical music [40,0] {?PF rem "(key1) classical music" as "youlike"; ?}
classical music [0,0] {?PF rem "(key1) classical music" as "youlike"; ?}
Of course, with a specific and a general KP, precedence becomes crucial, so lots of Rank twiddling.
Bev
19 years ago
19 years ago
MicKMcA, you are in the right place. I have conditionals on seeks, and I've tested them and they worked for me. On the other hand, sometimes Gabi drops seeks and I don't know why. Maybe it has to do with the way I did the conditionals.
MickMcA
19 years ago
19 years ago
I think the problem is trying to use the conditional for something other than a contraint on the match. In other words, I think I can put
+ yes {?PF (mem-nickname) is "obnox"; ?}
but what it does is fail if the person is not "obnox." What I want it (my previous example) to do is decrement the Emotion IF the person is "obnox" and just match otherwise. But if the person is not "obnox", the match fails. At least I think that's what happens.
M
+ yes {?PF (mem-nickname) is "obnox"; ?}
but what it does is fail if the person is not "obnox." What I want it (my previous example) to do is decrement the Emotion IF the person is "obnox" and just match otherwise. But if the person is not "obnox", the match fails. At least I think that's what happens.
M
MickMcA
19 years ago
19 years ago
It might seem that the solution is
+ yes {?PF if (mem-nickname) is "obnox"; emo: -1; ?}
+ yes {?PF if (mem-name) is not "obnox"; ?}
That definitely does not work. And besides, I want to use all the same responses and you can't have a match "fall through" to the next match. And if you don't specify "is not 'obnox'," then the second sequence will fire randomly for "obnox", defeating the purpose.
M
+ yes {?PF if (mem-nickname) is "obnox"; emo: -1; ?}
+ yes {?PF if (mem-name) is not "obnox"; ?}
That definitely does not work. And besides, I want to use all the same responses and you can't have a match "fall through" to the next match. And if you don't specify "is not 'obnox'," then the second sequence will fire randomly for "obnox", defeating the purpose.
M
Bev
19 years ago
19 years ago
If I'm following you, your default nickname is "none" (or something like that) and you make some chatters "obnox"?
When I try that I make one response after the seek where (mem-nickname) is "none" and one response to the seek without any script as well as the response I wanted for "obnox". Don't know that I'm right, but sometimes it works.
When I try that I make one response after the seek where (mem-nickname) is "none" and one response to the seek without any script as well as the response I wanted for "obnox". Don't know that I'm right, but sometimes it works.
» More new posts: Doghead's Cosmic Bar