Tutorial Ally/Unally System

jonadrian619

-___-
Reaction score
242
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
242
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.
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +2
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    New recipe is another summer dessert Berry and Peach Cheesecake - https://www.thehelper.net/threads/recipe-berry-and-peach-cheesecake.194169/

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top