Your Computer
SCAN ME!
Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation:
235
RE: Script help needed
You're still working on this? Here's my working version of it. All four sticky areas have the same detach and attach functions. The local map variable names have the names of the sticky areas. Study, modify, etc...
const string [] oven_sticky_areas = { "OvenArea_1" , "OvenArea_2" , "OvenArea_3" , "OvenArea_4" }; const string oven_object_name = "oven_object" ; const string oven_door_name = "mansion_1" ; const string oven_lever_name = "lever_simple01_22" ; void OnStart () { SetEntityConnectionStateChangeCallback ( oven_lever_name , "CheckIngredients" ); } ////////////LEVER CHECK///////////////// void CheckIngredients ( string & in asEntity , int alState ) { if( alState == 1 ) { if ( GetLocalVarInt ( oven_sticky_areas [ 0 ]) == 1 && GetLocalVarInt ( oven_sticky_areas [ 1 ]) == 1 && GetLocalVarInt ( oven_sticky_areas [ 2 ]) == 1 && GetLocalVarInt ( oven_sticky_areas [ 3 ]) == 1 ) { AddDebugMessage ( "OvenPuzzle: Correct!" , false ); AddTimer ( "CompleteOvenPuzzle" , 1 , "CompleteOvenPuzzle" ); } else { AddDebugMessage ( "OvenPuzzle: Wrong!" , false ); SetMessage ( "Messages" , "IncorrectCombination" , 0 ); } } } void AttachObjectOven ( string & in asStickyArea , string & in asBodyName ) { if ( StringContains ( asBodyName , oven_object_name )) SetAllowStickyAreaAttachment ( true ); else { SetAllowStickyAreaAttachment ( false ); return; } AddDebugMessage ( asStickyArea + " " + asBodyName , true ); asBodyName = StringSub ( asBodyName , 0 , oven_object_name . length () + 2 ); AddDebugMessage ( asBodyName , false ); if ( StringContains ( asStickyArea , "1" ) && StringContains ( asBodyName , "1" )) SetLocalVarInt ( asStickyArea , 1 ); else if ( StringContains ( asStickyArea , "2" ) && StringContains ( asBodyName , "2" )) SetLocalVarInt ( asStickyArea , 1 ); else if ( StringContains ( asStickyArea , "3" ) && StringContains ( asBodyName , "3" )) SetLocalVarInt ( asStickyArea , 1 ); else if ( StringContains ( asStickyArea , "4" ) && StringContains ( asBodyName , "4" )) SetLocalVarInt ( asStickyArea , 1 ); } void DetachObjectOven ( string & in asStickyArea , string & in asBodyName ) { SetLocalVarInt ( asStickyArea , 0 ); } void CompleteOvenPuzzle ( string & in asTimer ) { SetSwingDoorLocked ( oven_door_name , false , true ); SetMessage ( "Messages" , "correctcombinationchemicals" , 0 ); }
(This post was last modified: 09-19-2012, 07:23 PM by Your Computer .)
09-19-2012, 06:30 PM
FlawlessHappiness
Posting Freak
Posts: 3,980
Threads: 145
Joined: Mar 2012
Reputation:
171
RE: Script help needed
Very nice script YC! I love it!
Trying is the first step to success.
09-19-2012, 06:38 PM
Steve
Member
Posts: 178
Threads: 17
Joined: Jun 2012
Reputation:
7
RE: Script help needed
(09-19-2012, 06:30 PM) Your Computer Wrote: You're still working on this? Here's my working version of it. All four sticky areas have the same detach and attach functions. The local map variable names have the names of the sticky areas. Study, modify, etc...
const string [] oven_sticky_areas = { "OvenArea_1" , "OvenArea_2" , "OvenArea_3" , "OvenArea_4" }; const string oven_object_name = "oven_object" ; const string oven_door_name = "mansion_1" ; const string oven_lever_name = "lever_simple01_22" ; void OnStart () { SetEntityConnectionStateChangeCallback ( oven_lever_name , "CheckIngredients" ); } ////////////LEVER CHECK///////////////// void CheckIngredients ( string & in asEntity , int alState ) { if( alState == 1 ) { if ( GetLocalVarInt ( oven_sticky_areas [ 0 ]) == 1 && GetLocalVarInt ( oven_sticky_areas [ 1 ]) == 1 && GetLocalVarInt ( oven_sticky_areas [ 2 ]) == 1 && GetLocalVarInt ( oven_sticky_areas [ 3 ]) == 1 ) { AddDebugMessage ( "OvenPuzzle: Correct!" , false ); AddTimer ( "CompleteOvenPuzzle" , 1 , "CompleteOvenPuzzle" ); } else { AddDebugMessage ( "OvenPuzzle: Wrong!" , false ); SetMessage ( "Messages" , "IncorrectCombination" , 0 ); } } } void AttachObjectOven ( string & in asStickyArea , string & in asBodyName ) { if ( StringContains ( asBodyName , oven_object_name )) SetAllowStickyAreaAttachment ( true ); else { SetAllowStickyAreaAttachment ( false ); return; } AddDebugMessage ( asStickyArea + " " + asBodyName , true ); asBodyName = StringSub ( asBodyName , 0 , oven_object_name . length () + 2 ); AddDebugMessage ( asBodyName , false ); if ( StringContains ( asStickyArea , "1" ) && StringContains ( asBodyName , "1" )) SetLocalVarInt ( asStickyArea , 1 ); else if ( StringContains ( asStickyArea , "2" ) && StringContains ( asBodyName , "2" )) SetLocalVarInt ( asStickyArea , 1 ); else if ( StringContains ( asStickyArea , "3" ) && StringContains ( asBodyName , "3" )) SetLocalVarInt ( asStickyArea , 1 ); else if ( StringContains ( asStickyArea , "4" ) && StringContains ( asBodyName , "4" )) SetLocalVarInt ( asStickyArea , 1 ); } void DetachObjectOven ( string & in asStickyArea , string & in asBodyName ) { SetLocalVarInt ( asStickyArea , 0 ); } void CompleteOvenPuzzle ( string & in asTimer ) { SetSwingDoorLocked ( oven_door_name , false , true ); SetMessage ( "Messages" , "correctcombinationchemicals" , 0 ); }
Nice script
thank you YC yes I still haven't made it completely yet I gave up for a short period and continued a bit with the level_editing. But i guessed I should complete this one first.
I only have one request though, could you give me some annotations of what i should fill in with what?
I have this at the moment and my object names are (object_1, object_2, object_3, object_4)
Spoiler below!
const string[] oven_sticky_areas = {"OvenArea_1", "OvenArea_2", "OvenArea_3", "OvenArea_4"};
const string oven_object_name = "object_";
const string oven_door_name = "extaction_oven_6";
const string oven_lever_name = "Lever_1";
void OnStart()
{
SetEntityConnectionStateChangeCallback(oven_lever_name, "CheckIngredients");
}
////////////LEVER CHECK/////////////////
void CheckIngredients(string &in asEntity, int alState)
{
if(alState == 1)
{
if (GetLocalVarInt(oven_sticky_areas[0]) == 1
&& GetLocalVarInt(oven_sticky_areas[1]) == 1
&& GetLocalVarInt(oven_sticky_areas[2]) == 1
&& GetLocalVarInt(oven_sticky_areas[3]) == 1)
{
AddDebugMessage("OvenPuzzle: Correct!", false);
AddTimer("CompleteOvenPuzzle", 1, "CompleteOvenPuzzle");
}
else
{
AddDebugMessage("OvenPuzzle: Wrong!", false);
SetMessage("Messages", "IncorrectCombination", 0);
}
}
}
void AttachObjectOven(string &in asStickyArea, string &in asBodyName)
{
if (StringContains(asBodyName, oven_object_name))
SetAllowStickyAreaAttachment(true);
else
{
SetAllowStickyAreaAttachment(false);
return;
}
AddDebugMessage(asStickyArea + " " + asBodyName, true);
asBodyName = StringSub(asBodyName, 0, oven_object_name.length() + 2);
AddDebugMessage(asBodyName, false);
if (StringContains(asStickyArea, "1") && StringContains(asBodyName, "1"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "2") && StringContains(asBodyName, "2"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "3") && StringContains(asBodyName, "3"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "4") && StringContains(asBodyName, "4"))
SetLocalVarInt(asStickyArea, 1);
}
void DetachObjectOven(string &in asStickyArea, string &in asBodyName)
{
SetLocalVarInt(asStickyArea, 0);
}
void CompleteOvenPuzzle(string &in asTimer)
{
SetSwingDoorLocked(oven_door_name, false, true);
SetMessage("Messages", "correctcombinationchemicals", 0);
}
As I have it now it doesn't seem to work though
CURRENTLY WORKING ON:
Final Light = 40%
Need of voice actors.
09-19-2012, 08:29 PM
Your Computer
SCAN ME!
Posts: 3,456
Threads: 32
Joined: Jul 2011
Reputation:
235
RE: Script help needed
oven_object_name shouldn't end with an underscore or any suffix. oven_object_name should be the name that all the objects have in common. In your case it would be simply "object", since you have object_1, object_2, object_3 and object_4.
(This post was last modified: 09-19-2012, 08:39 PM by Your Computer .)
09-19-2012, 08:38 PM
Steve
Member
Posts: 178
Threads: 17
Joined: Jun 2012
Reputation:
7
RE: Script help needed
so?
Spoiler below!
const string[] oven_sticky_areas = {"OvenArea_1", "OvenArea_2", "OvenArea_3", "OvenArea_4"};
const string oven_object_name = "object";
const string oven_door_name = "extaction_oven_6";
const string oven_lever_name = "Lever_1";
void OnStart()
{
SetEntityConnectionStateChangeCallback(oven_lever_name, "CheckIngredients");
}
////////////LEVER CHECK/////////////////
void CheckIngredients(string &in asEntity, int alState)
{
if(alState == 1)
{
if (GetLocalVarInt(oven_sticky_areas[0]) == 1
&& GetLocalVarInt(oven_sticky_areas[1]) == 1
&& GetLocalVarInt(oven_sticky_areas[2]) == 1
&& GetLocalVarInt(oven_sticky_areas[3]) == 1)
{
AddDebugMessage("OvenPuzzle: Correct!", false);
AddTimer("CompleteOvenPuzzle", 1, "CompleteOvenPuzzle");
}
else
{
AddDebugMessage("OvenPuzzle: Wrong!", false);
SetMessage("Messages", "IncorrectCombination", 0);
}
}
}
void AttachObjectOven(string &in asStickyArea, string &in asBodyName)
{
if (StringContains(asBodyName, oven_object_name))
SetAllowStickyAreaAttachment(true);
else
{
SetAllowStickyAreaAttachment(false);
return;
}
AddDebugMessage(asStickyArea + " " + asBodyName, true);
asBodyName = StringSub(asBodyName, 0, oven_object_name.length() + 2);
AddDebugMessage(asBodyName, false);
if (StringContains(asStickyArea, "1") && StringContains(asBodyName, "1"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "2") && StringContains(asBodyName, "2"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "3") && StringContains(asBodyName, "3"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "4") && StringContains(asBodyName, "4"))
SetLocalVarInt(asStickyArea, 1);
}
void DetachObjectOven(string &in asStickyArea, string &in asBodyName)
{
SetLocalVarInt(asStickyArea, 0);
}
void CompleteOvenPuzzle(string &in asTimer)
{
SetSwingDoorLocked(oven_door_name, false, true);
SetMessage("Messages", "correctcombinationchemicals", 0);
}
CURRENTLY WORKING ON:
Final Light = 40%
Need of voice actors.
09-19-2012, 08:51 PM
Steve
Member
Posts: 178
Threads: 17
Joined: Jun 2012
Reputation:
7
RE: Script help needed
Oka after some week I'm back and eager to end this I tried what you said YC but It doesn't seem to work. I have the script as the previous reply.
CURRENTLY WORKING ON:
Final Light = 40%
Need of voice actors.
10-04-2012, 03:46 PM
Steve
Member
Posts: 178
Threads: 17
Joined: Jun 2012
Reputation:
7
RE: Script help needed
bumbosaurus
CURRENTLY WORKING ON:
Final Light = 40%
Need of voice actors.
10-05-2012, 04:55 PM
Robby
Posting Freak
Posts: 2,549
Threads: 38
Joined: Jun 2009
Reputation:
47
RE: Script help needed
(10-05-2012, 04:55 PM) Steve Wrote: bumpity bump bump bumpWell, looking at your script, it's quite complicated. I mean I know scripting and all, but you're already using advanced functions I never really did.
I'd love to help, but my limited knowledge prevents me from that.
Infrequently active. Don't expect an immediate response. Best to contact me at a different locale. If I create a thread, expect me to be quite active.
10-05-2012, 05:48 PM
The chaser
Posting Freak
Posts: 2,486
Threads: 76
Joined: Jun 2012
Reputation:
113
RE: Script help needed
Whoa, I just can't read the script that way. Put it in code, remember. I'm practising with these, maybe I can solve your problem.
THE OTHERWORLD (WIP)
Aculy iz dolan.
10-05-2012, 08:33 PM
Steve
Member
Posts: 178
Threads: 17
Joined: Jun 2012
Reputation:
7
RE: Script help needed
(10-05-2012, 08:33 PM) The chaser Wrote: Whoa, I just can't read the script that way. Put it in code, remember. I'm practising with these, maybe I can solve your problem.you mean like this?
const string[] oven_sticky_areas = {"OvenArea_1", "OvenArea_2", "OvenArea_3", "OvenArea_4"};
const string oven_object_name = "object";
const string oven_door_name = "extaction_oven_6";
const string oven_lever_name = "Lever_1";
void OnStart()
{
SetEntityConnectionStateChangeCallback(oven_lever_name, "CheckIngredients");
}
////////////LEVER CHECK/////////////////
void CheckIngredients(string &in asEntity, int alState)
{
if(alState == 1)
{
if (GetLocalVarInt(oven_sticky_areas[0]) == 1
&& GetLocalVarInt(oven_sticky_areas[1]) == 1
&& GetLocalVarInt(oven_sticky_areas[2]) == 1
&& GetLocalVarInt(oven_sticky_areas[3]) == 1)
{
AddDebugMessage("OvenPuzzle: Correct!", false);
AddTimer("CompleteOvenPuzzle", 1, "CompleteOvenPuzzle");
}
else
{
AddDebugMessage("OvenPuzzle: Wrong!", false);
SetMessage("Messages", "IncorrectCombination", 0);
}
}
}
void AttachObjectOven(string &in asStickyArea, string &in asBodyName)
{
if (StringContains(asBodyName, oven_object_name))
SetAllowStickyAreaAttachment(true);
else
{
SetAllowStickyAreaAttachment(false);
return;
}
AddDebugMessage(asStickyArea + " " + asBodyName, true);
asBodyName = StringSub(asBodyName, 0, oven_object_name.length() + 2);
AddDebugMessage(asBodyName, false);
if (StringContains(asStickyArea, "1") && StringContains(asBodyName, "1"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "2") && StringContains(asBodyName, "2"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "3") && StringContains(asBodyName, "3"))
SetLocalVarInt(asStickyArea, 1);
else if (StringContains(asStickyArea, "4") && StringContains(asBodyName, "4"))
SetLocalVarInt(asStickyArea, 1);
}
void DetachObjectOven(string &in asStickyArea, string &in asBodyName)
{
SetLocalVarInt(asStickyArea, 0);
}
void CompleteOvenPuzzle(string &in asTimer)
{
SetSwingDoorLocked(oven_door_name, false, true);
SetMessage("Messages", "correctcombinationchemicals", 0);
}
CURRENTLY WORKING ON:
Final Light = 40%
Need of voice actors.
10-06-2012, 08:02 PM