• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Не работает команда

Статус
В этой теме нельзя размещать новые ответы.

Woxer

Умник
Захожу на сервер, прописываю команду и не происходит абсолютно ничего. dc_cmd установлен правильно, sscanf тоже, функция OnPlayerCommandText возвращает 0.

Команда находится в самом конце мода.

С чем может быть связана проблема?


Код самой команды:

PHP:
cmd:me(playerid, params[])
{
	if (sscanf(params, "s[128]", params[0]))
	{
		SendClientMessage(playerid, 0xE75480FF, "Введите: /me [действие]");
		return 1;
	}
	MeAction(playerid, params[0], 0);
	return 1;
}
Функция MeAction:

PHP:
stock MeAction(playerid, text[], type)
{
	new string[128];
	new message[128];
	switch(type)
	{
	    case 0:
	    {
  			if(strlen(text) >= 80)
			{
			strmid(string, text, 64, 128, 128);
           		strdel(text,64,128);
          		format(message, 104+3, "%s(%d) %s...", Player[playerid][Name], playerid, text);
			ProxDetector(15.0, playerid, message, CPINK, CPINK, CPINK, CPINK ,CPINK);
           		format(message, 88+3, "...%s", string);
           		ProxDetector(15.0, playerid, message, CPINK, CPINK, CPINK, CPINK ,CPINK);
           		return 0;
			}
			else
			{
           		format(message, 104, "%s(%d) %s", Player[playerid][Name], playerid, text);
				ProxDetector(15.0, playerid, message, CPINK, CPINK, CPINK, CPINK ,CPINK);
           		return 0;
			}
        }
        case 1:
        {
            format(message,sizeof(message),"%s",text);
			SetPlayerChatBubble(playerid, message, CPINK, 15.0, 5000);
        }
        case 2: 
        {
            format(message,sizeof(message),"%s",text);
			SetPlayerChatBubble(playerid, message, CPINK, 15.0, 5000);
        }
	}
	return 1;
}
ProxDetector:

PHP:
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);

public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:posx, Float:posy, Float:posz;
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;
        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
            {
                GetPlayerPos(i, posx, posy, posz);
                tempposx = (oldposx -posx);
                tempposy = (oldposy -posy);
                tempposz = (oldposz -posz);
                if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16))) // If the player is within 16 meters
                {
                    SendClientMessage(i, col1, string);
                }
                else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8))) // within 8 meters
                {
                    SendClientMessage(i, col2, string);
                }
                else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4))) //4 meters
                {
                    SendClientMessage(i, col3, string);
                }
                else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2))) //2 meters
                {
                    SendClientMessage(i, col4, string);
                }
                else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi))) //1 meter
                {
                    SendClientMessage(i, col5, string);
                }
            }
            else
            {
                SendClientMessage(i, col1, string);
            }
        }
    }
    return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу