Tutorial Ally/Unally System

jonadrian619

-___-
Reaction score
240
The Unally System tutorial by jonadrian619

this is my own version of the Unally/Ally system, which is for beginners and newbies and RP makers too.

This tutorial shows how to create a system, in this case, where if a player types 'unally + (player color of whom youre going to unally)', the player whom youre going to unally will be your enemy for instance. This system requires no variables and it's all GUI. This tutorial is newbie-friendly and for beginners and even pros.

1) About Unally Systems
Maps like my original Life in a City, Demise of Brotherhood (DoBRP) or any RP (roleplay) map, often use the unally option where players can unally the player of their choice, through chat messages, of course. Unally systems can tweak map gameplay and can add the fun to your map. Usually this system was made because most players were getting bored of having no enemy user players.

Usually, the unally system does many triggers. This system uses only 1 trigger. I used a single trigger to prevent adding a few bytes. Because the amount of triggers adds a few bytes.

Players can't unally themselves, like when you are the Red Player and you've typed unally red, nothing happens. This is because of the condition '(Triggering player) Not equal to Player 1 (Red)'

2) Triggers
The amount of events and actions depend on how many players you will allow to be unallied by other players.

Events:​
For each player you're going to allow being unallied to others, this is a sample of the event you're going to use.

Player - Player XX (Color) types a chat message containing (unally + <Empty String>) as A substring

If you have 5 players for example, you need 5 of these events, each having a different player number. Don't use 'An exact match' because the actions will not fire. Use 'as a substring' instead.

Actions:
Code:
---------------Player 1 Unalliance---------------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
        (Entered chat string) Equal to (unally  + red)
        (Triggering player) Not equal to Player 1 (Red)
    Then - Actions
        Player - Make (Triggering player) treat Player 1 (Red) as an Enemy
        Player - Make Player 1 (Red) treat (Triggering player) as an Enemy
    Else - Actions
---------------Player 2 Unalliance---------------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    If - Conditions
        (Entered chat string) Equal to (unally  + blue)
        (Triggering player) Not equal to Player 2 (Blue)
    Then - Actions
        Player - Make (Triggering player) treat Player 2 (Blue) as an Enemy
        Player - Make Player 2 (Blue) treat (Triggering player) as an Enemy
    Else - Actions
---------------AND SO ON, UNTIL YOU'VE REACHED THE MAXIMUM AMOUNT OF PLAYERS TO BE UNALLIED.---------------

If you have 2 players, you make 2 'If all conditions are true' actions, if you have 4 players you make 4 actions, and so on, until you've reached the desired limit of the players to be unallied.

Sample Trigger (3 Players)

Code:
Unally System
Events
    Player - Player 1 (Red) types a chat message containing (unally  + <Empty String>) as A substring
    Player - Player 2 (Blue) types a chat message containing (unally  + <Empty String>) as A substring
    Player - Player 3 (Teal) types a chat message containing (unally  + <Empty String>) as A substring
Conditions
Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        If - Conditions
            (Entered chat string) Equal to (unally  + red)
            (Triggering player) Not equal to Player 1 (Red)
        Then - Actions
            Game - Display to (All players) the text: ((Name of (Triggering player)) + , the system worked!!)
            Player - Make (Triggering player) treat Player 1 (Red) as an Enemy
            Player - Make Player 1 (Red) treat (Triggering player) as an Enemy
        Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        If - Conditions
            (Entered chat string) Equal to (unally  + blue)
            (Triggering player) Not equal to Player 2 (Blue)
        Then - Actions
            Game - Display to (All players) the text: ((Name of (Triggering player)) + , the system worked!!)
            Player - Make (Triggering player) treat Player 2 (Blue) as an Enemy
            Player - Make Player 2 (Blue) treat (Triggering player) as an Enemy
        Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        If - Conditions
            (Entered chat string) Equal to (unally  + teal)
            (Triggering player) Not equal to Player 3 (Teal)
        Then - Actions
            Game - Display to (All players) the text: ((Name of (Triggering player)) + , the system worked!!)
            Player - Make (Triggering player) treat Player 3 (Teal) as an Enemy
            Player - Make Player 3 (Teal) treat (Triggering player) as an Enemy
        Else - Actions

3) Conversion into Ally system
You can convert this system into an 'ally' system. Ally system is where you make a specific enemy player as an ally again through chat messages. Two easy steps convert this system into an ally system.
Step 1:
In 'Events', change the 'unally' string into 'ally'. Ex. ally + <empty string>
Step 2:
In the 'If all conditions are true' actions, change the first If condition to (Entered chat string) Equal to (ally + anycolor). Then change the 'Set Alliance' action fields to 'Ally with shared vision' instead of Enemy.

Sample Ally Trigger
Code:
Ally System
Events
    Player - Player 1 (Red) types a chat message containing (ally  + <Empty String>) as A substring
    Player - Player 2 (Blue) types a chat message containing (ally  + <Empty String>) as A substring
Conditions
Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        If - Conditions
            (Entered chat string) Equal to (ally  + red)
            (Triggering player) Not equal to Player 1 (Red)
        Then - Actions
            Game - Display to (All players) the text: ((Name of (Triggering player)) + , the system worked!!)
            Player - Make (Triggering player) treat Player 1 (Red) as an Ally with shared vision
            Player - Make Player 1 (Red) treat (Triggering player) as an Ally with shared vision
        Else - Actions
    If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        If - Conditions
            (Entered chat string) Equal to (ally  + blue)
            (Triggering player) Not equal to Player 2 (Blue)
        Then - Actions
            Game - Display to (All players) the text: ((Name of (Triggering player)) + , the system worked!!)
            Player - Make (Triggering player) treat Player 2 (Blue) as an Ally with shared vision
            Player - Make Player 2 (Blue) treat (Triggering player) as an Ally with shared vision
        Else - Actions
4) Summary
The unally system is contained in the demo map that i've made. Download it to study more about this system, and the conversion tips are shown in the README trigger in the map. A trigger named 'Ally System' allows testers to make their own Ally System because it has 1 sample event and action.

If you want to apply this into your map, copy the Unally and Ally System triggers to your map. You may add more actions like display text Message or add property actions.
 

Attachments

  • Unally System.w3x
    28 KB · Views: 420
I

IKilledKEnny

Guest
I attempted to do somthing similiar here. And this is more of a system then a tutorial so it should go to free trigger code in my opinion.
 

jonadrian619

-___-
Reaction score
240
Thanks for the heads-up. I meant to make it a tutorial so people could see it.

I'm halfway in my kick player system. Kick system is like Unally system, only that it kicks players. I'll put that to free trigger code or somewhere else.
 

Kershbob

New Member
Reaction score
30
I'd prefer it with lower case addition so that you can type -unally KeRsHbOb and it still works.

Code:
Events
        Map initialization
    Conditions
    Actions
        Set Colours_Player[1] = red
        Set Colours_Player[2] = blue
        Set Colours_Player[3] = teal
        ....etc etc for all 12

Code:
Events
        Player - Player 1 (Red) types a chat message containing -ally as A substring
        Player - Player 2 (Blue) types a chat message containing -ally as A substring
        ....etc etc for all 12
    Conditions
        (String((Substring((Entered chat string), 1, 5))) as Lower case) Equal to -ally
    Actions
        For each (Integer A) from 1 to 12, do (Actions)
            Loop - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        Or - Any (Conditions) are true
                            Conditions
                                (String((Substring((Entered chat string), 7, (Length of (Entered chat string))))) as Lower case) Equal to (Name of (Player((Integer A))))
                                (String((Substring((Entered chat string), 7, (Length of (Entered chat string))))) as Lower case) Equal to Colours_Player[(Integer A)]
                    Then - Actions
                        Player - Make (Triggering player) treat (Player((Integer A))) as an Ally with shared vision
                    Else - Actions
 

esb

Because none of us are as cruel as all of us.
Reaction score
329
hhm... i think it might be easier with arrays.

Event- Player 1-12 types (-unally player[x])
Action - Change alliance of triggering player to unally player[x]
Change alliance of player[x] to unally triggering player

something like that, that way you don't need a lot of triggers.
Also, don't forget to set the arrays
player[1]=Red(1)
player[2]=Blue(2)
and so on...
 

Drakethos

Preordered Sc2 ftw!
Reaction score
56
nice tutorial +rep. It helped me make my -challenge playercolor system for my map. I was stumped for a while but i saw your tutorial which uses the same principle that i need to use.
 
A

antforest

Guest
Kershbob I am trying to implement that system that you have shown there but I cannot find the Colours_Player[(Integer A)] where the hell is that? I don't see it! :(
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top