Выбор случайных настроек для карты

Тема в разделе "Программирование / Скриптинг", создана пользователем pokypka20, 9 июл 2014.

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Подскажите, как можно реализовать подобное:
    Есть конфиг: test.txt в нём настройки.
    sv_gravity "800"
    sv_gravity "700"
    sv_gravity "600"
    sv_gravity "500"

    Как сделать чтобы в начале карты одно из значений выбиралось автоматически, если можно пример.
    (Тоесть в начале карты из конфига выбирается только 1 строка и устанавливается)
     
  2. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.524
    Симпатии:
    1.973
    PHP:
    public OnConfigsExecuted()
    {
        new 
    random[] = {500600700800}, GetRandomInt(14);
        
    ServerCommand("sv_gravity %d"random[x]);
    }
    Ещё проще создать c рандомом от 500 до 800. Т.е, может быть, например, 671 и т.п.
    PHP:
    public OnConfigsExecuted()
    {
        
    ServerCommand("sv_gravity %d"GetRandomInt(500800));
    }
    OnMapStart() здесь не желателен.
     
    Последнее редактирование: 9 июл 2014
    pokypka20 нравится это.
  3. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    У меня в конфиге sv_skyname (или что то другое, где выбирается модель) как я через гет рандом это зделаю? я поэтому и спросил для примера как сделать случайную строку из кода.
     
  4. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    Просчитываешь циклом каждую строку в файле (когда счетчик крутиться создай переменную для подсчета количества строк в данном файле), потом выбери случайное число между 1 и количеством строк в файле. А потом через функции делай.
    P.S. Я не много SourcePawn подзабыл поэтому не могу сказать какие функции ..
     
  5. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Понимаеш логически и я могу предположить как оно должно быть, но у меня нет глубоких знаний всех переменных и я не знаю как это реализовать.
     
  6. Vit_ amin

    Vit_ amin BotManager001

    Сообщения:
    1.055
    Симпатии:
    345
    while (!IsEndOfFile) i += 1 ...
     
  7. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.524
    Симпатии:
    1.973
    А конкретнее? Если после sv_skyname идут буквы, а не цифры, например, путь к модели, то это делается несколько иначе, через строку String.
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.988
    Симпатии:
    2.986
    pokypka20,
    PHP:
    decl String:sBuffer[PLATFORM_MAX_PATH];
    BuildPath(Path_SMsBuffersizeof(sBuffer), "cfg/test.cfg");
    if(
    FileExists(sBuffer))
    {
        new 
    Handle:hFile OpenFile(sBuffer"r");
        if (
    hFile != INVALID_HANDLE)
        {
            new 
    Handle:hArray CreateArray();
            while (!
    IsEndOfFile(hFile) && ReadFileLine(hFilesBuffersizeof(sBuffer)))
            {
                
    TrimString(sBuffer);
                if (
    sBuffer[0]) PushArrayString(hArraysBuffer);
            }
            
            
    GetArrayString(hArrayGetRandomInt(0, (GetArraySize(hArray)-1)), sBuffersizeof(sBuffer));
            
    ServerCommand(sBuffer);
            
    CloseHandle(hArray);
        } else 
    SetFailState("Не удалось открыть файл %s"sBuffer);
        
    CloseHandle(hFile);
    }
     
    Последнее редактирование: 10 июл 2014
    pokypka20 нравится это.
  9. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.524
    Симпатии:
    1.973
    Разве такое возможно, если
    было сделано для всего массива? Файл в любом случае уже будет.
    PHP:
    public OnConfigsExecuted()
    {
        
    decl String:sBuffer[PLATFORM_MAX_PATH];
        
    BuildPath(Path_SMsBuffersizeof(sBuffer), "cfg/test.cfg");
        if(
    FileExists(sBuffer))
        {
            new 
    Handle:hFile OpenFile(sBuffer"r"), Handle:hArray CreateArray();
            while (!
    IsEndOfFile(hFile) && ReadFileLine(hFilesBuffersizeof(sBuffer)))
            {
                
    TrimString(sBuffer);
                if (
    sBuffer[0]) PushArrayString(hArraysBuffer);
            }
            
    GetArrayString(hArrayGetRandomInt(0, (GetArraySize(hArray)-1)), sBuffersizeof(sBuffer));
            
    CloseHandle(hFile);
            
    ServerCommand(sBuffer);
        }
        else 
    SetFailState("Файла %s не существует!"sBuffer);
    }
     
    Последнее редактирование: 10 июл 2014
    pokypka20 нравится это.
  10. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Всем спасибо я протестирую напишу.
     
  11. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Проверил, плагин включился, но настройки не загружаются.
     
  12. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.524
    Симпатии:
    1.973
    Это к R1KO. У него мистическая система чтения строк из файлов - только у него и работает.
    Я так файлы не считываю.