Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Ja pedi ajuda aqui no Fуrum, mas nгo obtive sucesso.. Quando eu tento usar algum comando! Qual quer um, que precise de Usar o ID do player Mesmo ele estando on-line .. Da erro! Fala que o Jogador Nгo estб Conectado.. E nгo й por causa de um Comando й todos sem exeзгo.. Todos os comandos que usam ID.. Meu Plugin Jб й Atualizado.. Alguem me ajude Pf!
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Certo o plugin й atualizado. E a include ?
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
Certo o plugin й atualizado. E a include ?
|
Tentei procurar e nгo acho as includes atualizadas... A include que eu tenho certeza que estб atualizada й a zcmd
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Existe sim. A ъltima versгo acho que foi o y_less que postou.
Tem esta ?
https://sampforum.blast.hk/showthread.php?tid=120356
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
|
Esses plugins ja baixei! E Utilizo.. Mas nгo tenho as includes por que nгo acho...
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Achei rбpido.
http://pastebin.com/aY2cnzhr
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
|
Pra indentificar os ID's dos players й nescessбrio colocar na gm
?
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Para usar o sscanf sim '-'
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
Para usar o sscanf sim '-'
|
pawn Code:
user error: sscanf (possibly the PAWN version) already defined.
UP!
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Vк se vocк tem alguma callback criada com o nome "sscanf"
@TOPIC
Algo parecido com isto:
pawn Code:
stock sscanf(string[], format[], {Float,_}:...)
{
  #if defined isnull
    if (isnull(string))
  #else
    if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  #endif
    {
      return format[0];
    }
  #pragma tabsize 4
  new
    formatPos = 0,
    stringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
  while (string[stringPos] && string[stringPos] <= ' ')
  {
    stringPos++;
  }
  while (paramPos < paramCount && string[stringPos])
  {
    switch (format[formatPos++])
    {
      case '\0':
      {
        return 0;
      }
      case 'i', 'd':
      {
        new
          neg = 1,
          num = 0,
          ch = string[stringPos];
        if (ch == '-')
        {
          neg = -1;
          ch = string[++stringPos];
        }
        do
        {
          stringPos++;
          if ('0' <= ch <= '9')
          {
            num = (num * 10) + (ch - '0');
          }
          else
          {
            return -1;
          }
        }
        while ((ch = string[stringPos]) > ' ' && ch != delim);
        setarg(paramPos, 0, num * neg);
      }
      case 'h', 'x':
      {
        new
          num = 0,
          ch = string[stringPos];
        do
        {
          stringPos++;
          switch (ch)
          {
            case 'x', 'X':
            {
              num = 0;
              continue;
            }
            case '0' .. '9':
            {
              num = (num << 4) | (ch - '0');
            }
            case 'a' .. 'f':
            {
              num = (num << 4) | (ch - ('a' - 10));
            }
            case 'A' .. 'F':
            {
              num = (num << 4) | (ch - ('A' - 10));
            }
            default:
            {
              return -1;
            }
          }
        }
        while ((ch = string[stringPos]) > ' ' && ch != delim);
        setarg(paramPos, 0, num);
      }
      case 'c':
      {
        setarg(paramPos, 0, string[stringPos++]);
      }
      case 'f':
      {
        new changestr[16], changepos = 0, strpos = stringPos;
        while(changepos < 16 && string[strpos] && string[strpos] != delim)
        {
          changestr[changepos++] = string[strpos++];
          }
        changestr[changepos] = '\0';
        setarg(paramPos,0,_:floatstr(changestr));
      }
      case 'p':
      {
        delim = format[formatPos++];
        continue;
      }
      case '\'':
      {
        new
          end = formatPos - 1,
          ch;
        while ((ch = format[++end]) && ch != '\'') {}
        if (!ch)
        {
          return -1;
        }
        format[end] = '\0';
        if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
        {
          if (format[end + 1])
          {
            return -1;
          }
          return 0;
        }
        format[end] = '\'';
        stringPos = ch + (end - formatPos);
        formatPos = end + 1;
      }
      case 'u':
      {
        new
          end = stringPos - 1,
          id = 0,
          bool:num = true,
          ch;
        while ((ch = string[++end]) && ch != delim)
        {
          if (num)
          {
            if ('0' <= ch <= '9')
            {
              id = (id * 10) + (ch - '0');
            }
            else
            {
              num = false;
            }
          }
        }
        if (num && IsPlayerConnected(id))
        {
          setarg(paramPos, 0, id);
        }
        else
        {
          #if !defined foreach
            #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
            #define __SSCANF_FOREACH__
          #endif
          string[end] = '\0';
          num = false;
          new
            name[MAX_PLAYER_NAME];
          id = end - stringPos;
          foreach (Player, playerid)
          {
            GetPlayerName(playerid, name, sizeof (name));
            if (!strcmp(name, string[stringPos], true, id))
            {
              setarg(paramPos, 0, playerid);
              num = true;
              break;
            }
          }
          if (!num)
          {
            setarg(paramPos, 0, INVALID_PLAYER_ID);
          }
          string[end] = ch;
          #if defined __SSCANF_FOREACH__
            #undef foreach
            #undef __SSCANF_FOREACH__
          #endif
        }
        stringPos = end;
      }
      case 's', 'z':
      {
        new
          i = 0,
          ch;
        if (format[formatPos])
        {
          while ((ch = string[stringPos++]) && ch != delim)
          {
            setarg(paramPos, i++, ch);
          }
          if (!i)
          {
            return -1;
          }
        }
        else
        {
          while ((ch = string[stringPos++]))
          {
            setarg(paramPos, i++, ch);
          }
        }
        stringPos--;
        setarg(paramPos, i, '\0');
      }
      default:
      {
        continue;
      }
    }
    while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
    {
      stringPos++;
    }
    while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
    {
      stringPos++;
    }
    paramPos++;
  }
  do
  {
    if ((delim = format[formatPos++]) > ' ')
    {
      if (delim == '\'')
      {
        while ((delim = format[formatPos++]) && delim != '\'') {}
      }
      else if (delim != 'z')
      {
        return delim;
      }
    }
  }
  while (delim > ' ');
  return 0;
}
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
Vк se vocк tem alguma callback criada com o nome "sscanf"
@TOPIC
Algo parecido com isto:
pawn Code:
stock sscanf(string[], format[], {Float,_}:...) {   #if defined isnull     if (isnull(string))   #else     if (string[0] == 0 || (string[0] == 1 && string[1] == 0))   #endif     {       return format[0];     }   #pragma tabsize 4   new     formatPos = 0,     stringPos = 0,     paramPos = 2,     paramCount = numargs(),     delim = ' ';   while (string[stringPos] && string[stringPos] <= ' ')   {     stringPos++;   }   while (paramPos < paramCount && string[stringPos])   {     switch (format[formatPos++])     {       case '\0':       {         return 0;       }       case 'i', 'd':       {         new           neg = 1,           num = 0,           ch = string[stringPos];         if (ch == '-')         {           neg = -1;           ch = string[++stringPos];         }         do         {           stringPos++;           if ('0' <= ch <= '9')           {             num = (num * 10) + (ch - '0');           }           else           {             return -1;           }         }         while ((ch = string[stringPos]) > ' ' && ch != delim);         setarg(paramPos, 0, num * neg);       }       case 'h', 'x':       {         new           num = 0,           ch = string[stringPos];         do         {           stringPos++;           switch (ch)           {             case 'x', 'X':             {               num = 0;               continue;             }             case '0' .. '9':             {               num = (num << 4) | (ch - '0');             }             case 'a' .. 'f':             {               num = (num << 4) | (ch - ('a' - 10));             }             case 'A' .. 'F':             {               num = (num << 4) | (ch - ('A' - 10));             }             default:             {               return -1;             }           }         }         while ((ch = string[stringPos]) > ' ' && ch != delim);         setarg(paramPos, 0, num);       }       case 'c':       {         setarg(paramPos, 0, string[stringPos++]);       }       case 'f':       {
        new changestr[16], changepos = 0, strpos = stringPos;         while(changepos < 16 && string[strpos] && string[strpos] != delim)         {           changestr[changepos++] = string[strpos++];           }         changestr[changepos] = '\0';         setarg(paramPos,0,_:floatstr(changestr));       }       case 'p':       {         delim = format[formatPos++];         continue;       }       case '\'':       {         new           end = formatPos - 1,           ch;         while ((ch = format[++end]) && ch != '\'') {}         if (!ch)         {           return -1;         }         format[end] = '\0';         if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)         {           if (format[end + 1])           {             return -1;           }           return 0;         }         format[end] = '\'';         stringPos = ch + (end - formatPos);         formatPos = end + 1;       }       case 'u':       {         new           end = stringPos - 1,           id = 0,           bool:num = true,           ch;         while ((ch = string[++end]) && ch != delim)         {           if (num)           {             if ('0' <= ch <= '9')             {               id = (id * 10) + (ch - '0');             }             else             {               num = false;             }           }         }         if (num && IsPlayerConnected(id))         {           setarg(paramPos, 0, id);         }         else         {           #if !defined foreach             #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))             #define __SSCANF_FOREACH__           #endif           string[end] = '\0';           num = false;           new             name[MAX_PLAYER_NAME];           id = end - stringPos;           foreach (Player, playerid)           {             GetPlayerName(playerid, name, sizeof (name));             if (!strcmp(name, string[stringPos], true, id))             {               setarg(paramPos, 0, playerid);               num = true;               break;             }           }           if (!num)           {             setarg(paramPos, 0, INVALID_PLAYER_ID);           }           string[end] = ch;           #if defined __SSCANF_FOREACH__             #undef foreach             #undef __SSCANF_FOREACH__           #endif         }         stringPos = end;       }       case 's', 'z':       {         new           i = 0,           ch;         if (format[formatPos])         {           while ((ch = string[stringPos++]) && ch != delim)           {             setarg(paramPos, i++, ch);           }           if (!i)           {             return -1;           }         }         else         {           while ((ch = string[stringPos++]))           {             setarg(paramPos, i++, ch);           }         }         stringPos--;         setarg(paramPos, i, '\0');       }       default:       {         continue;       }     }     while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')     {       stringPos++;     }     while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))     {       stringPos++;     }     paramPos++;   }   do   {     if ((delim = format[formatPos++]) > ' ')     {       if (delim == '\'')       {         while ((delim = format[formatPos++]) && delim != '\'') {}       }       else if (delim != 'z')       {         return delim;       }     }   }   while (delim > ' ');   return 0; }
|
Tenho isso na GM:
pawn Code:
native sscanf(const data[], const format[], {Float,_}:...);
native unformat(const data[], const format[], {Float,_}:...) = sscanf;
Na Gm й sу isso '-'
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Elimine isso
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
Elimine isso
|
pawn Code:
public function lacks forward declaration (symbol "OnNPCModeInit")
UP!
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Veja se tem a include "a_npc" na pasta das includes.
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
Veja se tem a include "a_npc" na pasta das includes.
|
Sim Tem! Lб ja tem a forward
pawn Code:
forward OnNPCModeInit();
forward OnNPCModeExit();
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Insira a include no GM depois da "a_samp"
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
Insira a include no GM depois da "a_samp"
|
Jб tenho as duas incluidas na gm:
pawn Code:
#include <a_samp>
#include <a_npc>
Re: Sscanf | IsPlayerConnected -
ReyMysterio - 17.01.2015
Retire a include "a_npc" que vai compilar pois ela jб й chamada na include sscanf.
Re: Sscanf | IsPlayerConnected -
#Luca[S]. - 17.01.2015
Quote:
Originally Posted by ReyMysterio
Retire a include "a_npc" que vai compilar pois ela jб й chamada na include sscanf.
|
Compilou! Vlw

Vou Testar Aqui +REP
Re: Sscanf | IsPlayerConnected -
JonathanFeitosa - 17.01.2015
Amigo nгo vai pegar. Em vez de return 1 vocк estб usando return 0 nos comandos.