Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: Регистраторы Семей - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Scr ][ GF ]
Регистраторы Семей
Оценка: ***** 1 Голосов

#1
Пользователь офлайн   Romzes 

  • © Pawn-Wiki.Ru
  • Вставить ник
  • Раскрыть информацию
Возможно это и не новое , но новичкам думаю будет интересно..

В общем все знаю что на rp серверах есть такое понятие как семья ( не банда/группировка и тд ) , а семья ( мама, папа, тетя , дядя , брат, сестра ну понятно вообщем )
Вот я сейчас и расскажу вам как сделать что-то типо фракции которая занимается официальным оформлением семей.

Используем мы систему /families слотов ( напомню что в каждом слоте есть ограничение по кол-во людей состоящих в семье , а точнее 40 рыл , когда слот заполняется администратору нужно ввести /setfamily и количество участников скидывается на 0, НО ЭТО НЕ ЗНАЧИТ ЧТО ВСЕХ КИКАЕТ !!! )

Так же в стандарте дается всего 10 слотов , посмотреть как расширить их кол-во можно [Тут]

_______________

Все команда :

Семья :

/f чат
/adjust invite id - принять игрока
/adjust uninvite id - выгнять
/adjust name - назначить имя своей семье ( точне фамилию )
/adjust spawn - выбрать спавн ( необходимо стоять на желанном месте )
/adjust rank номер ранга ID - дать ранг
/adjust MOTD - ввести сообщение выводимое членам семьи при входе в игру

Регистраторы :

/frc - чат
/FRegs - Регистраторы онлайн
/makeFamReg - Назначить регистратором
/allowcreation - Выдать лидерку семьи / создать семью
/deletecreation - Удалить семью ( снимает лидера, кикает всех участников )


________________

Первоначально нам необходимо создать в

enum pInfo


переменную

pFamreg


Дальше найдем :

public OnPlayerConnect(playerid)


и добавил после

	PlayerInfo[playerid][pAdmin] = 0;


	PlayerInfo[playerid][pFamreg] = 0;


Дальше находим :

public OnPlayerDisconnect


После :

	PlayerInfo[playerid][pAdmin] = 0;


Добавляем :

	PlayerInfo[playerid][pFamreg] = 0;


Дальше находим :

public OnPlayerRegister


После :

		iniSetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]
);


Добавляем :

		iniSetInt(File,"FamRegLevel",PlayerInfo[playerid][pFamreg]
);


Дальше находим :

public OnPlayerUpdate_GF(playerid)


После :

			iniSetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]
);


Добавляем :

iniSetInt(File,"FamRegLevel",PlayerInfo[playerid][pFamreg]);

Дальше находим :

public OnPlayerLogin


После :

	    iniGetInt(File,"AdminLevel",PlayerInfo[playerid][pAdmin]
);


Добавляем :

iniGetInt(File,"FamRegLevel",PlayerInfo[playerid][pFamreg]);

С технической частью ВСЕ !

Создали понятие Регистраторы, и сохранение в аккаунт уровня регистратора.

____________

Теперь создадим команды необходимые :

Список регистраторов онлайн :

	if (strcmp(cmd, "/FRegs", true) == 0)
	{
        if(IsPlayerConnected(playerid))
	    {
				SendClientMessage(playerid, COLOR_LIGHTRED, "==[Регистраторы онлайн]==");
				for(new i = 0; i < MAX_PLAYERS; i++)
				{
					if(IsPlayerConnected(i))
					{
					    if(PlayerInfo[i][pFamreg] >= 1)
					    {
							GetPlayerName(i, sendername, sizeof(sendername));
							format(string, 256, " {ffcc00}%s [lvl: %d]", sendername, PlayerInfo[i][pFamreg]);
							SendClientMessage(playerid, COLOR_GRAD2, string);
						}
					}
				}
			}
		}
		return 1;
	}


_____________

Теперь сделаем команду назначения в должность :

	if(strcmp(cmd, "/makeFamReg", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "* Используй : /makeFmReg [id] [level(1-2)]");
				return 1;
			}
			new para1;
			new level;
			para1 = ReturnUser(tmp);
			tmp = strtok(cmdtext, idx);
			level = strval(tmp);
			if (PlayerInfo[playerid][pAdmin] >= 3)//Проверка на админку
			{
			    if(IsPlayerConnected(para1))
			    {
			        if(para1 != INVALID_PLAYER_ID)
			        {
						GetPlayerName(para1, giveplayer, sizeof(giveplayer));
						GetPlayerName(playerid, sendername, sizeof(sendername));
						PlayerInfo[para1][pFamreg] = level;
						format(string, sizeof(string), "*** Администратор назначил вас Регистратором %s", sendername);//сообщение игроку
						SendClientMessage(para1, COLOR_LIGHTBLUE, string);
						format(string, sizeof(string), "*** Вы сделали %s регистратором", giveplayer);//Сообщение вам
						SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
					}
				}
			}
			else
			{
				SendClientMessage(playerid, COLOR_GRAD1, "* Нет доступа *");
			}
		}
		return 1;
	}


_____________

