Изменение плагина CSS Bank / Parachute

Eseth

Участник
Сообщения
75
Реакции
8
Всем доброго времени суток, хотел бы именить плагины CSS Bank и SM Parachute таким образом чтобы ими могли пользоваться только игроки чьи SteamID прописаны в whitelist. Сделал бы сам, но знаний в Source Pawn мне не хватает, было бы хорошо выучить хотябы основы, ну а до тех пор прошу помощи от знатоков.

Заранее спасибо!


P.S. Думаю многим эта идеея понравится, особенно тем кто например хочет дать зарегистрированным на сайте / подписчикам Steam групп сервера дополнительные преймущества чтобы другие игроки тоже регистрировались на сайтах. :)
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
PHP:
#include <sourcemod>

new Handle:Array = INVALID_HANDLE;

new ArraySize = 0;

public OnPluginStart()
{
	Array = CreateArray(255, 0);
}

public OnMapStart()
{
	new Handle:file = OpenFile("addons/sourcemod/configs/whitelist.cfg", "r");

	if (file == INVALID_HANDLE) 
	{ 
		LogError("Не удалось открыть файл");
	}
	else
	{
		decl String:line[150];
		while (!IsEndOfFile(file) && ReadFileLine(file, line, sizeof(line)))
		{
			TrimString(line);
			PushArrayString(Array, line);
		}

		ArraySize = GetArraySize(Array);

		CloseHandle(file);
	}
}

Остается это только добавить в код
PHP:
#include <sourcemod>

new bool:Protect[MAXPLAYERS + 1] = {false, ...};

public OnPluginStart()
{
	RegConsoleCmd("test", CallBack);
}

public OnClientPutInServer(client)
{
	if (Protect[client])
	{
		Protect[client] = false;
	}
}

public Action:CallBack(client, args)
{
	if (client > 0)
	{
		// Получаем SteamID
		decl String:SteamID[32], String:Line[32];
		GetClientAuthString(client, SteamID, sizeof(SteamID));

		// Циклом получаем все SteamID из списка
		new i = 0;
		while (i < ArraySize && !Protect[client])
		{
			// Если строка найдена, устаналиваем переменную в значение true и останаливаем цикл
			if (strcmp(SteamID, GetArrayString(Array, i, Line, sizeof(Line)), false) == 0)
			{
				Protect[client] = true;
			}

			i++;
		}

		// Если игрок в списке найден, разрешаем пользоваться командой
		if (Protect[client])
		{
			// Остальной код
		}
	}

	return Plugin_Handled;
}

255 - размер ячейки
 
Последнее редактирование:

Eseth

Участник
Сообщения
75
Реакции
8
The End Is Near..., Большое спасибо за труд! Надеюсь это будет полезно и многим другим пользователям. ;)
 
Последнее редактирование:

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
PHP:
#include <sourcemod>

new Handle:Array = INVALID_HANDLE;

new ArraySize = 0;

public OnPluginStart()
{
	Array = CreateArray(255, 0);
}

public OnMapStart()
{
	new Handle:file = OpenFile("addons/sourcemod/configs/whitelist.cfg", "r");

	if (file == INVALID_HANDLE) 
	{ 
		LogError("Не удалось открыть файл");
	}
	else
	{
		decl String:line[150];
		while (!IsEndOfFile(file) && ReadFileLine(file, line, sizeof(line)))
		{
			TrimString(line);
			PushArrayString(Array, line);
		}

		ArraySize = GetArraySize(Array);

		CloseHandle(file);
	}
}

Остается это только добавить в код
PHP:
#include <sourcemod>

new bool:Protect[MAXPLAYERS + 1] = {false, ...};

public OnPluginStart()
{
	RegConsoleCmd("test", CallBack);
}

public OnClientPutInServer(client)
{
	if (Protect[client])
	{
		Protect[client] = false;
	}
}

public Action:CallBack(client, args)
{
	if (client > 0)
	{
		// Получаем SteamID
		decl String:SteamID[32], String:Line[32];
		GetClientAuthString(client, SteamID, sizeof(SteamID));

		// Циклом получаем все SteamID из списка
		new i = 0;
		while (i < ArraySize && !Protect[client])
		{
			// Если строка найдена, устаналиваем переменную в значение true и останаливаем цикл
			if (strcmp(SteamID, GetArrayString(Array, i, Line, sizeof(Line)), false) == 0)
			{
				Protect[client] = true;
			}

			i++;
		}

		// Если игрок в списке найден, разрешаем пользоваться командой
		if (Protect[client])
		{
			// Остальной код
		}
	}

	return Plugin_Handled;
}

255 - размер ячейки

всё равно промазал

PHP:
	if (client > 0)
	{
		decl String:SteamID[32];
		if (GetClientAuthString(client, SteamID, sizeof(SteamID)) && FindStringInArray(Array, SteamID) != -1)
		{
			// Игрок найден
		}
	}
 

Eseth

Участник
Сообщения
75
Реакции
8
FrozDark, Я уже запутался. :mda: Не знаю что удалять а что оставлять... :)


Может тупой вопрос, но что подразумивается под "Остальной код"?
 
Последнее редактирование:

Eseth

Участник
Сообщения
75
Реакции
8
Вроде сделал всё, но при компиляции выдаёт ошибки:

//// csgobank.sp
// csgobank/commands.sp(239) : warning 217: loose indentation
// csgobank/commands.sp(239) : error 029: invalid expression, assumed zero
// csgobank/commands.sp(239) : warning 221: label name "Action" shadows tag name
// csgobank/commands.sp(239) : error 017: undefined symbol "CallBack"
// csgobank/commands.sp(249) : error 035: argument type mismatch (argument 2)
// csgobank/commands.sp(253) : error 029: invalid expression, assumed zero
// csgobank/commands.sp(255) : error 001: expected token: ",", but found ";"
// csgobank/commands.sp(268) : warning 217: loose indentation
// csgobank/commands.sp(270) : warning 225: unreachable code
// csgobank/commands.sp(270) : warning 217: loose indentation
// csgobank/commands.sp(239) : warning 203: symbol is never used: "Action"
// F:\Servers\Plugins Compilation\Sourcemod\addons\sourcemod\scripting\csgobank.sp(324) : error 021: symbol already defined: "OnPluginStart"
// F:\Servers\Plugins Compilation\Sourcemod\addons\sourcemod\scripting\csgobank.sp(325) : error 017: undefined symbol "CallBack"
// F:\Servers\Plugins Compilation\Sourcemod\addons\sourcemod\scripting\scripting\csgobank.sp(337) : e
rror 021: symbol already defined: "OnPluginStart"
// F:\Servers\Plugins Compilation\Sourcemod\addons\sourcemod\scripting\scripting\csgobank.sp(411) : error 021: symbol already defined: "OnMapStart"
//
// 9 Errors.
//
// Compilation Time: 0,37 sec
// ----------------------------------------

Press enter to exit ...

Может я что-то не туда воткнул... Кто может выложить готовый исходник для CSS Bank, а то мучаюсь зря. :(
 

Вложения

  • cssbank.sp
    31.7 КБ · Просмотры: 5
  • commands.sp
    8.8 КБ · Просмотры: 1
  • database.sp
    15.1 КБ · Просмотры: 1
  • menus.sp
    17.8 КБ · Просмотры: 0
  • money.sp
    10.1 КБ · Просмотры: 1

Eseth

Участник
Сообщения
75
Реакции
8
Большую часть ошибок удалось исправить. Осталась одна ошибка и одно предупреждение:

bank/commands.sp(63) : error 035: argument type mismatch (argument 2)
bank/commands.sp(73) : warning 217: loose indentation

Помогите доделать/исправить, пожалуйста.



P.S. Прикрепил исходники с которыми работал. Первый - исходник плагина, второй - include commands.sp
 

Вложения

  • bank.sp
    23.9 КБ · Просмотры: 6
  • commands.sp
    9.3 КБ · Просмотры: 6

Eseth

Участник
Сообщения
75
Реакции
8
The End Is Near..., Я так и знал. Хотябы попробовал. Дело это совсем новое для меня поэтому, надеюсь, имею право на ошибки. ;)
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #12
Eseth, на такие ошибки "warning 217: loose indentation" не обращай внимания.
 
Сверху Снизу