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

Описание: Уроки по скриптингу
Модератор: SJplayer

Layk M
Автор темы, Прапорщик
Прапорщик
Аватара
Layk M
Автор темы, Прапорщик
Прапорщик
Сообщения: 170
Зарегистрирован: 4 июня 2013
С нами: 10 лет 9 месяцев

#1 Layk » 6 октября 2019, 15:29

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

1. Для начала создадим в вашей базе таблицу с логами, она будет иметь всего 2 столбца (Дата и Текст)

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `logi` (
  `
Датаtimestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `
Текстvarchar(150NOT NULL
ENGINE=InnoDB DEFAULT CHARSET=cp1251;   

В будущем нам дату и время действия сохранять будет не нужно т.к когда будет записываться действие то автоматически будет присваиваться дата и время)

2. Создадим stock

Код: Выделить всё

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

Типов может сколько хочешь, это уже на ваше усмотрение, для примера мне понадобится только один тип запроса в базу, в свою очередь вы можете создать свои типы логов.

3. Как вы уже могли понять для примера я сделаю лог получение денег, возьмем к примеру получение денег за реферала.
Ищем свою функцию выдачи денег за реферала, после выдачи денег используйте эту функцию:

Код: Выделить всё

aml(1,refid,"","за приведенного игрока",cost);  

Вот как, к примеру, это выглядит:

Код: Выделить всё

publics MysqlReferalCheck(playerid)
{
    if(!
cache_get_row_count(mysql)) return 1;
    new 
Referal[24], string[256];
    
cache_get_row(00Referalmysql);
    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(stringsizeof(string), "Вы получаете $%d за приведенного вами игрока %s",Name(playerid),cost);
            
SendClientMessage(refid,COLOR_VALIK,string);
        }
        else
        {
            
format(stringsizeof(string), "UPDATE `accounts` SET `Money`=`Money`+$d WHERE `NickName`='%s'"Referal,cost);
            
mysql_tquery(mysqlstring);
        }
        
aml(1,refid,"","за приведенного игрока",cost);
    }
    return 
1;
}   

1 Параметр - Это тип логов.
2 Параметр - Это айди игрока который получил деньги.
3 Параметр - Это айди второго игрока,в данном случае не нужен. (Если будете юзать то нужно будет вставлять ник игрока (К примеру Name(id) ), не просто айди т.к у нас этот параметр считается как текстовый).
4 Параметр - Это причина получение денег.
5 Параметр - Это количество денег которое игрок получил.
Изображение


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 2 гостя