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

Impulse72

Участник
Сообщения
244
Реакции
163
C-подобный:
#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!");
   }
}

Ты такой прикольный.
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,868
tiger_by, а как то покороче через shuf?
cat mapcycle.txt | shuf -n1

UPDATE
PHP:
#!/bin/sh
mc=cstrike/cfg/mapcycle.txt
./srcds_run -console -game cstrike +map $(cat $mc | shuf -n1) +ip 0.0.0.0 -port 27015 +maxplayers 20
 

tiger_by

Гл. Админ SourceGames.RU
Сообщения
631
Реакции
278
Оу, какая крутаческая команда!
 

KorDen

Atra esterní ono thelduin!
Сообщения
2,142
Реакции
1,424

А для форточек надо на .NET написать прогу для рандома, прикрутить ее к запуску сервера, и еще настроить там под утилиту типа Forlix SRCDS Manager, чтобы он не ругался и чтобы вся эта канитель работала... :-D
Короче как всегда все запущенно :fuck:
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,868
для форточек хоть и запущено, но как бы кое что есть:
PHP:
@echo off
cls
echo Protecting srcds from crashes...
echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter.
title Public Server Watchdog
:srcds
echo (%time%:-:-:%date%) srcds started.
For /F "Tokens=1,2 Delims=[]" %%i In ('Find /V /N "" "cstrike/cfg/mapcycle.txt"') Do Set $_%%i=%%j
For /F "Tokens=*" %%i In ('^<"cstrike/cfg/mapcycle.txt" Find /V /C ""') Do Set NUM=%%i
  Set /A RND=1+%RANDOM%/(32768/%NUM%)
  If %RND% GTR %NUM% Set /A RND-=1
  Call Echo %%$_%RND%%%
start /wait srcds.exe -nocrashdialog -console -game cstrike +map <ВОТ СЮДА> +maxplayers 20 -port 27015
echo (%time%:-:-:%date%) WARNING: srcds closed or crashed, restarting.
goto srcds
взято отсюда
надо как то к строке запуска прикрутить:)

Оффтоп
 

CTe6eJIeK_vRn

Участник
Сообщения
2,114
Реакции
1,868
Вот для форточек рабочее решение:
PHP:
@Echo Off
SetLocal EnableDelayedExpansion
CLS
Echo Protecting srcds from crashes...
Echo If you want to close srcds and this script, close the srcds window and type Y depending on your language followed by Enter.
title Public Server Watchdog
:srcds
Set i=-1
For /F "usebackq eol= delims=" %%A In ("./cstrike/cfg/mapcycle.txt") Do (
    Set /A i+=1
    Set Maps[!i!]=%%A
)
Echo !Random!!Random!>nul
Set /A RndNum=(!i!+1)*!Random!/32768
Set Map=!Maps[%RndNum%]!
Echo [%time:~,8%  %date%] selected random map on start: "!Map!".
Echo [%time:~,8%  %date%] srcds started.
Start /wait srcds.exe -nocrashdialog -console -game cstrike +map !Map! +maxplayers 25 -port 27015
Echo [%time:~,8%  %date%] WARNING: srcds closed or crashed, restarting.
GoTo srcds
Спасибо пользователю Anonymоus с форума forum.oszone.net

Для Linux решение здесь от tiger_by и здесь от меня
 
Сверху Снизу