Settings API
API to load/save settings in a Key+Value format that resembles Windows INI files (
http://en.wikipedia.org/wiki/INI_file).
What's new is you can store a variable amount of values in a single key, supporting the use of amxx dyamic arrays.
Use Case:
You want your plugin to use custom sounds and models, then allow users to change them. Previously it would require coding a section into the .sma file, making recompile necessary every time you want to change something. This API allows resources to be edited "externally" through the INI file instead.
Example:
Load admin knife models from file, store them in dynamic array. If section/key is not found, a new entry will be added automatically.
Code:
#define SETTINGS_FILE "plugin_resources.ini"
#define MODEL_MAX_LENGTH 64
new const default_model_vknife[] = { "models/v_knife.mdl" } // Default model
new Array:g_array_models_admin_vknife
public plugin_precache()
{
g_array_models_admin_vknife = ArrayCreate( MODEL_MAX_LENGTH, 1 )
if ( !amx_load_setting_string_arr( SETTINGS_FILE, "Admin Models", "V_KNIFE", g_array_models_admin_vknife ) )
{
amx_save_setting_string( SETTINGS_FILE, "Admin Models", "V_KNIFE", default_model_vknife )
ArrayPushString( g_array_models_admin_vknife, default_model_vknife )
}
}
File syntax:
Code:
; Add custom admin models here
[Admin Models]
V_KNIFE = models/admin/v_knife_dragon.mdl , models/admin/v_knife_nyan.mdl , models/admin/v_knife3.mdl
Usage:
Download files below into your scripting folder, then do:
#include <amx_settings_api>.