Доступ к готовым решениям

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

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

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

Мануал Система помощников(Хелперов) mySQL R8 | YCMD

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

Alex Westbrook

Специалист
Добрый день уважаемые пользователи Pawno-Info!
Я, как непрофессиональный скриптер - решил сделать что-нибудь интересное!
Поскольку я видел похожие мануалы на данном портале , то решил сделать что-то наподобие, но на mySQL и с использованием YCMD!

Итак, начнем...

Для начала в Массив с аккаунтом введем переменную "helper", добавим ее в самый конец, смотреться это будет примерно так:

Следующим нашим шагом будет добавление в сохранение и загрузку данной переменной

В загрузку с аккаунтом:

Сам текст:
PHP:
PlayerInfo[playerid][helper] = cache_get_field_int(0,"helper", bases);
bases - замените на свое!

Далее добавим переменную в сохранение!(Как правило SaveAccount(playerid);)

Сам текст:
PHP:
`helper`='%d'
Некоторые новички зададутся вопросом - "Почему-же именно '%d' ,а не '%s' ". Объясню - %s присваивается только тогда, когда есть текст, а наша переменная содержит в себе всего-лишь цифру.

Далее в том же стоке/паблике (SaveAccount(playerid);) добавим загрузку этой переменной из массива, а именно

Сам текст:
PHP:
PlayerInfo[playerid][helper],
Я ее добавил после pMail , поскольку у меня они объявляются в таком порядке

Все, пока основное готово.

Теперь нам следует записать данную переменную в дамп с аккаунтом.
Первым шагом в данном пункте будет переход в phpmyadmin. Ссылка:​
PHP:
http://localhost/tools/phpmyadmin
Далее мы выбираем базу, в которой находится наш дамп! В моем случае это nonamedatabase


Открываем, и выбираем структуру с аккаунтом:


Жмем на вкладку "Структура"


Теперь мы видим все "Это", теперь мы установим все так, как у меня на рисунке, и нажмем OK


Далее , мы видим такое окно. В нем вписываем так, как у меня:


Все, структура готова к использованию данной переменной.

Теперь нам предстоит сделать самое легкое! Это сама команда!
PHP:
YCMD:newhelp(playerid, params[], help)
{
    new string[144];
    new Nick1[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Nick1, sizeof(Nick1));
    if(!strcmp(Nick1, "Cheif_Amore", true))
    {
        if(sscanf(params, "ui", params[0], params[1])) return SendClientMessage(playerid, COLOR_RED, "Используйте: /newhelp [ID] [Level]");
        else if(params[0] == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "Некорректный ID!");
        else
        PlayerInfo[playerid][helper] = params[1];
        format(string,144,"Администратор %s установил вам %d уровень хелпера!", Nick1, params[1]);
        SendClientMessage(params[0],COLOR_GREEN,string);
        format(string,144,"Вы назначили игрока %s  хелпером %d Уровня!",Nick1, params[1]);
        SendClientMessage(playerid,COLOR_GREEN,string);
    }
    return 1;
}
Далее мы добавим команду, которой "Хелперы" могут отвечать на "Вопросы"
PHP:
YCMD:ot(playerid,params[],help)
{
    if(PlayerInfo[playerid][helper] >= 1)
    {
        if(sscanf(params, "ds[32]", params[0], params[1])) return SendClientMessage(playerid,COLOR_GRAD,"Используйте: /ans [id] [текст]");
        new string[144];
        format(string,144,"Ответ от хелпера %s:[%d] %s", PlayerInfo[playerid][pNick], playerid, params[1]);
        PlayerPlaySound(params[0], 1150, 0,0,0);
        SendClientMessage(params[0],0xe49b0fFF,string);
        format(string,144,"[Ответ]{e49b0f}Хелпер %s для %s: %s", PlayerInfo[playerid][pNick], PlayerInfo[params[0]][pNick], params[1]);
        SendHelperMessage(COLOR_RED,string,1);
    }
    return 1;
}
Далее нам необходимо создать команду , которой мы будем отсылать хелперам вопросы
PHP:
YCMD:question(playerid,params[],help)
{
	ShowPlayerDialog(playerid, 10, DIALOG_STYLE_INPUT, "Вопрос Хелперам", "{ffffff}Введите ваш вопрос для хелперов!\nВ ближайшее время вам должен отметить один из помощников сервера!\nЕсли вам никто не отвечает, то напишите в репорт Администраторам!","Ввод","Отмена");
}
Далее, создадим case 10 , или сделайте его самым последним, и замените на свою цифру
PHP:
case 10:
{
    if(!response) return 1;
    if(!strlen(inputtext)) return ShowPlayerDialog(playerid, 10, DIALOG_STYLE_INPUT, "Вопрос Хелперам", "{ffffff}Введите ваш вопрос для хелперов!\nВ ближайшее время вам должен отметить один из помощников сервера!\nЕсли вам никто не отвечает, то напишите в репорт Администраторам!","Ввод","Отмена");
    new string[144];
    format(string,144,"[REPORT]{ea7500}От Игрока: %s[%d]: %s",PlayerInfo[playerid][pNick],playerid,inputtext);
    SendHelperMessage(COLOR_GREEN,string,1);
    format(string,144,"[Сообщение]:%s[%d]: %s", PlayerInfo[playerid][pNick], playerid, inputtext);
    SendClientMessage(playerid, COLOR_GREEN, string);
    SendClientMessage(playerid, COLOR_WHITE, "Ваша жалоба отправлена администраторам сервера!");
}
Прошу прощения за табуляцию. Далее, для тех, кто не понял, что такое "SendHelperMessage"
Добавил желательно в конец мода:
PHP:
forward SendHelperMessage(color,const string[],level);
public SendHelperMessage(color,const string[],level)
{
	for(new i = 0; i < MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i))
		{
			if (PlayerInfo[i][helper] >= level)
			{
				SendClientMessage(i, color, string);
				printf("%s", string);
			}
		}
	}
	return 1;
}
Вот пожалуй и все! :)
Ах, да! Чуть не забыл! Вот ваши макросы(ну или цвета)
PHP:
#define COLOR_RED      0xff0000FF
#define COLOR_GREEN   0x33CC00AA

Если кого-то это заинтересовало, то в скоро времени могу написать /hc(хелпер чат) /hh(помощь по командам хелперов), и еще несколько фишек!

С вами Был Alex(Martin) Westbrook aka Cheif_Amore!
Автор: я!
За любой помощью обращайтесь ниже, или в скайп: cheifka
Тема первая, прошу строго не судить)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу