Случайная стартовая карта

Тема в разделе "Общие вопросы", создана пользователем garry, 26 май 2013.

  1. garry

    garry rozie ❤

    Сообщения:
    67
    Симпатии:
    44
    Можно ли сделать случайно выбранную сервером стартовую карту?
     
  2. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    Как вариант занести все карты в массив, из массива выбрать карту, переменную в значение true, дабы каждую смену карты не выбиралась карта
     
    garry нравится это.
  3. Vaio

    Vaio

    Сообщения:
    628
    Симпатии:
    218
    Если есть доступ к сроке запуска (сервер не на хостинге), то можно такое написать на bash (рандомно выбирать сроку из файла mapcycle и занести в переменную map, затем в параметрах srcds_run написать +map ${map}).
     
    garry и FrozDark нравится это.
  4. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    The End Is Near..., зачем переменную если есть событие server_spawn?
     
    garry нравится это.
  5. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    Impulse72
    Протесть
    PHP:
    #include <sourcemod>

    public OnPluginStart()
    {
        
    HookEvent("server_spawn"Event_OnServerSpawn);

        
    RegConsoleCmd("test"CallBack);
    }

    public 
    Event_OnServerSpawn(Handle:event, const String:name[], bool:silent)
    {
        
    LogError("Server Spawn (event)");
    }

    public 
    Action:CallBack(clientargs)
    {
        
    LogError("Command Enter");

        
    ServerCommand("changelevel de_dust2");
        return 
    Plugin_Handled;
    }
     
  6. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355
  7. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    892
    Симпатии:
    659
    Ну и? Отследить нельзя событием, по-моему
     
  8. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    Зачем тогда событие, если его нельзя отловить?
     
  9. garry

    garry rozie ❤

    Сообщения:
    67
    Симпатии:
    44
    А есть что-то типо включение на той карте, на которой упал сервер?
     
  10. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    garry, где-то видел тут. Поищи.

    UPD

    The End Is Near...,

    PHP:
    #include <sourcemod>

    public OnPluginStart()
    {
        
    HookEvent("round_start"Event_OnServerSpawn);

    }

    public 
    Event_OnServerSpawn(Handle:event, const String:name[], bool:silent)
    {
        
    ServerCommand("changelevel de_dust");
        
    UnhookEvent("round_start"Event_OnServerSpawn);
    }
     
  11. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355

    Код бредовый. Получается цикл. Каждый раз при начале раунда карта будет меняться на de_dust.
     
  12. KorDen

    KorDen Atra esterní ono thelduin! Ньюсмейкер

    Сообщения:
    2.194
    Симпатии:
    1.398
    wanted241, OnPluginStart выполняется только при запуске сервера либо при обнаружении изменения плагина. При смене карты он не выполняется, если плагин не изменялся. Вроде так
     
  13. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    Жалко людей, что у тебя плагины заказывают. Преде чем умничать надо мат. часть повторять. Как так можно код из 3 строчек прочитать я хз, научите.

     
  14. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355
    Ты не умничай особо тут. Ошибся - бывает. Получше тебя SourceMod знаю. Да и вообще, я это уже прочитал. Долго ты искал инфу.
     
  15. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    http://m.makeyourmeme.ru/3/35/1052598.jpg

    Всегда забавляли людишки, которые по момему нику определяют инфу. В данном слдучае о том, на сколько я знаю SourceMod. Пошла кстати инфа, что плагины пишутся не на SourceMode'e, а на SourcePawn'е.

    Опять радуешь способностям Ванги. Я как увидел ответ, так ответил сам. А вкладки со всеми евентами у меня открыты и заблокированы от закрытия уже очень давно, так что я ничего не искал. Снова промах.
     
    Vaio нравится это.
  16. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355

    Спорить с тобой не буду. Смысла не вижу. Лучше промолчу.

    А по делу. Достаточно просто в OnPluginStart() менять карту. И не надо никаких других событий задевать.
     
  17. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170
    Дружище, это уже третий фейл. Завязывай. За тебя скомпилил, проверь.
     

    Вложения:

  18. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355
    Код:
    #include <sourcemod>
    
    public OnPluginStart()
    {
       new g_mapFileSerial = -1;
       new arraySize = ByteCountToCells(33);
       new Handle:g_MapList = CreateArray(arraySize);
       if (ReadMapList(g_MapList, g_mapFileSerial, "default", MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_MAPSFOLDER) != INVALID_HANDLE)
       {
    		if (g_mapFileSerial == -1)
    		{
    			LogError("Unable to create a valid map list.");
    		}
                    decl String:sMap[256];
                    GetArrayString(g_MapList, GetRandomInt(0, GetArraySize(g_MapList)-1), sMap, sizeof(sMap));
                    ForceChangeLevel(sMap, "Random map!");
       }
    }
    
     
    Последнее редактирование: 26 май 2013
  19. Impulse72

    Impulse72

    Сообщения:
    246
    Симпатии:
    170

    ServerCommand("changelevel \"%s\""); надо переменную в конце дописать, не?

    Что если я скажу тебе, что даже если ты вот этот плагин
    Код:
    public OnPluginStart()
    {
        ServerCommand("changelevel de_dust");
    }
    запустишь, то будет фейл? Я думал человек, который идеально знает SourceMod, должен знать, что до того как сервер не стартанул карту на нем менять нельзя. Для полного доминирования выложу скрин.
     
  20. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355
    Код:
    #include <sourcemod>
    
    public OnPluginStart()
    {
       new g_mapFileSerial = -1;
       new arraySize = ByteCountToCells(33);
       new Handle:g_MapList = CreateArray(arraySize);
       if (ReadMapList(g_MapList, g_mapFileSerial, "default", MAPLIST_FLAG_CLEARARRAY|MAPLIST_FLAG_MAPSFOLDER) != INVALID_HANDLE)
       {
    		if (g_mapFileSerial == -1)
    		{
    			LogError("Unable to create a valid map list.");
    		}
                    decl String:sMap[256];
                    GetArrayString(g_MapList, GetRandomInt(0, GetArraySize(g_MapList)-1), sMap, sizeof(sMap));
                    ForceChangeLevel(sMap, "Random map!");
       }
    }