Reemplazar Nombre si tiene variable = 1
#1

Hola, como puedo agregarle a esta funciуn (NombreJ(playerid)) que si el jugador tiene la variable Desconocido[playerid]=1; en vez de salir el nombre salga "Desconocido" y seguido el texto del mensaje donde se uso el NombreJ(playerid)

Es para no tener que hacer esto en todos los comandos:
pawn Код:
switch(Desconocido[playerid])
{
case 0:format(string, sizeof(string), "* %s compra un arma.",NombreJ(playerid));
case 1:format(string, sizeof(string), "* Desconocido compra un arma.");
}
ProxDetector(20.0, playerid, string, -1, -1, -1, -1, -1);

Funciуn:
pawn Код:
stock NombreJ(playerid)
{
    new NombrePJ[24], N[24];
    GetPlayerName(playerid, NombrePJ, 24);
    strmid(N, NombrePJ, 0, strlen(NombrePJ), 24);
    for(new i = 0; i < MAX_PLAYER_NAME; i++)
    {
        if (N[i] == '_') N[i] = ' ';
    }
    return N;
}
Reply
#2

PHP код:
stock NombreJ(playerid)
{
    new
        
nombrePJ[MAX_PLAYER_NAME];
        
    if(
Desconocido[playerid] == 1)
        return 
format(nombrePJsizeof nombrePJ"Desconocido");
    for(new 
0len strlen(nombrePJ); len++)
    {
         if (
nombrePJ[i] == '_')
        {
            
nombrePJ[i] = ' ';
        }
    }
    return 
nombrePJ;

Reply
#3

Quote:
Originally Posted by _Zume
Посмотреть сообщение
PHP код:
stock NombreJ(playerid)
{
    new
        
nombrePJ[MAX_PLAYER_NAME];
        
    if(
Desconocido[playerid] == 1)
        return 
format(nombrePJsizeof nombrePJ"Desconocido");
    for(new 
0len strlen(nombrePJ); len++)
    {
         if (
nombrePJ[i] == '_')
        {
            
nombrePJ[i] = ' ';
        }
    }
    return 
nombrePJ;

Hola, gracias por responder pero me sale un error:

error 079: inconsistent return types (array & non-array)

En la linea:
return format(nombrePJ, sizeof nombrePJ, "Desconocido");

sera que lo podrнas arreglar?
Reply
#4

Quote:
Originally Posted by Mamoru
Посмотреть сообщение
Hola, gracias por responder pero me sale un error:

error 079: inconsistent return types (array & non-array)

En la linea:
return format(nombrePJ, sizeof nombrePJ, "Desconocido");

sera que lo podrнas arreglar?
pawn Код:
return format(nombrePJ, sizeof(nombrePJ), "Desconocido");
Reply
#5

Quote:
Originally Posted by Malganys
Посмотреть сообщение
pawn Код:
return format(nombrePJ, sizeof(nombrePJ), "Desconocido");
Ya lo habнa intentado asн pero sale el mismo error.
Reply
#6

Quote:
Originally Posted by Mamoru
Посмотреть сообщение
Hola, gracias por responder pero me sale un error:

error 079: inconsistent return types (array & non-array)

En la linea:
return format(nombrePJ, sizeof nombrePJ, "Desconocido");

sera que lo podrнas arreglar?
No puedes retornar un array, solo tipos primitivos, un char en este caso.

Pasalo por parametro, por referencia, entrada salida.

PHP код:
NombreJ(playerid, &nombrePJ[MAX_PLAYER_NAME]) 
{          
    if(
Desconocido[playerid] == 1
        
format(nombrePJsizeof nombrePJ"Desconocido"); 
    for(new 
0len strlen(nombrePJ); len++) 
    { 
         if (
nombrePJ[i] == '_'
        { 
            
nombrePJ[i] = ' '
        } 
    } 

Reply
#7

Quote:
Originally Posted by kirk
Посмотреть сообщение
No puedes retornar un array, solo tipos primitivos, un char en este caso.

Pasalo por parametro, por referencia, entrada salida.

PHP код:
NombreJ(playerid, &nombrePJ[MAX_PLAYER_NAME]) 
{          
    if(
Desconocido[playerid] == 1
        
format(nombrePJsizeof nombrePJ"Desconocido"); 
    for(new 
0len strlen(nombrePJ); len++) 
    { 
         if (
nombrePJ[i] == '_'
        { 
            
nombrePJ[i] = ' '
        } 
    } 

me salen estos errores:
warning 202: number of arguments does not match definition
error 067: variable cannot be both a reference and an array (variable "nombrePJ")
warning 209: function "NombreJ" should return a value
Reply
#8

pawn Код:
stock NombreJ(playerid)
{
    new nombrePJ[MAX_PLAYER_NAME];
    if(Desconocido[playerid] == 1) format(nombrePJ, sizeof(nombrePJ), "Desconocido");
    else
    {
        new name[MAX_PLAYER_NAME];
        GetPlayerName(playerid, name, MAX_PLAYER_NAME);
        format(nombrePJ, sizeof(nombrePJ), "%s", ReplaceString("_", " ", name));
    }
    return nombrePJ;
}

stock ReplaceString(search[], replace[], source[])
{
    new newstring[256], newlen;
    for(new i; i < strlen(source); i++)
    {
        if(strlen(search) > 1 && i != (strlen(source) - 1))
        {
            new matched = 1, start = i;
            for(new s = 0; s < strlen(search) && matched == 1; s++)
            {
                if(source[i] != search[s] && s == 0)
                {
                    newstring[newlen] = source[i];
                    matched = 0;
                }
                else
                {
                    if(source[i] == search[s]) i++;
                    else matched = 0;
                }
            }
            if(matched == 0)
            {
                while(start <= i)
                {
                    newstring[newlen] = source[start];
                    newlen++;
                    start++;
                }
            }
            else
            {
                for(new r; r < strlen(replace); r++)
                {
                    newstring[newlen] = replace[r];
                    newlen++;
                }
                i = (start + (strlen(search) - 1));
            }
        }
        else
        {
            if(strlen(search) == 1 && source[i] == search[0])
            {
                for(new r; r < strlen(replace); r++)
                {
                    newstring[newlen] = replace[r];
                    newlen++;
                }
            }
            else
            {
                newstring[newlen] = source[i];
                newlen++;
            }
        }
    }
    newstring[newlen] = EOS;
    return newstring;
}
Reply
#9

Gracias a todos por responder,
y gracias SickAttack me sirviу lo que me pasaste!!
Reply


Forum Jump:


Users browsing this thread: