DM-Operation-NightFall-HB-SE

Mapmaking? Modeling? Discuss all that stuff that's too complicated for most mere mortals here.
DW_Apok@lypse
DW Clan Member
Posts: 356
Joined: Wed Apr 22, 2009 5:09 am
Xfire: apokalypse86
Location: Leonberg, Germany
Contact:

Ok, the map looks to easy. Maybe i spend more time on map :ssmile: .
The Trials are good, but the desert looks empty :sbigsmile: .
I will update the map and put some static meshes.

yours sincerly
Apo :sbigsmile:

Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->
(Next Map Fall 2016) Survive
DW_Ant
DW Clan Member
Posts: 2670
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

Ah there's the secret. I was getting confused with the countdown being the countdown for the pyramid bunkers. I still can't get past the first section, I have a feeling this will require more than one person to get through.

I had a deeper look at the map. Here are my thoughts on it.
  • My biggest concern of this one is the gameplay. It's structure very similarly to Energy Plant. Except for the buildings aren't in the corners. If you do add detail, be fairly light on it. This is an open map and players will be rendering everything (resulting in low frame rates). I haven't spoke with others on their view of this yet, but I have a strong feeling you won't be able to improve gameplay and visual appearance. You're going have to find a balance between the two.
    Some misc things to make note of:
  • You forgot to delete your xMutantPawn.
  • The button sounds for the pyramid combo is a bit too loud. Either lower the pitch or the volume. Either one will be good.
  • When displaying the tank warnings, they are quickly removed by the time messages. You can either place the tank warnings after the timer is done, or change the message type to EMT_default (changes the text to the white text in the corner).
  • It would also wouldn't hurt to delay the welcome message little longer. I have a long loading screen, and most of the time, I don't make it in time to read the welcome message. Adding 30 - 60 seconds after invwave1 trigger should do the trick.
That's all I noted from offline testing.[/color]
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}
DW_Apok@lypse
DW Clan Member
Posts: 356
Joined: Wed Apr 22, 2009 5:09 am
Xfire: apokalypse86
Location: Leonberg, Germany
Contact:

Ok, thank you Ant :swink: ,
i will fix the problems.
But i think i will change something in map.
Your right map looks to empty and boring.
I´ve got a better idea, i will change the terrain style.

I will put a screenshot :sgiggle: .

Apo :sbigsmile:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->
(Next Map Fall 2016) Survive
DW_Apok@lypse
DW Clan Member
Posts: 356
Joined: Wed Apr 22, 2009 5:09 am
Xfire: apokalypse86
Location: Leonberg, Germany
Contact:

Is this map good or boring, because i wanna build then a new one it will take a bit longer. But it would be something new. Right now i´m building a different map :idea: . In my opinion this map is for me 30% good :sgiggle: . Only the trials are the best in the whole map.
I think this map failed .

Well i look to build my second one.

Apo :sbigsmile:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->
(Next Map Fall 2016) Survive
DW_Apok@lypse
DW Clan Member
Posts: 356
Joined: Wed Apr 22, 2009 5:09 am
Xfire: apokalypse86
Location: Leonberg, Germany
Contact:

Can i make a countdowntimer in game?

If yes, how?

Apo :sbigsmile:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->
(Next Map Fall 2016) Survive
DW_Ant
DW Clan Member
Posts: 2670
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

Apok@lypse wrote:Can i make a countdowntimer in game?

If yes, how?

Apo :sbigsmile:

You want to run the countdowntimer throughout the match other than writing a scripted trigger that displays a new message every second?
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}
DW_Apok@lypse
DW Clan Member
Posts: 356
Joined: Wed Apr 22, 2009 5:09 am
Xfire: apokalypse86
Location: Leonberg, Germany
Contact:

Yes right :thumbright: !

I don´t know how to display the countdown timer in the game. But i know that unrealed use the script language C++. I searched in the internet and i found nothing about the ut2k4 scripts.

Apo :sbigsmile:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->
(Next Map Fall 2016) Survive
DW_Ant
DW Clan Member
Posts: 2670
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

Here you go. Copy/Paste this in a text editor, and mylevel it to your map.

Code: Select all

/*================================================
TriggerCounter
A simple trigger that keeps track of the time.
Warning:  This trigger spams the chat log.
Author:  DW>Ant
Date:  August 10, 2010
================================================*/

class TriggerCounter extends Triggers
placeable;

var()   bool    bCountDown; //If True, it'll count down.  False counts up
var()   int     Interval;   //Seconds per Second
var()   int     StartingHour;
var()   int     StartingMinute;
var()   int     StartingSecond;
var()   int     TriggerHoursInc;    //Increment x many hours per trigger
var()   int     TriggerMinutesInc;  //Increment x many Minutes per trigger
var()   int     TriggerSecondsInc;  //Increment x many seconds per trigger

//Internal variables.  If you're copy/pasting this through UEd Text editor, then you may have to invert the FirstTrigger bool to NotFirstTrigger
var     float   Time;
var     bool    bCounting;
var     bool    bFirstTrigger;
var     int     Hour, Minute, Second;

function Trigger(actor Other, Pawn EventInstigator)
{
    if (bCounting)
        bCounting = false;
    else
        bCounting = true;


    if (bFirstTrigger)
    {
        Hour = StartingHour;
        Minute = StartingMinute;
        Second = StartingSecond;
        bFirstTrigger = false;
    }
    else //Increment the time
    {
        if (bCountDown)
        {
            Second = Second - TriggerSecondsInc;
            if (Second < 0)
            {
                Minute--;
                Second += 60;
                if (Minute < 0)
                {
                    Hour--;
                    Minute = 59;
                    if (Hour < 0)
                        Hour = 24;
                }
            }
            //Inc Minutes
            Minute = Minute - TriggerMinutesInc;
            if (Minute < 0)
            {
                Hour--;
                Minute += 60;
                if (Hour < 0)
                    Hour = 24;
            }
            //Inc Hours
            Hour = Hour - TriggerHoursInc;
            if (Hour < 0)
                Hour += 24;
        }
        else    //Counting up
        {
            Second = Second + TriggerSecondsInc;
            if (Second > 59)
            {
                Minute++;
                Second -= 60;
                if (Minute > 59)
                {
                    Hour++;
                    Minute = 0;
                    if (Hour > 24)
                        Hour = 0;
                }
            }
            //Inc Minutes
            Minute = Minute + TriggerMinutesInc;
            if (Minute > 59)
            {
                Hour++;
                Minute -= 60;
                if (Hour > 24)
                    Hour = 0;
            }
            //Inc Hours
            Hour = Hour + TriggerHoursInc;
            if (Hour < 0)
                Hour -= 24;
        }
    }
}

function Tick(float DeltaTime)
{
    if (bCounting)
    {
        if (bCountDown)
        {
            if (int(Time - DeltaTime) == int(Time-1))
            {
                //Time = Time + 1;
                Second = Second - Interval;
                if (Second < 0)
                {
                    Minute--;
                    Second += 60;  //Incase you have Intervals > 1.  This will be buggy if Interval > 60 (negative seconds).  If that's the case, then just create a new class and remove seconds.
                    if (Minute < 0)
                    {
                        Hour--;
                        Minute = 59;
                        if (Hour < 0)
                            Hour = 24;
                    }
                }
                Level.Game.Broadcast(None, Hour @ ":" @ Minute @ ":" @ Second);
            }
            Time -= DeltaTime;
        }
        else    //Counting up
        {
            if (int(Time + DeltaTime) == int (Time+1))
            {
                //Time = Time - 1;
                Second = Second + Interval;
                if (Second > 59)
                {
                    Minute++;
                    Second -= 60;
                    if (Minute > 59)
                    {
                        Hour++;
                        Minute = 0;
                        if (Hour > 24)
                            Hour = 0;
                    }
                }
                Level.Game.Broadcast(None, Hour @ ":" @ Minute @ ":" @ Second);
            }
            Time += DeltaTime;
        }
    }

    super.Tick(DeltaTime);
}

