setupCode()
{
amount_of_triggers = 4;
level.finalcode = "1:2:1:4";
level.triggersequence = "1:2:3:4";
level.correct_string_code = "^2Code correct!";
level.wrong_string_code = "^1Code Wrong!";
level.correct_string_trigs = "^2Correct sequence.";
level.wrong_string_trigs = "^1Wrong sequence!";
level.list_of_restricted_guids = [];
door = getent("firstdoor","targetname");
door2 = getent("seconddoor","targetname");
// Calls thread for numbers 1-9 -- these are the numbers on the numpad
// Calls thread for number 10 -- this is the enter button at the numpad
// Calls thread for numbers 11-20 -- these are the triggers in the second room
for(i = 1 ; i < (11 + (amount_of_triggers + 1)) ; i++)
thread waitForInput(i, door, door2);
}
waitForInput(number, door1, door2)
{
if(number <= 10)
{
if(number == 10)
trig = getent("enterkey","targetname");
else
trig = getent(getText(number) + "key","targetname");
}
else if(number > 10)
trig = getent(getText(number) + "trig","targetname");
while(1)
{
trig waittill("trigger", player);
if(number < 10)
player thread addCode(number, "numlock");
else if(number == 10)
player thread addCode("final", "numlock", door1);
else if(number > 10)
player thread addCode(number, "triggersequence", door2);
}
}
addCode(code, section, entity_door)
{
if(section == "numlock")
{
if(code == "final")
{
if(self.finalcode == level.finalcode)
{
self iprintln(level.correct_string_code);
entity_door.origin += (0,0,10000); // tijdelijk
wait 3; // tijdelijk
entity_door.origin -= (0,0,10000); // tijdelijk
}
else
self iprintln(level.wrong_string_code);
self.finalcode = "";
}
if(!isDefined(self.finalcode))
{
self.finalcode = "";
self.finalcode += code;
}
else
self.finalcode += ":" + code;
}
else if(section == "triggersequence")
{
for(i=0;i<level.list_of_restricted_guids.size);
if(level.list_of_restricted_guids[i] != 0 && level.list_of_restricted_guids == self getGuid())
return;
if(!isDefined(self.triggersequence))
{
self.triggersequence = "";
self.triggersequence += (code - 10);
}
else
self.triggersequence += ":" + (code - 10);
if(self.triggersequence == level.triggersequence)
{
self iprintln(level.correct_string_trigs);
entity_door.origin += (0,0,10000);
wait 3;
entity_door.origin -= (0,0,10000);
}
else if(!isSubStr(level.triggersequence, self.triggersequence))
{
self iprintln(level.wrong_string_trigs);
added = false;
place_in_array = 0;
for(i=0;i<level.list_of_restricted_guids.size;i++)
if(level.list_of_restricted_guids[i] == 0)
{
level.list_of_restricted_guids[i] == self getGuid();
place_in_array = i;
added = true;
}
if(!added)
{
place_in_array = level.list_of_restricted_guids.size;
level.list_of_restricted_guids[level.list_of_restricted_guids.size] = self getGuid();
}
self waittill("disconnected");
level.list_of_restricted_guids[place_in_array] = 0;
}
}
}
isSubStr(string, littlestring)
{
if(littlestring.size > string.size)
return false;
for(i = 0; i < string.size - littlestring.size; i++)
{
if(getSubStr(string, i, littlestring.size) == littlestring)
return true;
}
return false;
}
getSubStr(string, start, count)
{
if(start + count > string.size)
{
iprintlnbold("getSubStr error");
return "";
}
temp = "";
for(i = start; i < start + count; i++)
temp += string[i];
return temp;
}
getText(num)
{
switch(num)
{
case 1:
case 11:
return "first";
case 2:
case 12:
return "second";
case 3:
case 13:
return "third";
case 4:
case 14:
return "fourth";
case 5:
case 15:
return "fifth";
case 6:
case 16:
return "sixth";
case 7:
case 17:
return "seventh";
case 8:
case 18:
return "eighth";
case 9:
case 19:
return "nineth";
default:
iprintlnbold("^1Couldn't find the right number in getText, returning ''first''");
return "first";
}
}
/*
Targetnames van triggers (trigger_damage) zijn:
firstkey secondkey thirdkey
fourthkey fifthkey sixthkey
seventhkey eighthkey ninethkey
enterkey
Targetnames hoeven niet in dezelfde volgorde te staan.
"firstkey" hoeft niet noodzakelijk op toets "1" te staan.
Als in het script de code "1:5:2" wordt opgegeven zal dit verwijzen naar de volgende triggers:
"firstkey:fifthkey:secondkey" Echter kunnen triggers in het spel op een andere plaats geplaatst worden.
Stel: de "firstkey" trigger zit bij cijfer 1, de "secondkey" bij 2, enz...
De code "1:2:3" is dan letterlijk "1, 2, 3"
Als je van "firstkey" de vijfde trigger maakt, van secondkey de vierde en van thirdkey de zevende,
dan wordt de code: "5, 4, 7"
Hierdoor is het onmogelijk om vanuit het script af te leiden wat de code is.
Tweede deel:
Het script 'ondersteund' 9 triggers (trigger_use) met volgende targetnames:
firsttrig secondtrig
thirdtrig fourthtrig
fifthtrig sixthtrig
seventhtrig eighthtrig
ninethtrig
Je moet het script zelf zeggen hoeveel triggers je wil.
Als je 5 triggers hebt pas je het variabel "amount_of_triggers" aan.
amount_of_triggers = 5;
*/