[Вопрос] Нахождение в массиве чего-то

Статус
В этой теме нельзя размещать новые ответы.

Steve_Stage

Интересующийся
Пользователь
Регистрация
12 Июл 2019
Сообщения
35
Реакции
2
PHP:
enum pInfo {
	pPass[50+1], pMail[60+1], pMoney, pLevel, pAge, pNational, pSkin, pSex, pID, pReferal[MAX_PLAYER_NAME+1], pDateReg[10+1], pExp, pDeath, pNockout, pItem1,
	pItem2, pItem3, pItemAmmo1, pItemAmmo2, pItemAmmo3, pItemSelect, pAdmin, pBan, pBanTime, pBanReason, pBanGiver
}
new
	player[MAX_PLAYERS][pInfo];
PHP:
public OnPlayerConnect(playerid)
{
 	GetPlayerName(playerid, player_name[playerid], MAX_PLAYER_NAME);
	static
	    fmt_str[] = "SELECT * FROM `accounts` WHERE `Nickname` = '%s' LIMIT 1";
	new
		string[sizeof(fmt_str)+MAX_PLAYER_NAME-1];
		
	mysql_format(connect_mysql, string, sizeof(string), fmt_str, GetName(playerid));
	mysql_function_query(connect_mysql, string, true, "@_PlayerCheck", "d", playerid);
	Clear(playerid);
	return true;
}
PHP:
CMD:ban(playerid, params[]) // [0] - id, [1] time, [2] - reason
{
	if(player[playerid][pAdmin] == 0)
	{
	    SCM(playerid, COLOR_RED, !"Вы не Администратор!");
	    return false;
	}
	if(player[playerid][pAdmin] == 1 && player[playerid][pAdmin] == 2)
	{
	    SCM(playerid, COLOR_RED, !"Ваш уровень админ-доступа слишком мал для бана игроков!");
	    return false;
	}
	if(player[playerid][pAdmin] >= 3)
	{
	    new len_reason = strlen(params[2]),
	        len_time = strlen(params[1]);
	    if(len_reason < 1 || len_reason > 50)
		{
	 		SendClientMessage(playerid, COLOR_YELLOW, !"{00C0FF}Длина причины бана не должна быть {F81414}меньше 1 и больше 50 символов!");
	 		return true;
		}
	    if(len_time < 1 || len_time > 30)
		{
	 		SendClientMessage(playerid, COLOR_YELLOW, !"{00C0FF}Максимальный срок бана - 1 месяц (30 дней)!");
	 		return true;
	 	}
	    if(sscanf(params,"dds", params[0], params[1], params[2]))
		{
			SendClientMessage(playerid, COLOR_YELLOW, !"Вы ничего не ввели!");
			return false;
		}
	    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_YELLOW, !"Игрок не в сети!");
	    player[params[0]][pBan] = 1;
	    player[params[0]][pBanTime] = params[1];
	    player[params[0]][pBanReason] = params[2];
	    player[params[0]][pBanGiver] = GetName(playerid); // Проблемная строчка
	    SavePlayer(params[0], "Ban", player[playerid][pBan], "d");
	    SavePlayer(params[0], "BanTime", player[playerid][pBanTime], "d");
	    SavePlayer(params[0], "BanReason", player[playerid][pBanReason], "s");
	    SavePlayer(params[0], "BanGiver", player[playerid][pBanGiver], "s");
    }
    return true;
}
И выводит ошибку о том, что в проблемной строке что-то должно находиться в массиве. Объясните, почему я не могу использовать данную конструкцию прямо так?
 

unreal.

Специалист
Пользователь
Регистрация
15 Окт 2015
Сообщения
678
Реакции
415
Cвою строку замени на это:
PHP:
strmid(player[params[0]][pBanGiver],GetName(playerid),0,sizeof(MAX_PLAYER_NAME));
Нельзя выдавать string таким способом как у тебя
 

Serg_Brain

• Администратор •
Команда форума
Administrator
Регистрация
15 Янв 2012
Сообщения
3,931
Реакции
257
Закрыто, проблема решена.
 
Статус
В этой теме нельзя размещать новые ответы.

Пользователи онлайн

Реклама

Сверху