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

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

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

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

Мануал Система логов (Arizona RP)

bogdasha12

Изучающий
Пользователь
Регистрация
1 Фев 2019
Сообщения
127
Лучшие ответы
0
Репутация
3
Здравствуйте, пользователи портала Pawno-Info!

Сейчас я покажу как сделать систему логирования действий как на Аризоне)

Все логи будут сохранятся в БД, где вы можете их смотреть или выводить на сайт)

Начинаем.

1. Для начала создадим в вашей базе таблицу с логами, она будет иметь всего 2 столбца (Дата и Текст)
PHP:
CREATE TABLE IF NOT EXISTS `logi` (
  `Дата` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `Текст` varchar(150) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
В будущем нам дату и время действия сохранять будет не нужно т.к когда будет записыватся действие то автоматически будет присваиватся дата и время)

2. Создадим stock
PHP:
stock aml(type,playerid,playerid2[],string[],money)
{
    new query[200];
	if(type == 1) format(query, sizeof(query), "INSERT INTO `logi` (Текст) VALUE ('Игрок %s получил деньги $%d по причине %s (Money:%d).')",переменная_имени_игрока(playerid),money,string,PlayerInfo[playerid][переменная_денег_игрока]);
	mysql_tquery(переменная_мускула, query);
}
Типов может сколько хочешь, это уже на ваше усмотрение, для примера мне понадобится только один тип запроса в базу, в свою очередь вы можете создать свои типы логов.

3. Как вы уже могли понять для примера я сделаю лог получение денег, возьмем к примеру получение денег за реферала.
Исчим свою функцию выдачи денег за реферала, после выдачи денег используйте эту функцию:
PHP:
aml(1,refid,"","за приведенного игрока",cost);
Вот как у меня это выглядит:
PHP:
publics MysqlReferalCheck(playerid)
{
	if(!cache_get_row_count(mysql)) return 1;
	new Referal[24], string[256];
	cache_get_row(0, 0, Referal, mysql);
	if(strcmp(Referal,"No Referal",false)!=0)
	{
		new refid = GetNameID(Referal);
		new cost = 300000;
		if(refid != INVALID_PLAYER_ID && IsPlayerLogged[refid])
		{
			GiveMoney(refid,cost);
			format(string, sizeof(string), "Вы получаете $%d за приведенного вами игрока %s",Name(playerid),cost);
			SendClientMessage(refid,COLOR_VALIK,string);
		}
		else
		{
			format(string, sizeof(string), "UPDATE `accounts` SET `Money`=`Money`+$d WHERE `NickName`='%s'", Referal,cost);
			mysql_tquery(mysql, string);
		}
		aml(1,refid,"","за приведенного игрока",cost);
	}
	return 1;
}
1 Параметр - Это тип логов.
2 Параметр - Это айди игрока который получил деньги.
3 Параметр - Это айди второго игрока,в данном случае не нужен. (Если будете юзать то нужно будет вставлять ник игрока (К примеру Name(id) ), не просто айди т.к у нас этот параметр считается как текстовый).
4 Параметр - Это причина получение денег.
5 Параметр - Это количество денег которое игрок получил.

Если будут вопросы - Пишите, на все постараюсь ответить)
 
Последнее редактирование:
Сверху Снизу