Добро пожаловать на Pawno-Info.Ru - Портал о программировании v2.0

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию своим коллегам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?

Реклама

Вы можете заказать рекламу для вашего сообщества, или проекта на нашем портале. Реклама - двигатель торговли.

Что нового?

Хотите в один клик узнать что нового пишут наши пользователи? Тогда Вам сюда.

Связь с Администрацией

Если у Вас есть вопрос по работе портала, который Вы не в силах решить сами? Тогда напишите нам об это тут.

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

bogdasha12

Участник форума
Пользователь
Регистрация
1 Фев 2019
Сообщения
116
Реакции
4
Возраст
24
Здравствуйте, пользователи портала 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 Параметр - Это количество денег которое игрок получил.

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

trevison123

Участник форума
Пользователь
Регистрация
3 Янв 2018
Сообщения
165
Реакции
6
а сайт где взять?
 

Jim_Tawer

Участник форума
Пользователь
Регистрация
27 Июн 2014
Сообщения
236
Реакции
1
Последнее редактирование:

Zhenia

Специалист
Пользователь
Регистрация
8 Сен 2014
Сообщения
825
Реакции
68
Адрес
Владивосток
Создание отдельной функции для отдельного лога? Что?
Код:
stock aml(type,playerid,playerid2[],string[],money)
Назвать таблицу logi вместо logs? Что?
Код:
CREATE TABLE IF NOT EXISTS `logi`
А в запросе мы и будем так и писать string значение в скобках без кавычек? Что?
Код:
"INSERT INTO `logi` (Текст) VALUE ('Игрок %s получил деньги $%d по причине %s (Money:%d).')"
А зачем нам нужен первичный ключ таблицы, мы же с ним работать не будем? Что?
Код:
(
  `Дата` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `Текст` varchar(150) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Не нужно создавать такие темы, если вы даже не знаете, как правильно обозначить имя таблицы.
 

bogdasha12

Участник форума
Пользователь
Регистрация
1 Фев 2019
Сообщения
116
Реакции
4
Возраст
24
Создание отдельной функции для отдельного лога? Что?
Код:
stock aml(type,playerid,playerid2[],string[],money)
Назвать таблицу logi вместо logs? Что?
Код:
CREATE TABLE IF NOT EXISTS `logi`
А в запросе мы и будем так и писать string значение в скобках без кавычек? Что?
Код:
"INSERT INTO `logi` (Текст) VALUE ('Игрок %s получил деньги $%d по причине %s (Money:%d).')"
А зачем нам нужен первичный ключ таблицы, мы же с ним работать не будем? Что?
Код:
(
  `Дата` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `Текст` varchar(150) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
Не нужно создавать такие темы, если вы даже не знаете, как правильно обозначить имя таблицы.
1. Не для каждого лога нужно функцию создавать, нужно делать тип в этой функции (type)
2. Если вам не нравится logi то можете назвать как захотите.
3. Ничего не понял.
4. Там нету первичного ключа. (PRIMARY KEY)
5. Ну а правда, зачем же пишете сюда?
 

Реклама

shape1
shape2
shape3
shape4
shape7
shape8
Сверху