Frictional Games Forum (read-only)

Full Version: Script fatal error?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
Hey everyone,
I'm making a custom story, and I get this error:
FATAL ERROR:
Could not load script file 'custom_stories/*secret*/maps/map1.hps'!
main (10,11) : ERR : Expected identifier
main (11,1) : ERR : Unexpected token '{'

My map1.hps


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, -1);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
}
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
{
}
void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

Could you explain what am I doing wrong? I'm just a beginner at both HTML and the level editor, so if anybody could fix the code and explain, it would mean a lot to me as I would learn.

P.S. Sorry for my terrible English!
Hello! There is one error in your script file:

Spoiler below!

AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
{
}




-You cannot use a function as a header; it has to be something like: void func(callback syntax)
-All callbacks should be placed under OnStart (very few exceptions) regardless of when they're used in the map.

Here's a fix, simply delete your current .hps file's content then copy & paste this in:

Spoiler below!


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

(10-13-2012, 06:22 PM)andyrockin123 Wrote: [ -> ]Hello! There is one error in your script file:

Spoiler below!

AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
{
}




-You cannot use a function as a header; it has to be something like: void func(callback syntax)
-All callbacks should be placed under OnStart (very few exceptions) regardless of when they're used in the map.

Here's a fix, simply delete your current .hps file's content then copy & paste this in:

Spoiler below!


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

Yes, this made my game turn on, thanks! Though the door doesn't open when I enter the script area. None of the names have mistakes. Any help?

Whoops, silly me, I'm doing it wrong! Thanks for the help!

Ok, I don't get this at all, I simply added a new line:


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
SetSwingDoorLocked("mansion_2");
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

And now it gives me a "No matching signatures" error!
No matching signatures means you don't have the proper amount/type of arguments in the function:

SetSwingDoorLocked(string& asName, bool abLocked, bool abEffects);

SetSwingDoorLocked("mansion_2", true, true);
(10-13-2012, 06:31 PM)Rapsis Wrote: [ -> ]
(10-13-2012, 06:22 PM)andyrockin123 Wrote: [ -> ]Hello! There is one error in your script file:

Spoiler below!

AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
{
}




-You cannot use a function as a header; it has to be something like: void func(callback syntax)
-All callbacks should be placed under OnStart (very few exceptions) regardless of when they're used in the map.

Here's a fix, simply delete your current .hps file's content then copy & paste this in:

Spoiler below!


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

Yes, this made my game turn on, thanks! Though the door doesn't open when I enter the script area. None of the names have mistakes. Any help?

Whoops, silly me, I'm doing it wrong! Thanks for the help!

Ok, I don't get this at all, I simply added a new line:


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
SetSwingDoorLocked("mansion_2");
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