//In UEd Text Editor, this will not work.  You'll need to edit these variables manually, but since FirstTrigger is a hidden property, you'll need to delete that.
defaultproperties
{
    bFirstTrigger=True
    Interval=1
    Texture=Texture'Gameplay.S_Counter'
}
If you're using the Unread Ed's Text editor, then you cannot include the defaultproperties section.
You can either edit this code to invert the bFirstTrigger property to bNotFirstTrigger. Then edit the If statement around line 35 "if (bFirstTrigger)" to "if (!NotFirstTrigger)" ! means if false. By default Boolean variables are set to false. Then a few lines down, don't forget to edit the line "bFirstTrigger = false;" to "bNotFirstTrigger = true;"
-or-
Save the code as it is and open the editor's console and type in: editdefault class=TriggerCounter. It should open the properties window, but you should see an additional None category. From there, you can edit any default properties for this class. In this case, go to bFirstTrigger, and change that to True. I warn you though, be very careful when editing default properties. It's worse than renaming stock packages. If you think you should edit hidden properties for other classes, be sure to subclass the class you want to edit, then edit the default properties for your myleveled new class. That way you don't have to worry about screwing up your UT installation.

The other two properties (Interval and Texture) are no biggie. You can edit those once you place this actor in your map.

How to use this actor:
Simple, give it a tag, then trigger the tag.
It will start counting either up or down.
Trigger the tag again to stop the counting.
Trigger it again to resume.
To skip values (I'm sure no match will last for 24 hours). Simply edit the TriggerSecondsInc, TriggerMinutesInc, and/or TriggerHoursInc to skip this many values per trigger. (note, your going to pause the trigger if you trigger it once, so you'll have to trigger this twice to make it resume. In another words, you'll need to half your increments since you'll be applying them twice).

The other property names are self-explanatory.

If there's something troubling you, let me know.[/color]
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}
DW_Apok@lypse
DW Clan Member
Posts: 356
Joined: Wed Apr 22, 2009 5:09 am
Xfire: apokalypse86
Location: Leonberg, Germany
Contact:

Wow good work Ant :thumbright: ,
the countdown trigger works.
But how can i display the countdown timer for example in center, like my example. The countdown timer displays 1: 4: 3 .

Can i change it to 1:04:03?

Apo :sbigsmile:
Energy-Plant -> Elimination-Chamber -> Crossfire-Xtreme -> Anniversary
Nano-Technics -> Choco-Wars -> Dragon-Tower ->
(Next Map Fall 2016) Survive
DW_Ant
DW Clan Member
Posts: 2670
Joined: Sat Jun 21, 2008 11:00 pm
Location: North Carolina

Apok@lypse wrote:But how can i display the countdown timer for example in center, like my example. The countdown timer displays 1: 4: 3 .

Can i change it to 1:04:03?

Apo :sbigsmile:
I can throw in several more if statements:
if (Seconds < 10)
Broadcast (none, Hours @ ":" @ minutes @ ": 0" @ Seconds);

It's going to be slightly messy. I'm going to research to see if I format int variables. Otherwise, I'll update it later tonight.

Edit:
I haven't found this magic formatter so I'll go with plan B.
Everything looks fine except for the spacing. The @ sign adds a space.
EX: Should be 1 : 04 : 03
But it is 1 : 0 4 : 0 3

another example
2 : 13 : 0 4

Anyways, try this one out:

Code: Select all

/*================================================
TriggerCounter
A simple trigger that keeps track of the time.
Warning:  This trigger spams the chat log.
Author:  DW>Ant
Date:  August 10, 2010
================================================*/

class TriggerCounter extends Triggers
placeable;

var()   bool    bCountDown; //If True, it'll count down.  False counts up
var()   int     Interval;   //Seconds per Second
var()   int     SpecialHourEvent;   //When this hour hits, trigger the event
var()   int     StartingHour;
var()   int     StartingMinute;
var()   int     StartingSecond;
var()   int     TriggerHoursInc;    //Increment x many hours per trigger
var()   int     TriggerMinutesInc;  //Increment x many Minutes per trigger
var()   int     TriggerSecondsInc;  //Increment x many seconds per trigger

//Internal variables.  If you're copy/pasting this through UEd Text editor, then you may have to invert the FirstTrigger bool to NotFirstTrigger
var     float   Time;
var     bool    bCounting;
var     bool    bFirstTrigger;
var     int     Hour, Minute, Second;

