Получение из файла

Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
C++:
    new iMusicPlaylist[][] = {
    {"sound/musics/end_round/sound_1.mp3"},
    {"sound/musics/end_round/sound_2.mp3"},
    {"sound/musics/end_round/sound_3.mp3"},
    {"sound/musics/end_round/sound_4.mp3"},
    {"sound/musics/end_round/sound_5.mp3"},
    {"sound/musics/end_round/sound_6.mp3"},
    {"sound/musics/end_round/sound_7.mp3"},
    {"sound/musics/end_round/sound_8.mp3"},
    {"sound/musics/end_round/sound_9.mp3"},
    {"sound/musics/end_round/sound_10.mp3"},
    {"sound/musics/end_round/sound_11.mp3"}
}
Можно ли как-нибудь получать эти данные из файла например. Если да, можно пример или где глянуть как это сделать.
 

AUF

Сообщения
91
Реакции
8
если про MP3 разговор то вот
new const END_ROUND_SOUND[][] =
{
{"musics/end_round/sound_1.mp3"},
{"musics/end_round/sound_2.mp3"},
{"musics/end_round/sound_3.mp3"},
{"musics/end_round/sound_4.mp3"},
{"musics/end_round/sound_5.mp3"},
{"musics/end_round/sound_6.mp3"},
{"musics/end_round/sound_7.mp3"},
{"musics/end_round/sound_8.mp3"},
{"musics/end_round/sound_9.mp3"},
{"musics/end_round/sound_10.mp3"},
{"musics/end_round/sound_11.mp3"}
}

public plugin_precache()
{
for (new i = 0; i < sizeof(END_ROUND_SOUND); i ++)
precache_generic(fmt("sound/%s", END_ROUND_SOUND)
}

RandomSound = random_num(0, charsmax(END_ROUND_SOUND))

client_cmd(client, "mp3 play sound/%s"), RandomSound)
ну примерно так. или тебе именно из файла надо? типа ini ?
 

AUF

Сообщения
91
Реакции
8
через ini
new end_round_sound[256]

public plugin_precache()
{
new filepatch[256]
formatex(filepatch, charsmax(filepatch), "addons/amxmodx/configs/end_round_sound.ini")
if (file_exists(filepatch))
{
new buffer[190], txtlen
read_file(filepatch, 0, buffer, charsmax(buffer), txtlen)

trim(buffer)
formatex(end_round_sound, charsmax(end_round_sound), buffer)
precache_generic(fmt("sound/%s", end_round_sound)
}
}
Если где то ошибся поправьте) не пинайте.
 
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
@AUF,да нужно через ini. Чуть позже проверю ваш код.
 

AUF

Сообщения
91
Реакции
8
cqkjd, можно еще это проверить
new const INI_PATH[] = "end_round_sound.ini"

public plugin_precache()
{
new g_szIniFile[MAX_RESOURCE_PATH_LENGTH]
new iLen = get_localinfo("amxx_configsdir", g_szIniFile, charsmax(g_szIniFile))
formatex(g_szIniFile[iLen], charsmax(g_szIniFile) - iLen, "%s/%s", g_szIniFile[iLen], INI_PATH)
new buff[MAX_USER_INFO_LENGTH], line, file = fopen(g_szIniFile, "rt")

if (!file)
return set_fail_state("File ^"%s^" not found!", g_szIniFile)

while(!feof(file))
{
fgets(file, buff, charsmax(buff)); trim(buff)
#define is_comments(%0) (%0[0] != EOS || %0[0] != ';' || %0[0] != '/' || %0[0] != '#')
if (is_comments(buff) && parse(buff, end_round_sound[line], charsmax(end_round_sound)))
{
line ++
}
precache_generic(fmt("sound/%s", buff)
}
return fclose(file)
}

new RandomSound = random_num(0, charsmax(end_round_sound))

client_cmd(client, "mp3 play sound/%s"), RandomSound)
могу ошибиться так как с телефона пишу. я просто примеры выдрал из плагинов) может поймешь)
 
Сообщения
397
Реакции
221
Помог
13 раз(а)
AUF, return перед set_file_state не требуется, так же как и перед fclose.

cqkjd, в архиве лежит тестовый плагин с комментариями(так же его код под спойлером), и файл.
Файл расположить по пути: addons/amxmodx/configs/test.ini.

Код:
#include <amxmodx>
#define FILE_DIR "addons/amxmodx/configs/test.ini"
public plugin_init() {
    register_plugin("test","0","b0t.");
    Func__CheckFile();
}
public Func__CheckFile() {
    //Ставим условие, что если нету файла отправляем сообщение и останавливаем работу плагина.
    if(!file_exists(FILE_DIR))
        set_fail_state("Не удалось подгрузить файл: %s",FILE_DIR);
    //Массив для хранения строки из файла
    new szData[256];
    //Массив для хранения дескриптора файла
    //Второй агрумент -- мод. В нашем случае требуется только чтение
    new f = fopen(FILE_DIR,"r");
    //Бесконечный цикл. Если точнее, то цикл будет повторятся пока не будет истиной условие в скобках
    //А именно не достигнем конца файла.
    while(!feof(f)) {
        //Читаем строку из файла и записываем в массив
        fgets(f,szData,charsmax(szData));
        //Удаляем пробелы в начале и конце строки
        trim(szData);
        //Условие:
        //Если нулевой символ, после того как мы убрали все пробелы в начале и конце файла является пустым:
        //  End Of String*
        //игнорируем, т.к. строка пуста. Дальнейшие действия не нужны
        if(szData[0] == EOS)
            continue;
        
        //Не задавался задачей написать, что-то рабочее...
        //Поэтому просто вывод строки из файла в консоль сервера.
        server_print("File: %s",szData);
    }
    //Закрываем файл после действия с ним
    fclose(f);
}
 

AUF

Сообщения
91
Реакции
8
b0t., хз как лайк поставить) я ваще бомж походу и даже этого не могу сделать на этом сайте) ну или функционал не изучиЛ) хз) куда не ткни я бомж( даж в лс написать тут нельзя что то спросить(
 
Сообщения
3,593
Реакции
1,576
Помог
141 раз(а)
Последнее редактирование:
  • Нравится
Реакции: DEVV
Сообщения
36
Реакции
1
Обратите внимание, если вы хотите заключить сделку с этим пользователем, он заблокирован
b0t., благодарю.
 
Сообщения
333
Реакции
290
Помог
9 раз(а)
С вашими кодами файл хоть *.xyz может быть. Зачем сразу превращать его в ini, для которого есть свои довольно неплохие парсеры.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу