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

pokypka20

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

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

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
в начале карты одно из значений выбиралось автоматически
PHP:
public OnConfigsExecuted()
{
	new random[] = {500, 600, 700, 800}, x = GetRandomInt(1, 4);
	ServerCommand("sv_gravity %d", random[x]);
}
Ещё проще создать c рандомом от 500 до 800. Т.е, может быть, например, 671 и т.п.
PHP:
public OnConfigsExecuted()
{
	ServerCommand("sv_gravity %d", GetRandomInt(500, 800));
}
OnMapStart() здесь не желателен.
 
Последнее редактирование:

pokypka20

Участник
Сообщения
244
Реакции
31
PHP:
public OnConfigsExecuted()
{
	new random[] = {500, 600, 700, 800}, x = GetRandomInt(1, 4);
	ServerCommand("sv_gravity %d", random[x]);
}
Ещё проще создать c рандомом от 500 до 800. Т.е, может быть, например, 671 и т.п.
PHP:
public OnConfigsExecuted()
{
	ServerCommand("sv_gravity %d", GetRandomInt(500, 800));
}
OnMapStart() здесь не желателен.

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

Vit_ amin

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

pokypka20

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

Понимаеш логически и я могу предположить как оно должно быть, но у меня нет глубоких знаний всех переменных и я не знаю как это реализовать.
 

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
У меня в конфиге sv_skyname (или что то другое, где выбирается модель)
А конкретнее? Если после sv_skyname идут буквы, а не цифры, например, путь к модели, то это делается несколько иначе, через строку String.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #8
pokypka20,
PHP:
decl String:sBuffer[PLATFORM_MAX_PATH];
BuildPath(Path_SM, sBuffer, sizeof(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(hFile, sBuffer, sizeof(sBuffer)))
		{
			TrimString(sBuffer);
			if (sBuffer[0]) PushArrayString(hArray, sBuffer);
		}
		
		GetArrayString(hArray, GetRandomInt(0, (GetArraySize(hArray)-1)), sBuffer, sizeof(sBuffer));
		ServerCommand(sBuffer);
		CloseHandle(hArray);
	} else SetFailState("Не удалось открыть файл %s", sBuffer);
	CloseHandle(hFile);
}
 
Последнее редактирование:

AlmazON

Не путать с самим yand3xmail
Сообщения
5,099
Реакции
2,755
else SetFailState("Не удалось открыть файл %s", sBuffer);
Разве такое возможно, если
было сделано для всего массива? Файл в любом случае уже будет.
PHP:
public OnConfigsExecuted()
{
	decl String:sBuffer[PLATFORM_MAX_PATH];
	BuildPath(Path_SM, sBuffer, sizeof(sBuffer), "cfg/test.cfg");
	if(FileExists(sBuffer))
	{
		new Handle:hFile = OpenFile(sBuffer, "r"), Handle:hArray = CreateArray();
		while (!IsEndOfFile(hFile) && ReadFileLine(hFile, sBuffer, sizeof(sBuffer)))
		{
			TrimString(sBuffer);
			if (sBuffer[0]) PushArrayString(hArray, sBuffer);
		}
		GetArrayString(hArray, GetRandomInt(0, (GetArraySize(hArray)-1)), sBuffer, sizeof(sBuffer));
		CloseHandle(hFile);
		ServerCommand(sBuffer);
	}
	else SetFailState("Файла %s не существует!", sBuffer);
}
 
Последнее редактирование:

pokypka20

Участник
Сообщения
244
Реакции
31
Проверил, плагин включился, но настройки не загружаются.
 
Сверху Снизу