Перейти к содержанию
Авторизация  
Ilya_Mayor

Команда /alog [Включить информацию о входах/выходах игроков]

Рекомендуемые сообщения

Ilya_Mayor

Помогите сделать команду /alog [Включить информацию о входах/выходах игроков] Для администрации

Вот хочу сделать из [public OnPlayerConnect(playerid)] и [public OnPlayerDisconnect(playerid, reason)]

команду /alog что бы включалась информация о входах и выходах игроков!

 

Вот сами public

public OnPlayerConnect(playerid)
{
    if(playerid == INVALID_PLAYER_ID || gamemodeloaded != 1) return Kick(playerid);
    
    new CheckSobeit[10];
    GetPlayerVersion(playerid, CheckSobeit, sizeof(CheckSobeit));
    if(strfind(CheckSobeit, "LoL4" ) != -1) return Kick(playerid),SendClientMessage(playerid,COLOR_RED,"Вход на сервер с запрещённым ПО (S0beit) строго запрещён!");
    
    testproxy(playerid);
    
    GetPlayerIp(playerid, PI[playerid][pIP], 16);
    GetPlayerName(playerid, PI[playerid][pName], MAX_PLAYER_NAME);
    
    group[playerid][gid] = -1;
    group[playerid][invited] = -1;
    group[playerid][attemptjoin] = -1;
    
    if(slotUsed{playerid} && !strcmp(playersIP[playerid], PI[playerid][pIP], true)) return Ban(playerid);
    GetPlayerIp(playerid, playersIP[playerid], 16);
    slotUsed{playerid} = true;
    
 	if(IsLoginInvalid(GetName(playerid)))
	{
	    SendClientMessage(playerid, COLOR_RED, "Ваше имя содержит запрещенные символы или цифры, используйте имя формата Имя_Фамилия на английском");
		return Kick(playerid);
	}
	
	static const blacklist_name[5][5] = {"CM_","_CM","Bomj","bomj","BOMJ"};
	for(new i; i < sizeof(blacklist_name); i++)
	{
	    if(strfind(GetName(playerid), blacklist_name[i], true) == 0) return Kick(playerid);
	}
	
	HideSpeedometer(playerid);
	
    for(new lg;lg<3; lg++)
	{
        TextDrawShowForPlayer(playerid,Logo[lg]);
    }
	
	ac_1{playerid} = false;
    SetPlayerDataToDefault(playerid);
	CreateTextDraws(playerid);
	RemoveBuild(playerid);
    SetPVarInt(playerid, "AntiBreik", 500);
    SetPVarInt(playerid, "DrawFill", 0);
    SetPVarInt(playerid, "PickupID", -1);
	SetPlayerColor(playerid, COLOR_WHITE);
	SendClientMessage(playerid, COLOR_BLUE, "Добро пожаловать на Deadvens RolePlay");
	
	player_timer[playerid] = SetTimerEx("Player_Control", 1000, 1, "i", playerid);
	
	for(new i = 0; i < sizeof(GZInfo); i++) GangZoneShowForPlayer(playerid, GangZone[i], GetGangZoneColor(i));
	new string[144];
	GetPlayerIp(playerid, PI[playerid][pIP], 20);
	format(string, 144, "[A] %s[%d] присоеденился к серверу. IP: %s.", PI[playerid][pName], playerid, PI[playerid][pIP]);
	SendAdminMessage(0x99CCFFFF, string);
	return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
	new string1[128];
	switch(reason)
	{
		case 0: strmid(string1, "краш/обрыв связи", 0, strlen("краш/обрыв связи"));
		case 1: strmid(string1, "вышел", 0, strlen("Вышел"));
		case 2: strmid(string1, "кик/бан", 0, strlen("кик/бан"));
		default: strmid(string1, "неизвестно", 0, strlen("неизвестно"));
	}
	format(string1, 128, "[A] %s[%d] покинул игру [ IP: %s ] Причина: %s.",PI[playerid][pName],playerid,PI[playerid][pIP],string1);
	SendAdminMessage(0x99CCFFFF, string1);
    slotUsed{playerid} = false;
    PI[playerid][pOnline] = 0;
    KillTimer(player_timer[playerid]);
    if(PI[playerid][cModel] > 0) Delete3DTextLabel(VehicleLabel[PI[playerid][PlayerCarID]]);
	if(IsPlayerAttachedObjectSlotUsed(playerid, 0)) RemovePlayerAttachedObject(playerid, 0);
	if(IsPlayerAttachedObjectSlotUsed(playerid, 1)) RemovePlayerAttachedObject(playerid, 1);
	if(IsPlayerAttachedObjectSlotUsed(playerid, 2)) RemovePlayerAttachedObject(playerid, 2);
	if(IsPlayerAttachedObjectSlotUsed(playerid, 3)) RemovePlayerAttachedObject(playerid, 3);
	if(IsPlayerAttachedObjectSlotUsed(playerid, 4)) RemovePlayerAttachedObject(playerid, 4);
	if(IsPlayerAttachedObjectSlotUsed(playerid, 5)) RemovePlayerAttachedObject(playerid, 5);
	new Query[128];
	format(Query, sizeof(Query), "UPDATE "T_ADMIN" SET timemin='%d' WHERE name='%s' LIMIT 1", AdminInfo[playerid][admTimeMin], GetName(playerid));
	mysql_tquery(dbHandle, Query, "", "");
	if(GetPVarInt(playerid,"DrawFill") > 0) DeletePVar(playerid,"DrawFill");
	if(PI[playerid][PlayerCarID] != INVALID_VEHICLE_ID)
	{
		PI[playerid][cFuel] = Fuel[PI[playerid][PlayerCarID]];
		DestroyVehicle(PI[playerid][PlayerCarID]);
		PI[playerid][PlayerCarID] = INVALID_VEHICLE_ID;
	}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
gegelo

Создаёте в енуме с данными игрока целочисленную, а лучше логическую переменную, при коннекте её обнуляете игроку. Далее при вводе команды /alog присваиваете ей значение truel (либо же 1 для целочисленной) и уже при коннекте/дисконнекте ставите условие. Понятно? Или уже готовое решение написать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ilya_Mayor

@gegelo,напишите готовое решение пожалуйста!) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
gegelo

В enum с данными игрока, обычно называется PlayerInfo - вставляете bool:AdmLog, ;

 

Далее в OnPlayerConnect вместо 

format(string, 144, "[A] %s[%d] присоеденился к серверу. IP: %s.", PI[playerid][pName], playerid, PI[playerid][pIP]);
SendAdminMessage(0x99CCFFFF, string);

Вставляете это:

if(PlayerInfo[playerid][AdmLog] == true)
{
     format(string, 144, "[A] %s[%d] присоеденился к серверу. IP: %s.", PI[playerid][pName], playerid, PI[playerid][pIP]);
     SendAdminMessage(0x99CCFFFF, string);
}


В OnPlayerDisconnect вместо

format(string1, 128, "[A] %s[%d] покинул игру [ IP: %s ] Причина: %s.",PI[playerid][pName],playerid,PI[playerid][pIP],string1);
SendAdminMessage(0x99CCFFFF, string1);

Вставляете вот это:

if(PlayerInfo[playerid][AdmLog] == true)
{
	format(string1, 128, "[A] %s[%d] покинул игру [ IP: %s ] Причина: %s.",PI[playerid][pName],playerid,PI[playerid][pIP],string1);
        SendAdminMessage(0x99CCFFFF, string1);
}

В OnPlayerConnect ещё вставьте PlayerInfo[playerid][AdmLog] = false;

 

 

Далее команда /alog:

DC_CMD:

CMD:alog(playerid, params[])
{
    if(//проверка на админку
    if(PlayerInfo[playerid][AdmLog] == true)
    {
        PlayerInfo[playerid][AdmLog] = false;
        SendClientMessage(playerid, -1, "Ты выключил отображение входов/выходов");
    } else {
        PlayerInfo[playerid][AdmLog] = true;
        SendClientMessage(playerid, -1, "Ты включил отображение входов/выходов");
    }
    return true;
}


Надеюсь поняли принцип действия.

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.