Теперь сделаем ЧАТ для них ( это уже по желанию ) :

    if(strcmp(cmd, "/FamilyRegistratorChat", true) == 0 || strcmp(cmd, "/frc", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            if (PlayerInfo[playerid][pFamreg] >= 1)
            {
                GetPlayerName(playerid, sendername, sizeof(sendername));
                new length = strlen(cmdtext);
                while ((idx < length) && (cmdtext[idx] <= ' '))
                {
                    idx++;
                }
                new offset = idx;
                new result[64];
                while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
                {
                    result[idx - offset] = cmdtext[idx];
                    idx++;
                }
                result[idx - offset] = EOS;
                if(!strlen(result))
                {
                    SendClientMessage(playerid, COLOR_GRAD2, "*Введите: (/frc) [текст]");
                    return 1;
                }
                format(string, sizeof(string), "* %d Регистратор %s: %s", PlayerInfo[playerid][pFamreg], sendername, result);
                SendHelperMessage(COLOR_GREEN, string);
                printf("*%s: %s", sendername, result);
            }
        }
        return 1;
    }  


____

Теперь подправим команду создания семьи :

Находим её [/allowcreation] и удаляем , вместо неё вставляем вот эту :

	if(strcmp(cmd, "/allowcreation", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(PlayerInfo[playerid][pFamreg] >= 1)
	        {
	            tmp = strtok(cmdtext, idx);
				if(!strlen(tmp)) {
					SendClientMessage(playerid, COLOR_WHITE, "* Используйте : /allowcreation [FamilyNr] [playerid/PartOfName]");
					return 1;
				}
				new family = strval(tmp);
				if(family < 1 || family > 10) { SendClientMessage(playerid, COLOR_GREY, "Можно использовать только от 1 до 10!"); return 1; }
				if(PlayerInfo[playerid][pFamreg] >= 1 && family > 10) { SendClientMessage(playerid, COLOR_GREY, " Только от 1 до 10 !"); return 1; }
	            tmp = strtok(cmdtext, idx);
				if(!strlen(tmp)) {
					SendClientMessage(playerid, COLOR_WHITE, "* Используйте: /allowcreation [FamilyNr] [playerid/PartOfName]");
					return 1;
				}
				giveplayerid = ReturnUser(tmp);
				if(IsPlayerConnected(giveplayerid))
				{
				    if(giveplayerid != INVALID_PLAYER_ID)
				    {
				        family -= 1;
				        if(FamilyInfo[family][FamilyTaken] == 1)
				        {
				            SendClientMessage(playerid, COLOR_GREY, "   Семья уже создана !" );
				            return 1;
				        }
				        GetPlayerName(playerid, sendername, sizeof(sendername));
				        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
				        format(string, sizeof(string), "* Вы сделали %s лидером семьи %d.",giveplayer,family);
				        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
				        if(PlayerInfo[playerid][pFamreg] == 5)
				        {
				            format(string, sizeof(string), "* Регистратор %s назначил вас лидером семьи %d.",sendername,family);
				        	SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
				        }
				        format(string, sizeof(string), "%s",giveplayer);
				        strmid(FamilyInfo[family][FamilyLeader], string, 0, strlen(string), 255);
				        FamilyInfo[family][FamilyMembers] ++;
				        FamilyInfo[family][FamilyTaken] = 1;
				        PlayerInfo[giveplayerid][pFMember] = family;
				        SaveFamilies();
				    }
				}
				else
				{
                    SendClientMessage(playerid, COLOR_GREY, " Неверный id.");
                    return 1;
				}
	        }
	        else
	        {
	            SendClientMessage(playerid, COLOR_GREY, "   Вы не регистартор !");
	            return 1;
	        }
	    }
	    return 1;
	}


_________

Теперь сделаем команду удалить семью :

Находим чуть ниже [/deletecreation]

И заменяем её этой :

	if(strcmp(cmd, "/deletecreation", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(PlayerInfo[playerid][pFamreg] >= 1)
	        {
	            tmp = strtok(cmdtext, idx);
				if(!strlen(tmp)) {
					SendClientMessage(playerid, COLOR_WHITE, "* Используйте: /deletecreation [FamilyNr]");
					return 1;
				}
				new family = strval(tmp);
				if(family < 1 || family > 10) { SendClientMessage(playerid, COLOR_GREY, "Можно использовать только от 1 до 10!"); return 1; }
				if(PlayerInfo[playerid][pFamreg] >= 1 && family > 10) { SendClientMessage(playerid, COLOR_GREY, " Только от 1 до 10 !"); return 1; }
				family -= 1;
				if(FamilyInfo[family][FamilyTaken] != 1)
				{
				    SendClientMessage(playerid, COLOR_GREY, " Нет такой семьи !");
				    return 1;
				}
				ClearFamily(family);
				SaveFamilies();
	        }
	        else
	        {
	            SendClientMessage(playerid, COLOR_GREY, "  Вы не регистратор !");
	            return 1;
	        }
	    }
	    return 1;
	}


____________

Ну вот все готово вроде .

Автор : [ArM]Master1

О каких либо недочетах, ошибках, прошу написать в сюда, исправлю..
0

#2
Пользователь офлайн   Vanya_Scripter_New 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
MySQL нужен?
0

#3
Пользователь офлайн   Island 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияVanya_Scripter_New (29 Апрель 2017 - 23:48) писал:

MySQL нужен?

Цитата

Отправлено 20 Сентябрь 2011 - 22:18

о каком MySQL говарить можно?
и прежде чем поднимать темы дату смотри!
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей