Иконка ресурса

Game Name Changer 0.0.1

Нет прав для скачивания
CS 
C++:
#pragma semicolon 1

#include <amxmodx>
#include <reapi>
#include <json>

new const PLUGIN_VERSION[] = "0.0.1";
new const CONFIG_PATH[] = "/GameName/GameName.json";

#define MAX_GAME_NAME_LENGTH 64

enum Config_Struct {
    bool:DYNAMIC_ENABLED,
    Float:CHANGE_INTERVAL,
    Array:NAMES_ARRAY
};

new SettingsConfig[Config_Struct],
    g_NamePtr;

public plugin_init() {
    register_plugin("[ReAPI] Game Name Changer", PLUGIN_VERSION, "mIDnight");

    SettingsConfig[NAMES_ARRAY] = ArrayCreate(MAX_GAME_NAME_LENGTH);

    LoadJsonConfig();

    if(SettingsConfig[DYNAMIC_ENABLED]) {
        SetGameName(true);
        set_task(SettingsConfig[CHANGE_INTERVAL], "task_Change", .flags = "b");
    }
    else {
        SetGameName(false);
    }
}

public plugin_end() {
    ArrayDestroy(SettingsConfig[NAMES_ARRAY]);
}

SetGameName(bool:dynamicMode) {
    new game_name[MAX_GAME_NAME_LENGTH];
    new index = dynamicMode ? g_NamePtr : 0;
 
    ArrayGetString(SettingsConfig[NAMES_ARRAY], index, game_name, charsmax(game_name));
    set_member_game(m_GameDesc, game_name);

    if(dynamicMode) {
        if(++g_NamePtr >= ArraySize(SettingsConfig[NAMES_ARRAY])) {
            g_NamePtr = 0;
        }
    }
}

public task_Change() {
    SetGameName(true);
}

LoadJsonConfig() {
    new path[PLATFORM_MAX_PATH];
    get_localinfo("amxx_configsdir", path, charsmax(path));
    add(path, charsmax(path), CONFIG_PATH);

    new JSON:settings = json_parse(path, true, true);
    if(settings == Invalid_JSON) {
        set_fail_state("[GameName] JSON syntax error in config file (%s)", path);
    }

    if(!json_is_object(settings)) {
        set_fail_state("[GameName] JSON config must contain a valid object (%s).", path);
        json_free(settings);
    }

    SettingsConfig[DYNAMIC_ENABLED] = json_object_get_bool(settings, "game_name_settings.dynamic_enabled", .dot_not = true);
    SettingsConfig[CHANGE_INTERVAL] = json_object_get_real(settings, "game_name_settings.change_interval", .dot_not = true);

    new JSON:names_array = json_object_get_value(settings, "game_name_settings.game_names", .dot_not = true);

    if(json_is_array(names_array)) {
        new buffer[MAX_GAME_NAME_LENGTH];
        new num_names = json_array_get_count(names_array);
  
        for(new i = 0; i < num_names; i++) {
            new JSON:entry = json_array_get_value(names_array, i);
      
            if(json_is_string(entry) && json_get_string(entry, buffer, charsmax(buffer)) && buffer[0]) {
                ArrayPushString(SettingsConfig[NAMES_ARRAY], buffer);
            }
            json_free(entry);
        }
    }

    if(names_array != Invalid_JSON) {
        json_free(names_array);
    }
    json_free(settings);

    server_print("[GameName] Configuration loaded successfully.");
}
Назад
Верх