lundi 18 juillet 2016

Color help

Ok, step by step. SetPlayerColor accepts an integer (a number) in hexadecimal format, i.e. 0xFFFFFFFF, NOT a string "0xFFFFFFFF".

Code:

stock PlayerColor(factionid) 
{ 
Color[1] = 0xFFFFFFC8; 
Color[2] = 0x0080C0C8;//si tot asa 
return Color[factionid];//returnez culoarea de care am nevoie 
}

Step 2: You are wasting 1 slot, as arrays start from 0:

Code:

stock PlayerColor(factionid) 
{ 
Color[0] = 0xFFFFFFC8; 
Color[1] = 0x0080C0C8;//si tot asa 
return Color[factionid - 1];//returnez culoarea de care am nevoie 
}

Step 3: You are setting faction colors every time you call PlayerColor. That's bad.

Code:

new Color[16] = { 0xFFFFFFC8, 0x0080C0C8, ... };

stock PlayerColor(factionid) 
{
return Color[factionid - 1];//returnez culoarea de care am nevoie 
}

Step 4: Make sure factionid returns a valid value:

Code:

new Color[16] = { 0xFFFFFFC8, 0x0080C0C8, ... };

#define IsAValidFaction(%0) (0 <= %0 <= 16) 

stock PlayerColor(factionid) 
{
if (!IsAValidFaction(factionid)) return 0x000000FF;
return Color[factionid - 1];//returnez culoarea de care am nevoie 
}

Step 5: But what if one day you want 1 more faction?

Code:

#define MAX_FACTIONS 16
new Color[MAX_FACTIONS] = { 0xFFFFFFC8, 0x0080C0C8, ... };

#define IsAValidFaction(%0) (0 <= %0 <= MAX_FACTIONS) 

stock PlayerColor(factionid) 
{
if (!IsAValidFaction(factionid)) return 0x000000FF;
return Color[factionid - 1];//returnez culoarea de care am nevoie 
}

Step 6: Now you have shitton of magic numbers, i.e if you want to check if player is a policeman you do PlayerInfo[pid][pFaction] == 3. That's bullshit! Let's fix that as well:

Code:

enum E_FACTION {
    E_FACTION_NONE,
    E_FACTION_ARMY,
    E_FACTION_GOV,
    E_FACTION_POLICE,
    //etc.
}
new Color[_:E_FACTION] = { 0xFFFFFFC8, 0x0080C0C8, ... };

#define IsAValidFaction(%0) (0 <= %0 <= _:E_FACTION) 

stock PlayerColor(factionid) 
{
if (!IsAValidFaction(factionid)) return 0x000000FF;
return Color[factionid];//returnez culoarea de care am nevoie 
}

There. Much cleaner

Let's block ads! (Why?)



Color help

Aucun commentaire:

Enregistrer un commentaire