Sign in to follow this  
Followers 0
Lelouch

Логи прямо в игре !

2 posts in this topic

Вечер в хату уважаемые юзеры портала Pawno-Rus, это был мой первый форум по Павно,так что я очень ему блогадарен за хорошее начало.
Что-же,сегодня я хочу слить вам свою собственную систему с Логированием прямо в игре,делаю я это с "не  фиг(система дерётся за такое слово :c) делать",уже даже нету идей что ещё сделать в моде из такого не сложного.
Автор данной системы - Lelouch(Лелуш) | (Я)
Ну что-же,начнём.
У меня: Pawn.CMD + sscanf

 

Добавляем сток:

stock SendScripterMessage(color, string[])
{
	foreach(Player,i)
	{
	    //if(!FIX_IsPlayerConnected(i) || gPlayerLogged[i] == 0) continue;
		if(PlayerInfo[i][pScripter] > 0) SendClientMessage(i, color, string);
	}
	return true;
}

 

publics: LoginCallback(playerid)

	cache_get_field_content(0, "pScripter", maximum),		PlayerInfo[playerid][pScripter] = strval(maximum);

 

Команды на выдачу ПРАВ для чтения логов:

CMD:golog(playerid, params[])
{
	if(strcmp(PlayerInfo[playerid][pNames], "Maga_Volkov")) return true;
//	if(strcmp(PlayerInfo[playerid][pNames], "Alexei_Cheetov")) return true;
	if(PlayerInfo[playerid][pScripter] > 0) return SCM(playerid, -1, "{FFC700}У игрока уже есть права скриптера !");
	if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /golog [ID]");
	if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Ошибка: Игрока не существует");
	PlayerInfo[params[0]][pScripter] = 1;
	format(stringer, sizeof(stringer), "[LOG] [SCRIPTER] {FF0000}Администратор %s[%d] выдал Log-Dostup игроку %s[%d]", PlayerInfo[playerid][pNames], playerid, PlayerInfo[params[0]][pNames], params[0]);
	SendScripterMessage(COLOR_REDD, stringer);
	UpdatePlayerData(params[0], "pScripter", PlayerInfo[params[0]][pScripter]);
	format(mysql_query_, sizeof(mysql_query_), "UPDATE `"TABLE_ACCOUNT"` SET `pScripter` = '1' WHERE `accounts`.`pID` = '%d'", PlayerInfo[params[0]][pID]);
	mysql_function_query(connects, mysql_query_, false, "", "");
	return true;
}
CMD:nolog(playerid, params[])
{
	if(strcmp(PlayerInfo[playerid][pNames], "Maga_Volkov")) return true;
//	if(strcmp(PlayerInfo[playerid][pNames], "Alexei_Cheetov")) return true;
	if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /nolog [ID]");
	if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_WHITE, "Ошибка: Игрока не существует");
	if(PlayerInfo[playerid][pScripter] < 0) return SCM(playerid, -1, "{FFC700}У игрока и так нету прав скриптера !");
	format(stringer, sizeof(stringer), "[LOG] [SCRIPTER] {FF0000}Администратор %s[%d] убрал Log-Dostup игроку %s[%d]", PlayerInfo[playerid][pNames], playerid, PlayerInfo[params[0]][pNames], params[0]);
	SendScripterMessage(COLOR_REDD, stringer);
	PlayerInfo[params[0]][pScripter] = 0;
	UpdatePlayerData(params[0], "pScripter", PlayerInfo[params[0]][pScripter]);
	format(mysql_query_, sizeof(mysql_query_), "UPDATE `"TABLE_ACCOUNT"` SET `pScripter` = '0' WHERE `accounts`.`pID` = '%d'", PlayerInfo[params[0]][pID]);
	mysql_function_query(connects, mysql_query_, false, "", "");
	return true;
}

Как можно понять - /nolog - убирает права читать логи

/golog - выдаёт право на чтение логов.

Теперь разберём их содержание.

Будем разбирать на примере команде /golog:

Форма: 1 (Строка) - ...(Функция)

 

1 - Проверка на имя,т.е если у игрока нету ника который там стоит - команда не будет у него работать.

2 - (забыл удалить)

3 - Пишем игроку что у  игрока уже есть права на чтение логов

4 - Пишем как правильно исп. команду

5 - Пишем в случае если игрок не на сервере - что его не существует.

6 - Выдаём сами права игроку (pScripter = 1)

7 - Уведомляем что ещё один челик попал к нам

(SendScripterMessage - сообщение в чате "логов")

8 - Тут у меня в моде идёт обновление инф. о игроке (pScripter обновляем челику)

9 - 10 = Сохраняем это всё дело в MySql

в MySql в таблице с Аккаунтами - заходим в Структуру Таблицы - создаём новую перемённую pScripter (Нач. Знач: 0)

11 - return true :]

 

Собственно /nolog так же только наобарот уже.

После всех этих махинации - пишем /golog [свой ID]

Получаем права,а теперь собственно вопрос: Как читать "логи" ?
Под "Логами" я имел ввиду действия игроков,к примеру у вас есть недоверие к своим игрокам/составу,и вы не хотите по каким-то причинам добавлять логирование в админ-чат какой-то команде.
Тогда пишет format(<string>, sizeof(<string), "[A] Игрок %s[%d] использовал команду ...", PlayerInfo[playerid][pNames], playerid);

SendScripterMessage(<COLOR>,<STRNG>);

playerid - ID Игрока

pNames - Имя игрока

*Добавил(забыл написать):

SCM - SendPlayerMessage
Я надеюсь суть понятная. Я лично у себя эту систему развил настолько что аж даже Чат для таких "чекеров логов" :D
Ну ладно,пожалуй скину пример "логирования" команды:

CMD:ska(playerid,params[])
{
    if(strcmp(PlayerInfo[playerid][pNames], "Maga_Volkov")) return true;
	new NameA[24], lvl;
	if(sscanf(params,"s[24]dd",NameA,lvl, params[2])) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /ska [name] [уровень]");
	if(lvl > 100 || lvl < 0) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Нельзя меньше 1 и больше 13");
	if(!FD(playerid) && (!strcmp(NameA, "Maga_Volkov"))) return SCM(playerid, -1, "Низя !!");
	new query[144];
	format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1", NameA);
	mysql_function_query(connects, query, true, "SetAdmin", "dds", playerid, lvl, NameA);
	format(stringer1, sizeof(stringer1), "{ffc700}[A] Скриптер {FF0000}%s[%d]{ffc700} назначил игрока {FF0000}%s{FFC700} на админку {FF0000}%d {ffc700}уровня !", PlayerInfo[playerid][pNames], playerid, NameA, lvl);
	SendScripterMessage(COLOR_LIGHTRED, stringer1); // log for scripter
	return true;
}

Как можно увидить по данному примеру,в конец команды стоит функция: SendScripterMessage(<COLOR>, <STRING>);

Что и отправляет сообщение в наш чат.

Данная система не протестирована на проекте с онлайном,ибо делаю я мод в соло.

Должно работать как по маслу,если что - пишите сюда. Посмотрим с чем вы столкнулись.

 

Просьба при размещении на других форумах и т.д указывать ВК Автора )) (НЕ реклама): vk.com/l0ve_an1me

Всем спасибо за внимание,всего наилучшего !)

Edited by Lelouch
Причина: Система банит слово :c | Дополнил текст где забыл дополнить .-.

Share this post


Link to post
Share on other sites

Извиняюсь,не то слово сказал.

SCM - SendClientMessage

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • angel_sinvays
      By angel_sinvays
      Приветствую! Меня зовут Артём, мне 19 лет, и я являюсь основателем и ведущим специалистом студии Sinvays. Уже семь лет я работаю в PAWN, и за это время принял участие в множестве проектов. Моя цель – создавать качественные и уникальные решения для вашего игрового проекта. Обратите внимание, чтобы сделать заказ необходимо написать мне в личные сообщения либо делать это через студию.
      Ознакомиться с полным спектром услуг можно у меня в личных сообщениях либо через бота в студии.

      Список услуг которые я предоставляю:
       
      Написание регистрации на mysql [DIALOG / TextDraw] — от 350 рублей.
      Написание авторизации на mysql [DIALOG / TextDraw] — от 350 рублей.
      Написание системы — от 200 рублей (в зависимости от сложности).
      Рисовка TextDraw — от 50 рублей (зависит от потребностей)
      Исправление багов в игровом моде — от 100 рублей (зависит от количества и сложности)
      Переделка любого мода под ваши интересы — от 150 рублей (зависит от потребностей)
       
      Пожалуйста, обратите внимание:

      Для начала сотрудничества мне необходимо четкое техническое задание и ваше желание работать совместно.

      Услуги предоставляются по 100% оплате!

      Моё портфолио: https://vk.com/topic-180751181_50413848
      Мои отзывы: https://vk.com/topic-180751181_50413975
    • sergeenko
      By sergeenko
      Дарова, у меня версия самп R3, решил поставить sampvoice r3, в консоли выдаёт это:
       
      [22:39:00]  Loading plugin: sampvoice.so [22:39:00]   Failed (/lib32/libc.so.6: version `GLIBC_2.33' not found (required by plugins/sampvoice.so)) Плагин (sampvoice.so + sampvoice.dll) закинул в /plugins
      Инклуд (sampvoice.inc) закинул в /include
      Chm и cfg (sampvoice.chm + control.cfg) закинул в корень мода
    • exontextrio
      By exontextrio
      Всех приветствую, предлагаю вам свои услуги Pawn-разработчика.

      В мой спектр услуг входит:
      – Работа с MySQL.
      – Исправление багов/недоработок.
      – Написание команд.
      – Написание обновлений.

      По всем вопросам писать сюда — t.me/exontextrio (Telegram) или vk.com/exontextrio (VK)
    • gazilius
      By gazilius
      Здравствуйте, ищу скриптера
      платформа CRMP
      Ищу человека который будет потихоньку писать системы для мода с нуля
      Оплата сдельная
       
      тз
      mysql
      1. Система регистрации и авторизации
      Выбор спавна:
      Лыткарино
      Игроки пока не поздороваются не видят имени друг друга
       
      2. Работы
      Автобусник - катаешься по всей карте и за остановку получаешь 500 игровой валюты
      Механик - берет вызов по всей области и после ремонта получает свои 500 игровой валюты и за заправку за каждый литр еще 10 игровой валюты
      Таксист - принимает заказ где человек ставит маркер куда ему нужно, после чего таксист если оказывается на метки и получает свою оплату - км 50 игровой валюты
      деньги списываются с того кто заказал такси
       
      Автобус парк - Лыткарино, Батырево
      База механиков - Арзамас, Южный
      Такси компаний - Арзамас, Южный

      Жду ваших цен и прайсов
      тг @ormbet