Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!: [ALL][DC_CMD] /id - Форум Pawn-Wiki.Ru - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ALL][DC_CMD] /id Оценка: ***** 1 Голосов

#1
Пользователь офлайн   fausto 

  • Новичок
  • Вставить ник
  • Раскрыть информацию
CMD:id(playerid, params[])
{
    new string[33];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, 0xFFFFFF, "Введите: /id [ Часть ника или id игрока ]"); // Если игрок ничего не ввёл
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, 0xFFFFFF, "Игрок не найден!"); // Если игрок не найден
    format(string, sizeof(string), "%s[%d]", name, params[0]); // 1. name - узнаёт ник игрока 2. params[0] - узнаёт id игрока
    SendClientMessage(playerid, 0xFFFFFF, string);
    return true;
}

Автор: Я

Сообщение отредактировал fausto: 23 Январь 2018 - 20:08

-1

#2
Пользователь офлайн   m1n1vv 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Начнем с того, что узнает твое имя, а не указанного id
0

#3
Пользователь офлайн   fausto 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияm1n1vv (23 Январь 2018 - 19:23) писал:

Начнем с того, что узнает твое имя, а не указанного id

Не понял вопроса
0

#4
Пользователь офлайн   gmosergey 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Вот такая же команда походу, из какого то мода, который у меня на столе, рп жанра.

#include <dc_cmd>
#include <foreach>
#include <sscanf2>

CMD:id(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, ""cInf2o"Введите /id [id/часть ника]");
    new ids = strval(params);
    SendClientMessage(playerid,COLOR_YELLOW,"Игроки онлайн:");
    new idd=-1;
    if(!IsNumericc(params))
	{
		foreach(new i:Player)
		{
			if(strfind(PlayerInfo[i][pNames],params,true) != -1)
			{
				if(idd >= 4) {
					idd++;
				    continue;
            	}
            	if(GetPVarInt(i, "AFK_Time") > 2) format(stringer1,sizeof(stringer1),"%s [%d] {FF0000}(AFK: %s)",PlayerInfo[i][pNames],i, Convert(GetPVarInt(i,"AFK_Time")-2));
				else format(stringer1,sizeof(stringer1),"%s [%d]",PlayerInfo[i][pNames],i);
				SendClientMessage(playerid,COLOR_WHITE,stringer1);
				idd++;
			}
		}
		if(idd == -1) return SendClientMessage(playerid,COLOR_GREY,"Не найдено");
		else if(idd >= 4) {
        	format(stringer1,sizeof(stringer1),"Показано 5 найденных из %d", idd-2);
      		SendClientMessage(playerid, COLOR_GREY, stringer1);
		}
	}
	else
	{
		if(!FIX_IsPlayerConnected(ids)) return SendClientMessage(playerid,COLOR_GREY,"Не верный ID");
		if(GetPVarInt(ids, "AFK_Time") > 2) format(stringer1,sizeof(stringer1),"%s [%d] {FF0000}(AFK: %s)",PlayerInfo[ids][pNames],ids, Convert(GetPVarInt(ids,"AFK_Time")-2));
		else format(stringer1,sizeof(stringer1),"%s [%d]",PlayerInfo[ids][pNames],ids);
		SendClientMessage(playerid,COLOR_WHITE,stringer1);
	}
	return true;
}

В этой команде по моему есть переменные, которых возможно не будет хватать в вашем моде!
Но если над то вот ещё от команды части:
stock FIX_IsPlayerConnected(playerid) return 0 <= playerid < MAX_PLAYERS && IsPlayerConnected(playerid);

IsNumericc(const text[])
{
	for (new i = 0, j = strlen(text); i < j; i++)
	{
		if (text[i] > '9' || text[i] < '0') return false;
	}
	return true;
}

А часть системы афк, можно просто удалить либо заменить на свою.
if(GetPVarInt(ids, "AFK_Time") > 2) format(stringer1,sizeof(stringer1),"%s [%d] {FF0000}(AFK: %s)",PlayerInfo[ids][pNames],ids, Convert(GetPVarInt(ids,"AFK_Time")-2));
                else 

Если кто то ещё не хранит ник игрока в PlayerInfo при конекте на сервер, то замените PlayerInfo[ids][pNames] на узнавание ника.

Либо просто начнём узнавать ник адекватным способам, 1 раз при подключении.
Добавить в паблик public OnPlayerConnect(playerid)
    GetPlayerName(playerid, PlayerInfo[playerid][pName], 24);//Узнаём ник игрока и записываем в переменную PlayerInfo[playerid][pName]

И ещё pName ко всем переменных из регистрации.
-
Автор рипа: Бикбай
:biggrin: Я тут как РЫЖИК!

Сообщение отредактировал gmosergey: 23 Январь 2018 - 20:13

0

#5
Пользователь офлайн   Sonic X 

  • Х_X
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияfausto (23 Январь 2018 - 18:09) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Что это за команда? Вот извини за минус, но это тебе будет уроком, что просто вырезать с мода - недостаточно.
1. Что такое Login[playerid], SCM, GN ??????? :wacko: :wacko: (да, я новичок, который даже азов не знает, буду копировать твою команду и потом писать, почему же не работает, вот ошибки (на те строки, где ты это использовал)).
2. Мало того, что просто вырезал с мода, так ещё и не знаешь, как работает GN() :facepalm:
0

#6
Пользователь офлайн   fausto 

  • Новичок
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSonic X (23 Январь 2018 - 19:52) писал:

Нажмите сюда, чтобы прочитать это сообщение. [Показать]

Исправил
0

#7
Пользователь офлайн   Sonic X 

  • Х_X
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияfausto (23 Январь 2018 - 20:07) писал:

Исправил

Молодец. В конце забыл только SCM изменить. И в следующий раз думай, что нужно скидывать всё "по дефолту", а не задефайненное и т.п. :blush:


Репутацию аккаунта исправил :smile:

Сообщение отредактировал Sonic X: 23 Январь 2018 - 20:10

0

#8
Пользователь офлайн   muv4ansky 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию
CMD:id(playerid, params[])
{
	new
 	str[145],
	name[20],
	bool:ttrue = false;
	
 	new name[MAX_PLAYER_NAME];
 	GetPlayerName(playerid, name, sizeof(name));

	if(sscanf(params, "s[20]", params[0])) return SendClientMessage(playerid, -1, "Поправка: /id [Часть ника] (Найти ID игрока по нику)");
	foreach(new i : Player)
	{
		if(strfind(name(i), params[0], true) != -1)
		{
		    format(str, 145, "%s {FFD700}[ID: %d]", name(i), i);
		    SendClientMessage(playerid, -1, str);
		    ttrue = true;
		}
	}
	if(!ttrue)
	{
		format(str, 145, "Игроков с '%s' в нике не нашлось.", params[0]);
		SendClientMessage(playerid, -1, str);
	}
	return 1;
}


мб, можно так ешё

Сообщение отредактировал muv4ansky: 23 Январь 2018 - 20:43

0

#9
Пользователь офлайн   m1n1vv 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Или так

CMD:id(playerid, params[])
{
    static const
        str[] = "%s {FFD700}[ID: %d]",
        str_no[] = "Игроков с '%s' в нике не нашлось.";

    static
        string[sizeof str_no + MAX_PLAYER_NAME],
        name[MAX_PLAYER_NAME];

    GetPlayerName(playerid, name, MAX_PLAYER_NAME);

    if (isnull(params))
        return SendClientMessage(playerid, -1, !"Поправка: /id [Часть ника] (Найти ID игрока по нику)");

    foreach (Player, i)
    {
        if (strequal(name, params))
        {
            format(string, 50, str, name(i), i);
            return SendClientMessage(playerid, COLOR_MSG, str);
        }
    }

    format(string, 50, str, params);
    return SendClientMessage(playerid, COLOR_MSG, str);
}


strequal

Сообщение отредактировал m1n1vv: 23 Январь 2018 - 20:42

0

#10
Пользователь офлайн   Pa4enka 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
CMD:id(playerid, params[])
{
    new 
        ids[3], i, string[5];

    if (sscanf(params, "?<MATCH_NAME_PARTIAL=1>u[3]", ids)) 
        return SendClientMessage(playerid, -1, !"Введите /id [часть ника]");

    for (i = 0; ids[i] != INVALID_PLAYER_ID; ++i)
    {
        if (ids[i] == cellmin)
        {
            SendClientMessage(playerid, -1, !"Слишком много совпадений");
            break;
        }
        format(string, sizeof string, "id = %d", ids[i]);
        SendClientMessage(playerid, -1, string);
    }
    if (i == 0) 
        return SendClientMessage(playerid, -1, !"Совпадений не найдено");

    return true;
}

p.s: не проверял.
Для чего придумали sscanf...

Сообщение отредактировал Pa4enka: 23 Январь 2018 - 21:28

0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика