Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя
Показано с 1 по 10 из 39
  1. #1
    Аватар для admln
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.06.2017
    Сообщений
    12
    Репутация:
    0 ±

    Система логирования.

    Здравствуйте, уважаемые пользователи. Подскажите, как можно реализовать систему логирования для каждого игрока?
    К примеру, игрок: Pro_Pawn.

    Игрок заходит в магазин и покупает там телефон, который стоит 450$.
    соответственно в scriptfiles должен появиться файл Pro_Pawn.ini и там должно быть

    21.06.0017 - 17:57:40 - покупка ( -450 вирт ) ( было: 450 вирт, стало: 0 вирт )

    - - - Добавлено - - -

    или как-то на мускул можно?

  2. #2
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    PHP код:

    log
    text[] ) {
        new 
    Filehandle fopen("file.txt"io_append) ;
        
    fwritehandletext ) ;
        
    fclosehandle );

    Собственно юзаете log(ваш текст) там, где нужно

  3. Пользователь сказал cпасибо:
    admln (21.06.2017)
  4. #3
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    На MySQL проще и лучше. Просто создаёшь 2 таблицы: одна для перечисления типов логирования, а вторая для самих логов.
    Структура первой таблицы:
    PHP код:
    log_type_id log_type_name

    log_type_id 
    //- AUTO_INCREMENT
    log_type_name //- название для типа логирования 
    Например:
    log_type_id log_type_name
    1 Покупка телефона
    2 Передача денег
    3 Продажа авто

    А уже вторая таблица будет иметь столько столбцов, сколько тебе нужно будет. Но вот основные:
    PHP код:
    id account_id log_type_id log_message log_date

    id 
    //- AUTO_INCREMENT
    account_id //- ID игрока, которого логируем
    log_type_id //- ID типа логов, которые берём из первой таблицы
    log_message //- сам текст сообщения (то самое "покупка ( -450 вирт ) ( было: 450 вирт, стало: 0 вирт )")
    log_date //- дата логирования 
    Сюда же можешь добавить количество денег на руках при каждом случае и прочую инфу, которая тебе пригодится в отдельном виде.

    Первая таблица нужна для удобства извлечения данных из второй таблицы (можешь конечно её не создавать и держать все типы логов в голове, но потом самому будет неудобно вспоминать какой тип что означает).
    Собственно, заполнение происходит обычным INSERT запросом
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  5. Пользователь сказал cпасибо:
    admln (21.06.2017)
  6. #4
    Аватар для admln
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.06.2017
    Сообщений
    12
    Репутация:
    0 ±
    Спасибо всем!

  7. #5
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    На MySQL проще и лучше. Просто создаёшь 2 таблицы: одна для перечисления типов логирования, а вторая для самих логов.
    Структура первой таблицы:
    PHP код:
    log_type_id log_type_name

    log_type_id 
    //- AUTO_INCREMENT
    log_type_name //- название для типа логирования 
    Например:
    log_type_id log_type_name
    1 Покупка телефона
    2 Передача денег
    3 Продажа авто

    А уже вторая таблица будет иметь столько столбцов, сколько тебе нужно будет. Но вот основные:
    PHP код:
    id account_id log_type_id log_message log_date

    id 
    //- AUTO_INCREMENT
    account_id //- ID игрока, которого логируем
    log_type_id //- ID типа логов, которые берём из первой таблицы
    log_message //- сам текст сообщения (то самое "покупка ( -450 вирт ) ( было: 450 вирт, стало: 0 вирт )")
    log_date //- дата логирования 
    Сюда же можешь добавить количество денег на руках при каждом случае и прочую инфу, которая тебе пригодится в отдельном виде.

    Первая таблица нужна для удобства извлечения данных из второй таблицы (можешь конечно её не создавать и держать все типы логов в голове, но потом самому будет неудобно вспоминать какой тип что означает).
    Собственно, заполнение происходит обычным INSERT запросом
    Таблица для нескольких типов? Зачем? Я не думаю, что они у него будут добавляться со скорость летящего самолета. Хорошо, если 1 в месяц (
    это для уже работающего проекта ). А так их может быть всего 10-15. Советую не делать, как сказал деймос.

  8. #6
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Таблица для нескольких типов? Зачем? Я не думаю, что они у него будут добавляться со скорость летящего самолета. Хорошо, если 1 в месяц (
    это для уже работающего проекта ). А так их может быть всего 10-15. Советую не делать, как сказал деймос.
    Только так делать и надо. И что, что будет 10-15 типов, какое это имеет значение? Без присвоения логам типов, ты не сможешь нормально их сортировать (придётся писать тяжёлые запросы, парсящие строки).

    Хотя, я бы, наверное, добавил ещё поле вроде log_data_id (типа как здесь) + ассоциативную таблиц для связи. Тогда появилась бы возможность для каждой записи в лог добавлять дополнительную информацию, например: кому передали деньги (id аккаунта), сколько и где. С подобной информацией поиск по логам стал бы очень простым, плюс появилась бы возможность создавать всякие статистики.

  9. Пользователь сказал cпасибо:
    Nash_Brigers (22.06.2017)
  10. #7
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Только так делать и надо. И что, что будет 10-15 типов, какое это имеет значение? Без присвоения логам типов, ты не сможешь нормально их сортировать (придётся писать тяжёлые запросы, парсящие строки).

    Хотя, я бы, наверное, добавил ещё поле вроде log_data_id (типа как здесь) + ассоциативную таблиц для связи. Тогда появилась бы возможность для каждой записи в лог добавлять дополнительную информацию, например: кому передали деньги (id аккаунта), сколько и где. С подобной информацией поиск по логам стал бы очень простым, плюс появилась бы возможность создавать всякие статистики.
    Ты, видимо, меня не понял, раз так говоришь. Ничего парсить не нужно.

  11. #8
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Хотя, я бы, наверное, добавил ещё поле вроде log_data_id (типа как здесь) + ассоциативную таблиц для связи. Тогда появилась бы возможность для каждой записи в лог добавлять дополнительную информацию, например: кому передали деньги (id аккаунта), сколько и где. С подобной информацией поиск по логам стал бы очень простым, плюс появилась бы возможность создавать всякие статистики.
    На самом деле на эту систему можно накручивать и накручивать функционал, который сделает её лишь удобнее, чем я и советовал бы заняться автору. И, в том числе, следует отказаться от дополнительных столбцов во второй таблице и создать для этого дела третью (в общем, то, что сказал Ziggi)


    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Ты, видимо, меня не понял, раз так говоришь. Ничего парсить не нужно.
    Придётся держать название типов в голове, мы поняли. Я об этом варианте писал ещё в предыдущем сообщении же. И так же намекал, что это неудобно.
    Собственно, что тебя напрягает в дополнительной таблице? Точнее, какой профит от того, что ты откажешься от неё? Сэкономишь пару килобайт на жестком диске хостинга? Или у тебя какое-то ограничение по количеству таблиц предъявляет хостинг? В чём проблема?

    Можно, конечно, хранить названия типов в массиве, но плюс отдельной БД в том, что благодаря ей можно обращаться к основной таблице по названию типа, а не по ID типа, просто составив вложенный запрос, а-ля
    PHP код:
    SELECT * AS ls FROM log_type_list AS ltlog_system WHERE lt.log_type_name 'тут_название_типа' AND ls.log_type_id lt.log_type_id

    // Этот запрос далеко не идеален и не факт, что будет работать, но и не суть. Основная мысль: достать данные по названию типа используя лишь один запрос и ничего более. Это упростит написание системы, а значит уменьшит шанс допустить ошибку при её написании, что сэкономит вам время 
    Что может существенно облегчить написания серверной составляющей всей системы (например, можно вывод логов в виде диалогового окна написать довольно просто и понятно).
    То бишь, глупо усложнять себе жизнь ради экономии мизерного пространства, что займёт эта таблица.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  12. #9
    Аватар для Fallen A.
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.09.2015
    Адрес
    Минск, БССР
    Сообщений
    236
    Репутация:
    19 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Придётся держать название типов в голове, мы поняли.
    Не в голове. Каждому свое.

  13. #10
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Цитата Сообщение от Fallen A. Посмотреть сообщение
    Не в голове. Каждому свое.
    Так а где же ещё? Если выделять массив под это дело, то придётся со стороны сервера писать скрипт, который бы сопоставлял названия и выдавал ID типа, что лишь усложнит код и нагрузит основной поток.
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 
Страница 1 из 4 1 2 3 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •