#ВНИМАНИЕ!В статье показан ТОЛЬКО способ получения значений,как вы их будите использовать вам решать.
1)Заходим в sma и добавляем
Код
#include "war3ft/war3ft_option.h"
#include "war3ft/war3ft_option.inl"
2)Создаем в папке war3ft файлы
Код
war3ft_option.h
war3ft_option.inl
3)Открываем war3ft_option.h и добавляем туда
Код
#define WAR3FT_OPTION_FILE "/addons/amxmodx/configs/war3ft/war3ft_option.ini"
#define SECTION_BASE_OPTION 1
#define SECTION_RACE_UNDEAD 2
//Max
#define MAX_OPTION_RACE 3
#define MAX_OPTION_BASE 3
//Race:Undead
#define OPTION_EXPLOSION_MAX_DAMAGE 0
#define OPTION_EXPLOSION_RANGE 1
#define OPTION_EXPLOSION_BLAST_RADIUS 2
new g_iOption_Race[MAX_OPTION_RACE][MAX_RACES]
new g_iOption_Base[MAX_OPTION_BASE]
4)Открываем war3ft_option.inl и добавляем туда
Код
public Get_War3ft_Option()
{
new path[64]
format(path, charsmax(path), "%s",WAR3FT_OPTION_FILE)
if (!file_exists(path))
{
new error[100]
formatex(error, charsmax(error), "Cannot load options file %s!", path)
set_fail_state(error)
return;
}
new linedata[1024], key[64], value[600], section
new file = fopen(path, "rt")
while (file && !feof(file))
{
fgets(file, linedata, 1023)
replace(linedata, 1023, "^n", "")
if (!linedata[0] || linedata[0] == ';') continue;
if (linedata[0] == '[')
{
section++
continue;
}
strtok(linedata, key, charsmax(key), value, 599, '=')
trim(key)
trim(value)
switch (section)
{
case SECTION_BASE_OPTION:
{
if (equal(key, "TEST VALUE"))
g_iOption_Base[0] = str_to_num(value)
else if (equal(key, "TEST VALUE2"))
g_iOption_Base[1] = str_to_num(value)
}
case SECTION_RACE_UNDEAD:
{
if (equal(key, "EXPLOSION_MAX_DAMAGE"))
g_iOption_Race[OPTION_EXPLOSION_MAX_DAMAGE][RACE_UNDEAD] = str_to_num(value)
else if (equal(key, "EXPLOSION_RANGE"))
g_iOption_Race[OPTION_EXPLOSION_RANGE][RACE_UNDEAD] = str_to_num(value)
else if (equal(key, "EXPLOSION_BLAST_RADIUS"))
g_iOption_Race[OPTION_EXPLOSION_BLAST_RADIUS][RACE_UNDEAD] = str_to_num(value)
}
}
}
server_print("1.%d 2.%d",g_iOption_Base[0],g_iOption_Base[1])
server_print("1.%d 2.%d 3.%d",g_iOption_Race[OPTION_EXPLOSION_MAX_DAMAGE][RACE_UNDEAD],g_iOption_Race[OPTION_EXPLOSION_RANGE][RACE_UNDEAD],g_iOption_Race[OPTION_EXPLOSION_BLAST_RADIUS][RACE_UNDEAD])
if (file) fclose(file)
}
5)Открываем .sma и добавляем в plugin_init или plugin_precache
6)Создаем файл war3ft_option.ini(в соотв. папке)
Код
[Base]TEST VALUE = 10
TEST VALUE2 = 15
[Race:Undead]
EXPLOSION_MAX_DAMAGE = 51
EXPLOSION_RANGE = 301
EXPLOSION_BLAST_RADIUS = 251
7)Дальше используем мозг и изменяем на свое усмотрение.