Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Система /setleader MySQL r8

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

Sanek_Matvienko

Компетентный
Всем привет!
Сегодня я выложу систему лидерки из моего мода.
Пожалуй начнем.

Идем в pInfo
PHP:
pSetLeader,
pMember,
pRang
Далее идем в LoginCallback(playerid, password[]) у вас это возможно просто OnPlayerLogin.
PHP:
PlayerInfo[playerid][pSetLeader] = cache_get_field_content_int(0,"setleader");
PlayerInfo[playerid][pMember] = cache_get_field_content_int(0,"member");
PlayerInfo[playerid][pRang] = cache_get_field_content_int(0,"rang");
Теперь переходим в SavePlayer, опять же, у вас она может называться по другому.
PHP:
PlayerInfo[playerid][pSetLeader],
PlayerInfo[playerid][pMember],
PlayerInfo[playerid][pRang],
Там же должна быть строчка, что-то типа этого:
Код:
mysql_format(CHDL,query,512,"UPDATE `"TABLE_ACCOUNT"` SET `level`='%d',`sex`='%d',`model`='%d' WHERE `Name`='%s'",
Сюда тоже добавляем, и получается примерно как у меня:
HTML:
mysql_format(CHDL,query,512,"UPDATE `"TABLE_ACCOUNT"` SET `level`='%d',`sex`='%d',`model`='%d',`setleader`='%d',`member`='%d',`rang`='%d' WHERE `Name`='%s'",
Далее идем в public OnPlayerSpawn(playerid)
PHP:
if(PlayerInfo[playerid][pSetLeader] == 0 || PlayerInfo[playerid][pMember] == 0)
	{
		if(PlayerInfo[playerid][pLevel] >= 1 && PlayerInfo[playerid][pLevel] < 3)
 		{
			SetPlayerPos(playerid,1760.7921,-1900.1312,13.5636);
			SetPlayerFacingAngle(playerid,270.02);
			SetPlayerInterior(playerid, 0);
			SetPlayerVirtualWorld(playerid, 0);
			return true;
		}
	}
Если игрок не лидер, он спавнится на бомжатнике

Теперь идем в конец мода, и туда:
PHP:
CMD:r(playerid,params[])
{
	if(sscanf(params, "s[84]", params[0])) return SendClientMessage(playerid, -1, "Комманда была использована не верно. Пишите: /r [text]");
	new string[145];
	switch(PlayerInfo[playerid][pMember])
	{
		case 1:
		{
			switch(PlayerInfo[playerid][pRang])
			{
				case 10: format(string, sizeof(string),"[R] Шериф %s: %s", GN(playerid),params[0]);
				case 9: format(string, sizeof(string),"[R] Полковник %s: %s", GN(playerid),params[0]);
				case 8: format(string, sizeof(string),"[R] Подполковник %s: %s", GN(playerid),params[0]);
				case 7: format(string, sizeof(string),"[R] Майор %s: %s", GN(playerid),params[0]);
				case 6: format(string, sizeof(string),"[R] Лейтенант %s: %s", GN(playerid),params[0]);
				case 5: format(string, sizeof(string),"[R] Мл.Лейтенант %s: %s", GN(playerid),params[0]);
				case 4: format(string, sizeof(string),"[R] Офицер %s: %s", GN(playerid),params[0]);
				case 3: format(string, sizeof(string),"[R] Прапорщик %s: %s", GN(playerid),params[0]);
				case 2: format(string, sizeof(string),"[R] Сержант %s: %s", GN(playerid),params[0]);
				case 1: format(string, sizeof(string),"[R] Кадет %s: %s", GN(playerid),params[0]);
			}
		}
		default: SendClientMessage(playerid, -1, "{ff0000}[X]{FFFFFF} Вам не доступна данная команда");
	}
	SendRadioMessage(PlayerInfo[playerid][pMember], COLOR_BLUE, string);
	return true;
}
И туда же:
PHP:
CMD:setleader(playerid, params[])
{
    if(sscanf(params, "ud", params[0], params[1])) return SendClientMessage(playerid, COLOR_WHITE, "Комманда была использована не верно. Пишите: /setleader [id] [№ раздела]"); }
    static fracname[100], string[150];
	{
        if(PlayerInfo[playerid][pSex] == 1)
		{
        	if(params[1] == 1) fracname = "Los Santos Police Deportament", Player[params[0]][pModel] = 288;
		}
		else
		{
        	if(params[1] == 1) fracname = "Los Santos Police Deportament", Player[params[0]][pModel] = 219;
		}
	}
    format(string, sizeof(string), "{FFFF00}Вы назначили %s руководить организацией \"%s\"", PlayerName(playerid), fracname);
    SendClientMessage(playerid, COLOR_ORANGE, string);
    format(string, sizeof(string), "{FFFF00}Администратор %s назначил вас руководить организацией \"%s\"", Player[playerid][pSendername], fracname);
    SendClientMessage(params[0], COLOR_ORANGE, string);
    PlayerInfo[params[0]][pSetLeader] = params[1];
    PlayerInfo[params[0]][pMember] = params[1];
    PlayerInfo[params[0]][pRang] = 10;
    SetPlayerToTeamColor(params[0]);
    SetPlayerSkin(params[0], PlayerInfo[params[0]][pModel]);
    mysql_format(CHDL,query, 512,"UPDATE `"TABLE_ACCOUNT"` SET `setleader`='%d',`model`='%d',`member`='%d',`rang`='%d' WHERE `Name` = '%s'", PlayerInfo[params[0]][pSetLeader], PlayerInfo[params[0]][pModel], PlayerInfo[params[0]][pMember], PlayerInfo[params[0]][pRang], PlayerName(params[0]));
 	mysql_function_query(CHDL, query, false, "","d", params[0]);
    return true;
}
Опять же идет в OnPlayerSpawn
PHP:
    if(PlayerInfo[playerid][pSetLeader] == 1 || PlayerInfo[playerid][pMember] == 1)
	{
	    SetPlayerPos(playerid, 2496.1079,-1709.6730,1014.7422);
		SetPlayerInterior(playerid, 3);
		SetPlayerVirtualWorld(playerid, 1);
		SetPlayerFacingAngle(playerid, 0);
		SetCameraBehindPlayer(playerid);
	    SetPlayerSkin(playerid, PlayerInfo[playerid][pModel]);
	}
В конец мода:
PHP:
stock GN(playerid)
{
	new name[MAX_PLAYER_NAME];
	GetPlayerName(playerid, name, sizeof(name));
	return name;
}
stock SendRadioMessage(fracion, color, string[])
{
	foreach(Player,i)
	{
		switch(PlayerInfo[i][pMember])
		{
			case 1:
			{
				if(PlayerInfo[i][pMember] == fracion || PlayerInfo[i][pSetLeader] == fracion)
				{
					SendClientMessage(i, color, string);
				}
			}
        }
	}
	return true;
}
CMD:invite(playerid,params[])
{
	if(sscanf(params, "ud", params[0])) return SendClientMessage(playerid, -1, "Используйте: /invite [playerid]");
    if(PlayerInfo[playerid][pSetLeader] == 0) return SendClientMessage(playerid,-1,"Вы не лидер организации");
	if(PlayerInfo[params[0]][pMember] != 0) return SendClientMessage(playerid,-1,"Игрок уже состоит в организации");
	PlayerInfo[params[0]][pMember] = PlayerInfo[playerid][pMember];
	new string[145];
	switch(PlayerInfo[params[0]][pMember])
	{
		case 1:
		{
            if(PlayerInfo[params[0]][pSex] == 1)
			{
				PlayerInfo[params[0]][pModel] = 265;
			}
			else PlayerInfo[params[0]][pModel] = 219;
			PlayerInfo[params[0]][pRang] = 1;
			format(string, sizeof(string),"Вас приняли в организацию Los Santos Police Deportament. Лидер организации %s.", GN(playerid));SendClientMessage(params[0],COLOR_SERVER,string);
			format(string, sizeof(string),"Вы приняли %s в свою организацию.", GN(params[0]));SendClientMessage(playerid,COLOR_SERVER,string);
		}
	}
	return true;
}
CMD:uninvite(playerid,params[])
{
	if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, "Используйте: /uninvite [playerid]");
    if(PlayerInfo[playerid][pSetLeader] == 0) return SendClientMessage(playerid,-1,"Вы не лидер организации");
    if(params[0] == playerid) return SendClientMessage(playerid,-1,"Вы не можете уволить самого себя");
	if(PlayerInfo[params[0]][pMember] != PlayerInfo[playerid][pMember]) return SendClientMessage(playerid,-1,"Игрок не состоит в вашей организации");
    PlayerInfo[params[0]][pMember] = 0;
    PlayerInfo[params[0]][pSetLeader] = 0;
    PlayerInfo[params[0]][pRang] = 0;
    PlayerInfo[params[0]][pModel] = 0;
	new string[145];
    SendClientMessage(params[0],COLOR_SERVER,"Вы были уволены из организации.");
	format(string, sizeof(string),"Вы уволили %s из своей организации.", GN(params[0]));SendClientMessage(playerid,COLOR_YELLLOW,string);
	return true;
}
Вроде как все :)
Если есть какие либо вопросы, или ошибки, пишите в скайп: vadim.kostashhuk
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу