@Ant :swink:
Yeah right to many teleporters would be confusing the players. :sbigsmile: There will be 8 or 10 teleporters for this map (including for the trials). I have found an idea to solve the problem. I will make a spiral stairs, which lead from the 1st to 2nd floor :scool: .
@Brainpan :swink:
Warp zones are awesome to connect rooms. I tried to make infinity floors, but the problem was that the monsters didn´t attack me behind the warp zone and the mp5 fire didn´t pass the warp zone. That´s why i removed them from map.
Apo :sbigsmile:
DM-SC-Anniversary-HB-SE
-
- DW Clan Member
- Posts: 356
- Joined: Wed Apr 22, 2009 5:09 am
- Xfire: apokalypse86
- Location: Leonberg, Germany
- Contact:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
-
- DW Clan Member
- Posts: 356
- Joined: Wed Apr 22, 2009 5:09 am
- Xfire: apokalypse86
- Location: Leonberg, Germany
- Contact:
Can i use the PrevSequenceTrigger multiple times with the same List of Events without using random?
For example:
first round i want to shoot stone 1, then stone 2 and stone 3
next round i want to shoot stone 3 then stone 1 then stone 2
next round.........
I know the question is confusing :sbigsmile:
The teleporters and the warpzones have been removed from map :thumbright:
-------------------------------------
DM-SC-Anniversary-HB-SE
current size: 29,0 MB
status: 79% ready
-------------------------------------
Apo :sbigsmile:
For example:
first round i want to shoot stone 1, then stone 2 and stone 3
next round i want to shoot stone 3 then stone 1 then stone 2
next round.........
I know the question is confusing :sbigsmile:
The teleporters and the warpzones have been removed from map :thumbright:
-------------------------------------
DM-SC-Anniversary-HB-SE
current size: 29,0 MB
status: 79% ready
-------------------------------------
Apo :sbigsmile:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Sure you can!Apok@lypse wrote:Can i use the PrevSequenceTrigger multiple times with the same List of Events without using random?
For example:
first round i want to shoot stone 1, then stone 2 and stone 3
next round i want to shoot stone 3 then stone 1 then stone 2
next round.........
If you don't want the events to be randomized, then set the PrevSequenceTrigger's bRandomOrder property to false. Then the trigger will use the order of events you placed in the ListOfEvents property.
From your example stated above, it sounds like you want the order to be randomized after each sequence has been completed. Do you want it to randomly change the order every time it finished its previous sequence?
The current version you have cannot change order every time the sequence has been completed, but I can modify that so it will do so. I just want to make sure I got the question right before I start implementing.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
-
- DW Clan Member
- Posts: 356
- Joined: Wed Apr 22, 2009 5:09 am
- Xfire: apokalypse86
- Location: Leonberg, Germany
- Contact:
Yes right :cheers: .
I need something, like when the order is correct, that a new order comes like the stone example.
Thank you very much for helping Ant :sbigsmile: .
Be on vent next saturday :bigsmurf: .
Apo :sbigsmile:
I need something, like when the order is correct, that a new order comes like the stone example.
Thank you very much for helping Ant :sbigsmile: .
Be on vent next saturday :bigsmurf: .
Apo :sbigsmile:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Okay I'm assuming you're using this version from Absolute Hell:
Replace that code with this:
This version adds an option to reshuffle the order every time the sequence has been completed. To make this work simply make sure bRepeatable and bShufflePerCompletion is set to true.
Log:
Code: Select all
//=============================================================================
// PrevSequenceTrigger
// A sequence trigger will trigger its event whenever all of the tags have been
// triggered. Other features are included such as randomly generated order, and
// play a sound whenever the right or wrong sequence is triggered.
// Author: DW>Ant
// Date: May 5, 2010
//=============================================================================
class PrevSequenceTrigger extends Triggers
placeable;
var() array<name> ListOfEvents; //The sequence of events that must be triggered
var() bool bRandomOrder; //Randomize the order
var() bool bRepeatable; //Do this sequence multiple times
var() name ResetEvent; //Event that is triggered whenever ResetSequence is called (when it fails or repeatable is enabled and the sequence is done)
var() name UseTriggerTag; //The UseTrigger tag that goes along with this.
var(SequenceTriggerConditionalEvents) string CompletedMessage;
var(SequenceTriggerConditionalEvents) sound CompletedSound;
var(SequenceTriggerConditionalEvents) string CorrectMessage;
var(SequenceTriggerConditionalEvents) sound CorrectSound;
var(SequenceTriggerConditionalEvents) string FailedMessage;
var(SequenceTriggerConditionalEvents) sound FailedSound;
var int IndexNumber;
var PrevSequenceUseTriggerRecorder R;
event PreBeginPlay()
{
local int i;
local bool Condition;
local array<name> TempArray;
super.PreBeginPlay();
if (bRandomOrder)
{
Condition = true; //initializing
while (TempArray.length != ListOfEvents.length)
{
if (Condition) //To prevent the very small chance of crashing, this condition statement is here so the while loop doesn't go over 10000 iterations
IndexNumber = Rand(ListOfEvents.length);
else //Condition is false...incrementing IndexNumber
{
if (IndexNumber == ListOfEvents.length - 1)
IndexNumber = 0; //Back to the beginning
else
IndexNumber++; //Try next element
Condition = true; //reset
}
//Check to see if this tag was used before
i = 0; //i is used to compare temp array
while (i < TempArray.length)
{
if (ListOfEvents[IndexNumber] == TempArray[i]) //If this event was used before then get a another tag
{
i = 9999; //Get out of while loop
Condition = false;
}
else //Check the next element
i++;
}
if (Condition) //IndexNumber is good, save it to temp array and get out of loop
TempArray[TempArray.length]=ListOfEvents[IndexNumber];
//If Condition is false, then get new IndexNumber (IndexNumber++)
} //Got randomly generated array, time to reset some variables
i = 0;
IndexNumber = 0;
//Setting ListOfEvents equal to TempArray
while (i < ListOfEvents.length)
{
ListOfEvents[i] = TempArray[i];
i++;
}
}
//Shuffling is over, going back to normal
R = Spawn(class 'Mylevel.PrevSequenceUseTriggerRecorder',,'MySequenceUseTriggerRecorder',,); //Unfortunately mappers are limited to one SequenceTrigger per map.
R.UseTriggerTag = UseTriggerTag; //Grouping this new actor with this sequence
Tag = ListOfEvents[0];
}
function Trigger( actor Other, pawn EventInstigator )
{
if ( (EventInstigator == None && IndexNumber == 0 ) || Other.Tag != UseTriggerTag )
return; //Do nothing if sequence didn't start or if tags are not matching
else
{
if (GoThroughList())
{
if (IndexNumber == ListOfEvents.length-1) //At end of listed triggers
{
PlaySound( CompletedSound, SLOT_None, SoundVolume / 255.0, false, SoundRadius, SoundPitch / 64.0);
if (CompletedMessage != "")
Level.Game.Broadcast(None, CompletedMessage);
TriggerEvent(Event, Other, EventInstigator);
if (bRepeatable)
{
R.ClearHistory();
ResetSequence();
TriggerEvent(ResetEvent, Other, EventInstigator);
}
else
{
R.destroy();
destroy();
}
}
else //Move to next list & empty the recorder
{
PlaySound( CorrectSound, SLOT_None, SoundVolume / 255.0, false, SoundRadius, SoundPitch / 64.0);
if (CorrectMessage != "")
Level.Game.Broadcast(None, CorrectMessage);
IndexNumber++;
Tag = ListOfEvents[IndexNumber];
R.ClearHistory();
}
}
else //reset
{
PlaySound( FailedSound, SLOT_None, SoundVolume / 255.0, false, SoundRadius, SoundPitch / 64.0);
if (FailedMessage != "")
Level.Game.Broadcast(None, FailedMessage);
ResetSequence();
TriggerEvent(ResetEvent, Other, EventInstigator);
}
}
}
function bool GoThroughList()
{
if (IndexNumber == 0) //At the beginning
{
R.ClearHistory();
return true;
}
else //Already started the sequence
{
if (R.EventHistory[0] == Tag)
return true;
else //If the first element isn't matching the tag, someone must of broke the sequence earlier. Reset
return false;
}
}
function ResetSequence()
{
Tag = ListOfEvents[0];
IndexNumber = 0;
}
Replace that code with this:
Code: Select all
//=============================================================================
// PrevSequenceTrigger
// A sequence trigger will trigger its event whenever all of the tags have been
// triggered. Other features are included such as randomly generated order, and
// play a sound whenever the right or wrong sequence is triggered.
// Author: DW>Ant
// Date: May 5, 2010
//=============================================================================
class PrevSequenceTrigger extends Triggers
placeable;
var() array<name> ListOfEvents; //The sequence of events that must be triggered
var() bool bRandomOrder; //Randomize the order
var() bool bRepeatable; //Do this sequence multiple times
var() bool bShufflePerCompletion; //If true, the Sequence Trigger will shuffle the list of elements every time the sequence has been completed.
var() name ResetEvent; //Event that is triggered whenever ResetSequence is called (when it fails or repeatable is enabled and the sequence is done)
var() name UseTriggerTag; //The UseTrigger tag that goes along with this.
var(SequenceTriggerConditionalEvents) string CompletedMessage;
var(SequenceTriggerConditionalEvents) sound CompletedSound;
var(SequenceTriggerConditionalEvents) string CorrectMessage;
var(SequenceTriggerConditionalEvents) sound CorrectSound;
var(SequenceTriggerConditionalEvents) string FailedMessage;
var(SequenceTriggerConditionalEvents) sound FailedSound;
var int IndexNumber;
var PrevSequenceUseTriggerRecorder R;
event PreBeginPlay()
{
local int i;
local bool Condition;
local array<name> TempArray;
super.PreBeginPlay();
if (bRandomOrder)
{
Condition = true; //initializing
while (TempArray.length != ListOfEvents.length)
{
if (Condition) //To prevent the very small chance of crashing, this condition statement is here so the while loop doesn't go over 10000 iterations
IndexNumber = Rand(ListOfEvents.length);
else //Condition is false...incrementing IndexNumber
{
if (IndexNumber == ListOfEvents.length - 1)
IndexNumber = 0; //Back to the beginning
else
IndexNumber++; //Try next element
Condition = true; //reset
}
//Check to see if this tag was used before
i = 0; //i is used to compare temp array
while (i < TempArray.length)
{
if (ListOfEvents[IndexNumber] == TempArray[i]) //If this event was used before then get a another tag
{
i = 9999; //Get out of while loop
Condition = false;
}
else //Check the next element
i++;
}
if (Condition) //IndexNumber is good, save it to temp array and get out of loop
TempArray[TempArray.length]=ListOfEvents[IndexNumber];
//If Condition is false, then get new IndexNumber (IndexNumber++)
} //Got randomly generated array, time to reset some variables
i = 0;
IndexNumber = 0;
//Setting ListOfEvents equal to TempArray
while (i < ListOfEvents.length)
{
ListOfEvents[i] = TempArray[i];
i++;
}
}
//Shuffling is over, going back to normal
R = Spawn(class 'Mylevel.PrevSequenceUseTriggerRecorder',,'MySequenceUseTriggerRecorder',,); //Unfortunately mappers are limited to one SequenceTrigger per map.
R.UseTriggerTag = UseTriggerTag; //Grouping this new actor with this sequence
Tag = ListOfEvents[0];
}
function Trigger( actor Other, pawn EventInstigator )
{
if ( (EventInstigator == None && IndexNumber == 0 ) || Other.Tag != UseTriggerTag )
return; //Do nothing if sequence didn't start or if tags are not matching
else
{
if (GoThroughList())
{
if (IndexNumber == ListOfEvents.length-1) //At end of listed triggers
{
PlaySound( CompletedSound, SLOT_None, SoundVolume / 255.0, false, SoundRadius, SoundPitch / 64.0);
if (CompletedMessage != "")
Level.Game.Broadcast(None, CompletedMessage);
TriggerEvent(Event, Other, EventInstigator);
if (bRepeatable)
{
R.ClearHistory();
//Shuffle the list every time the sequence was found
if (bShufflePerCompletion)
ShuffleList();
ResetSequence();
TriggerEvent(ResetEvent, Other, EventInstigator);
}
else
{
R.destroy();
destroy();
}
}
else //Move to next list & empty the recorder
{
PlaySound( CorrectSound, SLOT_None, SoundVolume / 255.0, false, SoundRadius, SoundPitch / 64.0);
if (CorrectMessage != "")
Level.Game.Broadcast(None, CorrectMessage);
IndexNumber++;
Tag = ListOfEvents[IndexNumber];
R.ClearHistory();
}
}
else //reset
{
PlaySound( FailedSound, SLOT_None, SoundVolume / 255.0, false, SoundRadius, SoundPitch / 64.0);
if (FailedMessage != "")
Level.Game.Broadcast(None, FailedMessage);
ResetSequence();
TriggerEvent(ResetEvent, Other, EventInstigator);
}
}
}
function bool GoThroughList()
{
if (IndexNumber == 0) //At the beginning
{
R.ClearHistory();
return true;
}
else //Already started the sequence
{
if (R.EventHistory[0] == Tag)
return true;
else //If the first element isn't matching the tag, someone must of broke the sequence earlier. Reset
return false;
}
}
function ResetSequence()
{
Tag = ListOfEvents[0];
IndexNumber = 0;
}
function ShuffleList()
{
local int i;
local bool Condition;
local array<name> TempArray;
Condition = true; //initializing
while (TempArray.length != ListOfEvents.length)
{
if (Condition) //To prevent the very small chance of crashing, this condition statement is here so the while loop doesn't go over 10000 iterations
IndexNumber = Rand(ListOfEvents.length);
else //Condition is false...incrementing IndexNumber
{
if (IndexNumber == ListOfEvents.length - 1)
IndexNumber = 0; //Back to the beginning
else
IndexNumber++; //Try next element
Condition = true; //reset
}
//Check to see if this tag was used before
i = 0; //i is used to compare temp array
while (i < TempArray.length)
{
if (ListOfEvents[IndexNumber] == TempArray[i]) //If this event was used before then get a another tag
{
i = 9999; //Get out of while loop
Condition = false;
}
else //Check the next element
i++;
}
if (Condition) //IndexNumber is good, save it to temp array and get out of loop
TempArray[TempArray.length]=ListOfEvents[IndexNumber];
//If Condition is false, then get new IndexNumber (IndexNumber++)
} //Got randomly generated array, time to reset some variables
i = 0;
IndexNumber = 0;
//Setting ListOfEvents equal to TempArray
while (i < ListOfEvents.length)
{
ListOfEvents[i] = TempArray[i];
i++;
}
//Assign new tag
Tag = ListOfEvents[0];
}
Log:
- Added new function call ShuffleList()
- Added new boolean variable: bShufflePerCompletion
- Modified the triggered function to call the ShuffleList() function properly
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
-
- DW Clan Member
- Posts: 356
- Joined: Wed Apr 22, 2009 5:09 am
- Xfire: apokalypse86
- Location: Leonberg, Germany
- Contact:
Sorry for asking again Ant :sbigsmile: .
How can i make a mover with this,
First the Mover Key 0 -> Key 1 (Movetime= 0 seconds)
Then Key 1 -> Key 2 (Movetime= 15 seconds)
Thanks for helping :ssmile: .
I found a problem with this movie scene, you know the video that i send you on vent chat. The Complexity is yellow to red :ssad: .
It was a great trial section but i have to make a new one :thumbright:
Apokalypse
How can i make a mover with this,
First the Mover Key 0 -> Key 1 (Movetime= 0 seconds)
Then Key 1 -> Key 2 (Movetime= 15 seconds)
Thanks for helping :ssmile: .
I found a problem with this movie scene, you know the video that i send you on vent chat. The Complexity is yellow to red :ssad: .
It was a great trial section but i have to make a new one :thumbright:
Apokalypse
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
You want to use a custom mover created by Super Ape in his gametype: Old Skool Monsta Adventure.
The custom mover is called VariableTimedMover. Setting it up should be easy. There's an array property in VariableTimedMover category called MoveTimeKey. Simply set the move time numbers to the corresponding moving key. (ie: Element 0 should be the move time between keys 0-1. Element 1 should be the move time between keys 1-2).
Note: I haven't used this actor so I'm not sure how well it will go for you, but it's worth a shot.
You can download OSM-Guide to get a copy of the Variable Timed Mover.
To import OSM content into the actor class browser, make sure the OSM.u is in your system folder. If you don't see the VariableTimedMover option after right clicking the mover button, then go to the actor class browser. Hit file ---> open. Then load up OSM, and the Variable Timed Mover should be available to you.
The custom mover is called VariableTimedMover. Setting it up should be easy. There's an array property in VariableTimedMover category called MoveTimeKey. Simply set the move time numbers to the corresponding moving key. (ie: Element 0 should be the move time between keys 0-1. Element 1 should be the move time between keys 1-2).
Note: I haven't used this actor so I'm not sure how well it will go for you, but it's worth a shot.
You can download OSM-Guide to get a copy of the Variable Timed Mover.
To import OSM content into the actor class browser, make sure the OSM.u is in your system folder. If you don't see the VariableTimedMover option after right clicking the mover button, then go to the actor class browser. Hit file ---> open. Then load up OSM, and the Variable Timed Mover should be available to you.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
-
- DW Clan Member
- Posts: 356
- Joined: Wed Apr 22, 2009 5:09 am
- Xfire: apokalypse86
- Location: Leonberg, Germany
- Contact:
Thanks again for the OSM Guide Ant :thumbright: . I will try to use this mover for next map ops.
I change my mind with the resident evil trial. I made some new, good and real challenging trials. I will start to build them right now. It´s hard to find some good trials, because of the artifacts. Players could use them to cheat.
I change my mind with the resident evil trial. I made some new, good and real challenging trials. I will start to build them right now. It´s hard to find some good trials, because of the artifacts. Players could use them to cheat.
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
For flying players, simply place a physics volume over the area you don't want players to fly in. Set the volume's KBuoyancy = 0.999999 (that's six 9's) to disable flying. Use the KBuoyancy in the karma category (not movement).Apok@lypse wrote:I change my mind with the resident evil trial. I made some new, good and real challenging trials. I will start to build them right now. It´s hard to find some good trials, because of the artifacts. Players could use them to cheat.
Limitation volumes for translocating.
Electro Magnet is a bit tricky since it's different per situation. There are multiple solutions but each solution depends on the room structure. You can set teleporters, blocking volumes, nonkarma collision actors, damage volumes, simplified collision models, fake backdrop surfaces, or rough angles (ie: too many corners for a player to spider around) to discourage players from using this artifact.
As for globers, you can either teleport them or kill them by using mover encroachment or using "KillEventInstigator" with scripted trigger's action.
As for Quad Jump + Quick Foot + Air Master + Shield Jump + Power Jump + Speed Combo, you can simply change the gravity, set zone velocity, blocking volumes, teleporters, etc.
As for Iron Legs (fall damage), you can increase terminal speed (max falling speed), damage volume at bottom, or set a scripted trigger with sequence "DamageInstigator" if you want the fall damage to be a one time occurring thing.
The difference between successful people from others is
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
not in the lack of strength,
not in the lack of knowledge,
but rather in the lack of will.
FFE466
_________________________
{F}{AH}{CivFR}{XC}{U}{DF}{CJ}{SD}
-
- DW Clan Member
- Posts: 356
- Joined: Wed Apr 22, 2009 5:09 am
- Xfire: apokalypse86
- Location: Leonberg, Germany
- Contact:
Thanks again Ant :ssmile: .
Here a short status:
i made a scripted trigger with 140 actions :sbigsmile: and it´s working and a special room (spoiler for moment). Trials are on way for build, i spend to much on the scripted trigger, but i think this map will be one of my best maps, i have ever made in my life :swink: .
Ant, if the map is ready, you want to know the instructions how the maps working? If yes, i will send you a private message after map is ready.
Cya on vent Apo :wave:
Here a short status:
i made a scripted trigger with 140 actions :sbigsmile: and it´s working and a special room (spoiler for moment). Trials are on way for build, i spend to much on the scripted trigger, but i think this map will be one of my best maps, i have ever made in my life :swink: .
Ant, if the map is ready, you want to know the instructions how the maps working? If yes, i will send you a private message after map is ready.
Cya on vent Apo :wave:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive
Nano-Technics -> Choco-Wars -> Dragon-Tower ->(Next Map Fall 2016) Survive