function Trigger(actor Other, Pawn EventInstigator)
{
    if (bCounting)
        bCounting = false;
    else
        bCounting = true;


    if (bFirstTrigger)
    {
        Hour = StartingHour;
        Minute = StartingMinute;
        Second = StartingSecond;
        bFirstTrigger = false;
    }
    else //Increment the time
    {
        if (bCountDown)
        {
            Second = Second - TriggerSecondsInc;
            if (Second < 0)
            {
                Minute--;
                Second += 60;
                if (Minute < 0)
                    Hour--;
                    Minute = 59;
                    if (Hour < 0)
                        Hour = 24;
            }
            //Inc Minutes
            Minute = Minute - TriggerMinutesInc;
            if (Minute < 0)
            {
                Hour--;
                Minute += 60;
                if (Hour < 0)
                    Hour = 24;
            }
            //Inc Hours
            Hour = Hour - TriggerHoursInc;
            if (Hour < 0)
                Hour += 24;
        }
        else    //Counting up
        {
            Second = Second + TriggerSecondsInc;
            if (Second > 59)
            {
                Minute++;
                Second -= 60;
                if (Minute > 59)
                {
                    Hour++;
                    Minute = 0;
                    if (Hour > 24)
                        Hour = 0;
                }
            }
            //Inc Minutes
            Minute = Minute + TriggerMinutesInc;
            if (Minute > 59)
            {
                Hour++;
                Minute -= 60;
                if (Hour > 24)
                    Hour = 0;
            }
            //Inc Hours
            Hour = Hour + TriggerHoursInc;
            if (Hour > 24)
                Hour -= 24;
        }
        
        if (Hour == SpecialHourEvent)
            TriggerEvent(Event, Other, EventInstigator);
    }
}

function Tick(float DeltaTime)
{
    if (bCounting)
    {
        if (bCountDown)
        {
            if (int(Time - DeltaTime) == int(Time-1))
            {
                //Time = Time + 1;
                Second = Second - Interval;
                if (Second < 0)
                {
                    Minute--;
                    Second += 60;  //Incase you have Intervals > 1.  This will be buggy if Interval > 60 (negative seconds).  If that's the case, then just create a new class and remove seconds.
                    if (Minute < 0)
                    {
                        Hour--;
                        Minute = 59;
                        if (Hour < 0)
                            Hour = 24;
                        //Check if it needs to trigger event
                        if (Hour == SpecialHourEvent)
                            TriggerEvent(Event, None, None);
                    }
                }
                if (Second < 10 && Minute < 10)
                    Level.Game.Broadcast(None, Hour @ ": 0" @ Minute @ ": 0" @ Second);
                else if (Second < 10)
                    Level.Game.Broadcast(None, Hour @ ":" @ Minute @ ": 0" @ Second);
                else if (Minute < 10)
                    Level.Game.Broadcast(None, Hour @ ": 0" @ Minute @ ":" @ Second);
                else
                    Level.Game.Broadcast(None, Hour @ ":" @ Minute @ ":" @ Second);
            }
            Time -= DeltaTime;
        }
        else    //Counting up
        {
            if (int(Time + DeltaTime) == int (Time+1))
            {
                //Time = Time - 1;
                Second = Second + Interval;
                if (Second > 59)
                {
                    Minute++;
                    Second -= 60;
                    if (Minute > 59)
                    {
                        Hour++;
                        Minute = 0;
                        if (Hour > 24)
                            Hour = 0;
                        //Check if it needs to trigger event
                        if (Hour == SpecialHourEvent)
                            TriggerEvent(Event, None, None);
                    }
                }
                if (Second < 10 && Minute < 10)
                    Level.Game.Broadcast(None, Hour @ ": 0" @ Minute @ ": 0" @ Second);
                else if (Second < 10)
                    Level.Game.Broadcast(None, Hour @ ":" @ Minute @ ": 0" @ Second);
                else if (Minute < 10)
                    Level.Game.Broadcast(None, Hour @ ": 0" @ Minute @ ":" @ Second);
                else
                    Level.Game.Broadcast(None, Hour @ ":" @ Minute @ ":" @ Second);
            }
            Time += DeltaTime;
        }
    }

    super.Tick(DeltaTime);
}

//In UEd Text Editor, this will not work.  You'll need to edit these variables manually, but since FirstTrigger is a hidden property, you'll need to delete that.
defaultproperties
{
    bFirstTrigger=True
    Interval=1
    SpecialHourEvent=24
    Texture=Texture'Gameplay.S_Counter'
}
New function included, too. The SpecialHourEvent variable tells the timer when to trigger its event.
By default, it's set to 24. When the hour hits 24, then it'll trigger its event in the Events category.
Of course you can set this hour anywhere from 0 - 24. Anything higher will be useless.[/color]
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}
Post Reply