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

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

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

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

Мануал Система оповещения новостей /motd (GalaxY | MySQL)

Статус
В этой теме нельзя размещать новые ответы.
Доброго времени суток всем пользователям и гостям данного форума. Думаю каждый знает проект GalaxY и какие там системы.
В последнее время стал замечать, что много пользователей интересуются системой /motd и ее ищут. На портале pawno-info не нашел подобной темы, по этому постараюсь донести до вас подобную команду и изложить ее в более правильном виде. Так, давайте приступим.
Сразу хотелось бы отметить, что данная система на MySQL и расписывать как подключить БД, создать для нее таблицы и плагины не буду.​

Итак, для начала добавим:

PHP:
enum mo
{
	mNews[144],
};

new MOTDINFO[22][mo];
PHP:
mNews[144]
Это размер сообщения, которое равно 144 символов.
PHP:
new MOTDINFO[22][mo];
Переменная, которая определяет, сколько фракций могут использовать данную команду, в моем случае 21+1 ячейка = 22

Едем дальше, создадим саму команду:
PHP:
	if(strcmp(cmd, "/motd", true) == 0)
	{
		if(IsPlayerConnected(playerid)) return true;
		if(PlayerInfo[playerid][pLeader] == 0) return SendClientMessage(playerid, COLOR_GREY, "Нет прав на использование команды.");
		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)) return SendClientMessage(playerid, COLOR_GREY, "Используйте: /motd [текст]");
		strmid(MOTDINFO[PlayerInfo[playerid][pLeader]][mNews], result, 0, strlen(result), 255);
		SendClientMessage(playerid,-1,"Вы установили новость для членов фракции.");
		SaveMotd();
	}
В public OnPlayerLogin:
PHP:
	if(PlayerInfo[playerid][pLeader] > 0 && PlayerInfo[playerid][pMember] > 0 && strlen(MOTDINFO[PlayerInfo[playerid][pMember]][mNews]) > 1)
	{
		new str[145];
		format(str,sizeof(str),"Сообщение дня: %s",MOTDINFO[PlayerInfo[playerid][pMember]][mNews]);
		SendClientMessage(playerid,COLOR_YELLOW,str);
	}
Думаю тут объяснять ничего не нужно, итак понятно что это вывод сообщения при заходе игрока.
И уже где то в конце мода сам public действий.
PHP:
stock SaveMotd()
{
	new str[300];
    for(new h = 1; h < sizeof(MOTDINFO); h++)
    {
		format(str, sizeof(str), "UPDATE `motd` SET `News`='%s' WHERE id = %d",MOTDINFO[h][mNews],h);
		mysql_function_query(1, str, false, "", "");
	}
	return true;
}
Ссылка на скриншот |

Ну вот и все. Не забудьте создать таблицу в Базе Данных, иначе сохранения и загрузки сообщений не будет.
Система полностью рабочая, проверял сам.
Всем спасибо, автор данного урока я (Алексей).

Если кто будет делать корректирования и улучшения, буду рад.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу