When you say this in campaign_script:
Code:
monitor_event FactionTurnStart FactionType faction_name
you are monitoring the start of some faction's turn and you're specifying which faction this is. Then, within this monitor, you're issuing console commands to give traits to some characters with certain names. The faction whose turn it is when you issue these console commands does not, in any way, change which characters the console commands act on. You can give traits (or do anything else allowed by script commands) to any character on the map during any faction's turn (or during any other event allowed by script conditions).
Now, as for labels - I don't think the order of items on the 'character' line matters. I have always seen the name and type come first followed by everything else in random order. I usually put the label last but all of the following should be equally valid:
Code:
character Orodreth, named character, male, age 41, x 314, y 184, portrait Orodreth, hero_ability CAPTAIN, label orodreth_1 ;this is the order I typically use
character Orodreth, named character, male, label orodreth_1, x 314, y 184, age 41, portrait Orodreth, hero_ability CAPTAIN
character Orodreth, named character, male, x 314, y 184, portrait Orodreth, label orodreth_1, hero_ability CAPTAIN, age 41
and you can add labels to characters spawned in campaign_script as well:
Code:
spawn_army
faction timurids
character random_name, admiral, age 20, x 284, y 385, direction S, label fleet_1 ;here's an admiral with a label and a random name, do not attempt to use random_name in descr_strat as it doesn't work
traits
unit merc cog exp 0 armour 0 weapon_lvl 0
end
The above is sufficient to assign labels to characters - they do not need to be set up in any other files.
Labels are essential for scripting. Labels are usually unique and used to identify individual characters without ambiguity. Whereas the game randomly assigns names to new characters and we can spawn characters using random_name, labels are always assigned deliberately by us, not the game, which makes them ideal for identifying individuals. Labels do not need to be unique, but the only uses I can envision for assigning multiple characters the same label is for killing a group of characters using kill_character or performing some script action on a number of characters who are meant to represent the same character respawned over and over again (both of these scenarios can be handled with EOP without using duplicate labels). The only time you can ever be sure you have gotten the right character when using their name is if they are uniquely named, and even then I would recommend using label wherever possible.