Направление Авто и ReturnUser
#1

Собственно вопрос заключается в следующем
как определить как едет автомобиль задом или передом
ну то есть едет вперёд или сдает назад

и второй вопрос
есть ли более быстрый аналог функции
PHP код:
stock ReturnUser(text[], playerid INVALID_PLAYER_ID
 { 
   new 
pos 0
   while (
text[pos] < 0x21
   { 
    if (
text[pos] == 0) return INVALID_PLAYER_ID
    
pos++; 
   } 
   new 
userid INVALID_PLAYER_ID
   if (
IsNumeric(text[pos])) 
   { 
    
userid strval(text[pos]); 
    if (
userid >=&& userid MAX_PLAYERS
    { 
     if(!
IsPlayerConnected(userid)) 
     { 
      
userid INVALID_PLAYER_ID
     } 
     else 
     { 
      return 
userid
     } 
    } 
   } 
   new 
len strlen(text[pos]); 
   new 
count 0
   new 
name[MAX_PLAYER_NAME]; 
   for (new 
0MAX_PLAYERSi++) 
   { 
    if (
IsPlayerConnected(i)) 
    { 
     
GetPlayerName(inamesizeof (name)); 
     if (
strcmp(nametext[pos], truelen) == 0
     { 
      if (
len == strlen(name)) 
      { 
       return 
i
      } 
      else 
      { 
       
count++; 
       
userid i
      } 
     } 
    } 
   } 
   if (
count != 1
   { 
    if (
playerid != INVALID_PLAYER_ID
    { 
     if (
count
     { 
      
SendClientMessage(playerid0xFF0000AA"Multiple users found, please narrow earch"); 
     } 
     else 
     { 
      
SendClientMessage(playerid0xFF0000AA"No matching user found"); 
     } 
    } 
    
userid INVALID_PLAYER_ID
   } 
   return 
userid
 } 
Reply
#2

Насколько я знаю, направление можно определить нативной функцией GetVehicleZAngle. Но она определяет лишь угол поворота машины, насчет движения задом я не знаю.

А чем тебя не устраивает ReturnUser?
Reply
#3

Quote:

А чем тебя не устраивает ReturnUser?

Функция медленная.
Да кстати, тоже задаюсь вопросом, существует ли наиболее быстрый аналог этой функции.
Reply
#4

Если облегчить её на функционал, то да.
Reply
#5

По поводу движения вперёд или назад будет трудно...
Это нужно узнавать по какой оси двигается машина (x или y)... Она же может двигаться по x и y одновременно... в принципе, реализовать можно... но код будет слишком гружёным)
Reply
#6

значит аналога функции ReturnUser как я понимаю нету

а насчёт авто спасибо за подсказки попробую чёнить похимичить
Reply
#7

Вот, думаю на функционале не должно сказаться.
pawn Код:
stock ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
    new text_int = strval(text);
    if (IsNumeric(text_int) && IsPlayerConnected(text_int)) return text_int;

    new player_name[MAX_PLAYER_NAME],
        text_len = strlen(text),
        userid = INVALID_PLAYER_ID,
        count = 0;
    foreach (Player,id)
    {
        GetPlayerName(id,player_name,sizeof(player_name));
        if (!strcmp(player_name,text,false,text_len))
        {
            if (!strcmp(player_name,text,false))
            {
                return id;
            }
            else
            {
                count++;
                userid = id;
            }
        }
    }

    if (playerid != INVALID_PLAYER_ID)
    {
        if (count > 1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
            userid = INVALID_PLAYER_ID;
        }
        else if (count != 1)
        {
            SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
            userid = INVALID_PLAYER_ID;
        }
    }
    return userid;
}
Reply
#8

IsNumeric не стандартная функция, ведь так? Не сталкивался еще с ней.
Reply
#9

Quote:
Originally Posted by Eo
Посмотреть сообщение
IsNumeric не стандартная функция, ведь так? Не сталкивался еще с ней.
да, вот она:
pawn Код:
stock IsNumeric(const string[])
{
    for (new i=strlen(string)-1;i>=0;i--)
    {
        switch(string[i])
        {
            case 0..9: continue;
            default: return 0;
        }
    }
    return 1;
}
Reply
#10

Quote:
Originally Posted by Eo
Посмотреть сообщение
IsNumeric не стандартная функция, ведь так? Не сталкивался еще с ней.
Она находится в dutils.inc
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)