DominusVita
Member
Posts: 96
Threads: 4
Joined: Apr 2011
Reputation:
0
|
Monster isn't quite activating.
Hey there. I'm trying to activate a grunt and it isn't quite happening. I checked the tutorials various times, and used the script provided. The monster is set to inactive, and the script looks like the following(The important sections are in bold):
////////////////////////////
// Run first time starting map
void OnStart()
{
AddEntityCollideCallback("Player", "FirstArea", "First", true, 1);
AddEntityCollideCallback("Player", "TeleStart", "FirstTele", true, 1);
AddEntityCollideCallback("Player", "Tele", "MonsterMash", true, 1);
AddEntityCollideCallback("Player", "WTF", "Second", true, 1);
}
void First(string &in asParent , string &in asChild , int alState)
{
SetMessage("TheBeginning", "Entry1", 20.0f);
}
void Second(string &in asParent , string &in asChild , int alState)
{
SetMessage("TheBeginning", "Entry2", 20.0f);
}
void MonsterMash(string &in asParent , string &in asChild , int alState)
{
SetEntityActive("BadMofo", true);
}
void FirstTele(string &in asParent, string &in asChild, int alState)
{
TeleportPlayer("Tele");
// Optional fading effects to make a better teleporting transition.
FadeOut(0);
FadeIn(20);
}
////////////////////////////
// Run when entering map
void OnEnter()
{
//Add the Lantern and 10 Tinderboxes when in Debug mode, always good to have light!
{
GiveItemFromFile("lantern", "lantern.ent");
for(int i=0;i<2;i++) GiveItemFromFile("tinderbox_"+i, "tinderbox.ent");
}
}
////////////////////////////
// Run when leaving map
void OnLeave()
{
}
|
|
04-21-2011, 04:31 PM |
|
Josh707
Junior Member
Posts: 27
Threads: 5
Joined: Apr 2011
Reputation:
0
|
RE: Monster isn't quite activating.
void MonsterMash(string &in asParent , string &in asChild , int alState)
{
SetEntityActive("BadMofo", true);
}
where it says string &in asParent, string &in asChild,
after you put asParent there is no space before the ,
i'm not sure if that's the problem because that's the only one I see... when I make them I don't put spaces
Try my custom story demo here!
Updated 23/04/11
(This post was last modified: 04-21-2011, 04:45 PM by Josh707.)
|
|
04-21-2011, 04:44 PM |
|
DominusVita
Member
Posts: 96
Threads: 4
Joined: Apr 2011
Reputation:
0
|
RE: Monster isn't quite activating.
My other syntax code seems to work fine with it - I tried changing it but no go
It's fine, I'll figure it out at one point or another. Thought I'd poll the more experienced before trying again.
(This post was last modified: 04-21-2011, 04:49 PM by DominusVita.)
|
|
04-21-2011, 04:48 PM |
|
MrBigzy
Senior Member
Posts: 616
Threads: 18
Joined: Mar 2011
Reputation:
8
|
RE: Monster isn't quite activating.
Is the scriptarea named Tele and is the monster named BadMofo?
|
|
04-21-2011, 05:15 PM |
|
Apjjm
Is easy to say
Posts: 496
Threads: 18
Joined: Apr 2011
Reputation:
52
|
RE: Monster isn't quite activating.
(04-21-2011, 04:48 PM)DominusVita Wrote: My other syntax code seems to work fine with it - I tried changing it but no go
It's fine, I'll figure it out at one point or another. Thought I'd poll the more experienced before trying again.
The trick is identifying exactly what the problem is. I suggest the following, so that you can trace the execution of your script:
////////////////////////////
// Run first time starting map
void OnStart()
{
AddDebugMessage("Started",false);
AddEntityCollideCallback("Player", "FirstArea", "First", true, 1);
AddEntityCollideCallback("Player", "TeleStart", "FirstTele", true, 1);
AddEntityCollideCallback("Player", "Tele", "MonsterMash", true, 1);
AddEntityCollideCallback("Player", "WTF", "Second", true, 1);
}
void First(string &in asParent , string &in asChild , int alState)
{
AddDebugMessage("First Called: " +asParent + "," + asChild,false);
SetMessage("TheBeginning", "Entry1", 20.0f);
}
void Second(string &in asParent , string &in asChild , int alState)
{
AddDebugMessage("Second Called: " +asParent + "," + asChild,false);
SetMessage("TheBeginning", "Entry2", 20.0f);
}
void MonsterMash(string &in asParent , string &in asChild , int alState)
{
AddDebugMessage("MonsterMash Called: " +asParent + "," + asChild,false);
SetEntityActive("BadMofo", true);
}
void FirstTele(string &in asParent, string &in asChild, int alState)
{
AddDebugMessage("FirstTele Called: " +asParent + "," + asChild,false);
TeleportPlayer("Tele");
// Optional fading effects to make a better teleporting transition.
FadeOut(0);
FadeIn(20);
}
////////////////////////////
// Run when entering map
void OnEnter()
{
//Add the Lantern and 10 Tinderboxes when in Debug mode, always good to have light!
{
GiveItemFromFile("lantern", "lantern.ent");
for(int i=0;i<2;i++) GiveItemFromFile("tinderbox_"+i, "tinderbox.ent");
}
}
////////////////////////////
// Run when leaving map
void OnLeave()
{
}
If it turns out "MonsterMash Called" never shows up, then you know you aren't triggering the script area*. If it does, you know the problem is in your SetEntitiyActive code. If you are still struggling to locate the error, print out more information. The more information you have, the easier it will be to find the problem.
*This could mean either your callback code is incorrect, or, teleporting into a script area doesn't fire a collision event - the latter you would have to work around.
(This post was last modified: 04-21-2011, 05:19 PM by Apjjm.)
|
|
04-21-2011, 05:18 PM |
|
DominusVita
Member
Posts: 96
Threads: 4
Joined: Apr 2011
Reputation:
0
|
RE: Monster isn't quite activating.
Thanks for the in-depth response, I'll try to find the error with that method.
|
|
04-21-2011, 05:22 PM |
|
palistov
Posting Freak
Posts: 1,208
Threads: 67
Joined: Mar 2011
Reputation:
57
|
RE: Monster isn't quite activating.
If it turns out teleporting to an area doesn't trigger a collide callback you could always use a very short timer (0.01) seconds to call a function immediately after teleporting the player. In the timer's callback do if(GetEntitiesCollide("Player", "Tele")) SetEntityActive("BadMofo", true);
Or just scratch the if statement and set the entity active 0.01 seconds later hehe
Another option would be to set the entity active in your teleport function as opposed to making a collide callback with the teleport target area. So just add SetEntityActive("BadMofo", true); under your FirstTele function.
(This post was last modified: 04-21-2011, 05:37 PM by palistov.)
|
|
04-21-2011, 05:36 PM |
|
DominusVita
Member
Posts: 96
Threads: 4
Joined: Apr 2011
Reputation:
0
|
RE: Monster isn't quite activating.
That did it, having it all triggered in that one function made it work. Thanks
|
|
04-21-2011, 05:46 PM |
|
|