Description of the technique:
The icon is changed when assigning a serial number to a pre-cached flag icon.
It is important to understand that we cannot simply create a measure and place the index of a pre-cached file in it and simply assign it. it won't work. We will try to get to a free cell for icons from 0 to 24 approximately.
When the map is launched, it comes with flag icons. For example, we will consider dod_caen.bsp
Code: Select all
#define m_iAlliesIcon 553
#define m_iAxisIcon 554
#define m_iNeutralIcon 555
public control_points_retune()
{
new idx_cpoint
while((idx_cpoint = engfunc(EngFunc_FindEntityByString, idx_cpoint, "classname", "dod_control_point")) != 0)
{
set_pdata_int(idx_cpoint,m_iNeutralIcon, 0, linux_diff_entity) //
set_pdata_int(idx_cpoint,m_iAlliesIcon, 16, linux_diff_entity) //
set_pdata_int(idx_cpoint,m_iAxisIcon, 17, linux_diff_entity) //
/*
0 == Белый нейтральный
1 == Allies Star
2 == Axis Axis
3 == Neutral White
3 == Allies Artillery
5 == Axis Artillery
6 == Neutral White
7 == Allies Bridge
8 == Axis Bridge
9 == Neutral White
10 == Allies Radio
11 == Axis Radio
12 == Neutral White
13 == Allies Docs
14 == Axis Docs
15 == Neutral White
16 == Allies Truck
17 == Axis Ganamak
18 == Neutral Mers W136
19 == Allies Mers W136
20 == Axis Mers W136
21 == Neutral Tank
22 == Allies Tank
23 == Axis Tank
21 == Neutral Tank
22 == Allies Weelys
23 == Axis Weelys
*/
}
} At a certain moment, you go to assign icon number 22 to some flag, but when assigned, the icon will be missing in the game, it will be an empty slot in the interface, as if the flag does not exist, you will not see this icon on the radar map either.
We remember this number for dod_caen == 22 (please note that this may be a different number, since I conducted this research a month ago, and if you need to know for sure, then you will check it empirically. upd:: it's 22 for caen)
If we open the game client console, we will see the following returns
Code: Select all
Error: could not load file sprites/obj_icons/dod_caen/icon_obj_custom2_neutral.spr
Error: could not load file sprites/obj_icons/dod_caen/icon_obj_custom2_allies.spr
Error: could not load file sprites/obj_icons/dod_caen/icon_obj_custom2_axis.spr Code: Select all
Half-Life\dod\sprites\obj_icons\dod_caen ==
Half-Life\dod\sprites\obj_icons\*mapname\icon_obj_custom*NUMBER*_axis.sprGood!
All that remains to be done:
Create a custom sprite (preferably for both teams)
First cache it, and assign our supposedly constant number to the flag.
in the archive you will find an absolutely working solution for dod_caen
In the image you will see that for dod_caen it worked, but for dod_donner , you need to look for free slots again, ultimately for customization you will have to create a downloadable configuration file that loads values for each map.
Also in the source file of the plugin you will see that there is a collection of some information for each point, and taking its index, we can assign our own icon to a certain flag using the switch{case} ..
So!
Memo - Method for installing a custom sprite on a flag:
1. try all the numbers on m_iNeutral\Axis|AlliesIcon
2. If the flag icons are missing, open the console and there should be something like this:
Server #2
Error: could not load file sprites/obj_icons/dod_caen/icon_obj_custom2_neutral.spr
Error: could not load file sprites/obj_icons/dod_caen/icon_obj_custom2_allies.spr
Error: could not load file sprites/obj_icons/dod_caen/icon_obj_custom2_axis.spr
3. Create sprites with the desired name from the console
4. Pre-cache sprites
5. Put empty numbers.
6. Done