And now it gives me a "No matching signatures" error!
Code:
void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
SetSwingDoorLocked("mansion_2", false, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

This should solve the problem. The structure of SetSwingDoorLocked is:
void SetSwingDoorLocked(string& asName, bool abLocked, bool abEffects);
(10-13-2012, 06:48 PM)The chaser Wrote: [ -> ]
(10-13-2012, 06:31 PM)Rapsis Wrote: [ -> ]
(10-13-2012, 06:22 PM)andyrockin123 Wrote: [ -> ]Hello! There is one error in your script file:

Spoiler below!

AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
{
}




-You cannot use a function as a header; it has to be something like: void func(callback syntax)
-All callbacks should be placed under OnStart (very few exceptions) regardless of when they're used in the map.

Here's a fix, simply delete your current .hps file's content then copy & paste this in:

Spoiler below!


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

Yes, this made my game turn on, thanks! Though the door doesn't open when I enter the script area. None of the names have mistakes. Any help?

Whoops, silly me, I'm doing it wrong! Thanks for the help!

Ok, I don't get this at all, I simply added a new line:


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
SetSwingDoorLocked("mansion_2");
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

And now it gives me a "No matching signatures" error!
Code:
void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
SetSwingDoorLocked("mansion_2", false, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

This should solve the problem. The structure of SetSwingDoorLocked is:
void SetSwingDoorLocked(string& asName, bool abLocked, bool abEffects);
It worked when you did it, though when I did it 10 minutes ago, it didn't! Dafuq?
Strange things happen. And remember: If there is a map.cache file, delete it. That may solve your problem.
(10-13-2012, 06:52 PM)Rapsis Wrote: [ -> ]
(10-13-2012, 06:48 PM)The chaser Wrote: [ -> ]
(10-13-2012, 06:31 PM)Rapsis Wrote: [ -> ]
(10-13-2012, 06:22 PM)andyrockin123 Wrote: [ -> ]Hello! There is one error in your script file:

Spoiler below!

AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
{
}




-You cannot use a function as a header; it has to be something like: void func(callback syntax)
-All callbacks should be placed under OnStart (very few exceptions) regardless of when they're used in the map.

Here's a fix, simply delete your current .hps file's content then copy & paste this in:

Spoiler below!


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

Yes, this made my game turn on, thanks! Though the door doesn't open when I enter the script area. None of the names have mistakes. Any help?

Whoops, silly me, I'm doing it wrong! Thanks for the help!

Ok, I don't get this at all, I simply added a new line:


void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
SetSwingDoorLocked("mansion_2");
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

And now it gives me a "No matching signatures" error!
Code:
void OnStart()
{
AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);
AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);
}

void CollideRoomTwo(string &in asParent, string &in asChild, int alState)
{
SetSwingDoorClosed("mansion_2", true, true);
SetSwingDoorLocked("mansion_2", false, true);
}

void UsedKeyOnDoor(string &in asItem, string &in asEntity)
{
SetSwingDoorLocked("mansion_1", false, true);
PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);
RemoveItem("bedroomkey_1");
}

void OnLeave()
{

}

This should solve the problem. The structure of SetSwingDoorLocked is:
void SetSwingDoorLocked(string& asName, bool abLocked, bool abEffects);
It worked when you did it, though when I did it 10 minutes ago, it didn't! Dafuq?
...The door doesn't get locked. Why can't anything work right? D;

...Fixed it by changing "False to "True"
Thanks everyone!!!!!
Hey people, I didn't change anything, the script is still how andyrockin told me, but it started crashing AGAIN, for no reason:

main (8,16) : ERR : expected data type

What the actuall f*** is wrong with this engine? Is it haunted or something?
No, it's you Wink the engine does whatever it has to do. All the fails (or almost all) are human. So, let's see:

You have this:

Code:
void OnStart()

{

AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 0);

AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);

}



void CollideRoomTwo(string &in asParent, string &in asChild, int alState)

{

SetSwingDoorClosed("mansion_2", true, true);

}



void UsedKeyOnDoor(string &in asItem, string &in asEntity)

{

SetSwingDoorLocked("mansion_1", false, true);

PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);

RemoveItem("bedroomkey_1");

}



void OnLeave()

{



}


The error is here:

Code:
void OnStart()

{

AddEntityCollideCallback("Player", "Studydooropen", "CollideRoomTwo", true, 1);

AddUseItemCallback("", "bedroomkey_1", "mansion_1", "UsedKeyOnDoor", true);

}



void CollideRoomTwo(string &in asParent, string &in asChild, int alState)

{

SetSwingDoorClosed("mansion_2", true, true);

}



void UsedKeyOnDoor(string &in asItem, string &in asEntity)

{

SetSwingDoorLocked("mansion_1", false, true);

PlaySoundAtEntity("", "unlock_door", "mansion_1", 0, false);

RemoveItem("bedroomkey_1");

}



void OnLeave()

{



}

The AddEntityCollideCallback always end with a 1 or a -1. When you put 0, the engine turns mad. That was the issue.
Pages: 1 2