Alguien que me enseсe a usar sscanf
#1

Hola a todos me gustaria si alguien me da una mano con el sscanf y params que no lo comprendo del todo.. osea nose como pasar comandos de strtok a sscanf como por ejemplo este

pawn Код:
if(strcmp(cmd, "/asellhouse", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            GetPlayerName(playerid, playername, sizeof(playername));
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /asellhouse [houseid]");
                return 1;
            }
            new house = strval(tmp);
            if (PlayerInfo[playerid][pAdmin] >= 4)
            {
                HouseInfo[house][hHel] = 0;
                HouseInfo[house][hArm] = 0;
                HouseInfo[house][hHealthx] = 0;
                HouseInfo[house][hHealthy] = 0;
                HouseInfo[house][hHealthz] = 0;
                HouseInfo[house][hArmourx] = 0;
                HouseInfo[house][hArmoury] = 0;
                HouseInfo[house][hArmourz] = 0;
                HouseInfo[house][hLock] = 1;
                HouseInfo[house][hOwned] = 0;
                HouseInfo[house][hVec] = 418;
                HouseInfo[house][hVcol1] = -1;
                HouseInfo[house][hVcol2] = -1;
                strmid(HouseInfo[house][hOwner], "The State", 0, strlen("The State"), 255);
                PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                format(string, sizeof(string), "~w~You have sold this Casas", HouseInfo[house][hValue]);
                GameTextForPlayer(playerid, string, 10000, 3);
                OnPropUpdate();
                return 1;
            }
            else
            {
                SendClientMessage(playerid, COLOR_WHITE, "You are not an admin.");
            }
        }
        return 1;
    }
Asi como este tengo muchos ya que estoy con un larp mejorandolo y quiero ampliar mi conocimiento asi que les pido que no me hagan el comando quiero hacerlo yo pero nose como asi que les pido una mano y gracias de antemano.
Reply
#2

Bueno primero que nada, tenйs que aprender los tipos de variables.
La funciуn sscanf sirve para separar una variable string en otras de distintos tipos.
Ejemplo:
pawn Код:
new Variable[11] = "1 2.5 Hola";
new entero, Float:decimal, string[5];
sscanf(Variable, "ifs[5]", entero, decimal, string);
Dentro de sscanf la i significa integer de nъmero entero, la f de float y la s de string y lo que estб entre corchetes es el tamaсo de la string mбs el carбcter nulo. Es lo mismo que en los timers pero cambia un poco.
Luego de ejecutarse la funciуn, entero serнa igual a 1, decimal a 2.5 y string igual a "Hola".
Reply
#3

Creo que ya lo entendi vector asi me quedo el comando

pawn Код:
zcmd(asellhouse, playerid, params[])
{
new string[256];
new playername[MAX_PLAYER_NAME];
        if(IsPlayerConnected(playerid))
        {
            GetPlayerName(playerid, playername, sizeof(playername));
           if(!sscanf(params, "i", params[0]))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /asellhouse [houseid]");
                return 1;
            }
            new house = params[1];
            if (Informacion[playerid][pAdmin] >= 4)
            {
                HouseInfo[house][hHel] = 0;
                HouseInfo[house][hArm] = 0;
                HouseInfo[house][hHealthx] = 0;
                HouseInfo[house][hHealthy] = 0;
                HouseInfo[house][hHealthz] = 0;
                HouseInfo[house][hArmourx] = 0;
                HouseInfo[house][hArmoury] = 0;
                HouseInfo[house][hArmourz] = 0;
                HouseInfo[house][hLock] = 1;
                HouseInfo[house][hOwned] = 0;
                HouseInfo[house][hVec] = 418;
                HouseInfo[house][hVcol1] = -1;
                HouseInfo[house][hVcol2] = -1;
                strmid(HouseInfo[house][hOwner], "The State", 0, strlen("The State"), 255);
                PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                format(string, sizeof(string), "~w~You have sold this Casas", HouseInfo[house][hValue]);
                GameTextForPlayer(playerid, string, 10000, 3);
                OnPropUpdate();
                return 1;
            }
            else
            {
                SendClientMessage(playerid, COLOR_WHITE, "You are not an admin.");
            }
        }
        return 1;
    }
Reply
#4

en if(!sscanf(params, "i", params[0]))

el "!" no debe de ir en el comando o va a funcionar si no colocas la ID.
Reply
#5

pawn Код:
if(sscanf(params, "i", params[0]))
            {
                SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /asellhouse [houseid]");
                return 1;
            }
o
pawn Код:
if(sscanf(params, "i", params[0])) return SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /asellhouse [houseid]"),1;
o (estб manera no usa sscanf, es simple)
pawn Код:
if(!strlen(params) || !isNumeric(params)) return SendClientMessage(playerid, COLOR_GRAD1, "USAGE: /asellhouse [houseid]"),1;
new houseid = strval(params);
Es asн, creo que sscanf retorna un valor mayor a 0 cuando no puede separar los datos. Personalmente lo utilizo asн en comandos, tambiйn le doy otros usos.
Reply
#6

Todo estб AQUI.
Reply
#7

Quote:
Originally Posted by junkbuster
Посмотреть сообщение
Todo estб AQUI.
I don't speak English!!!

I don't understand the English??

Reply
#8

Quote:
Originally Posted by junkbuster
Посмотреть сообщение
Todo estб AQUI.
Yo cuando era novato y estaba sscanf 1.0, no entendнa un pomo, aveces es necesario que te lo explique otro para poder entenderlo mejor.
Reply
#9

Muchнsimas gracias! la verdad necesitaba una mano de todos la verdad digan lo que digan son los mejores

+rep
Reply
#10

Quote:
Originally Posted by Treyfus
Посмотреть сообщение
I don't speak English!!!

I don't understand the English??

Miles de traductores en internet.

Quote:

Yo cuando era novato y estaba sscanf 1.0, no entendнa un pomo, aveces es necesario que te lo explique otro para poder entenderlo mejor.

Aveces no es necesario que otro te lo explique si verdaderamente quieres aprender, ****** ahi lo estб explicando todo, sуlo faltarнa que tradusca el texto e intente, la prбctica hace al maestro. Pero es demasiado bueno tambiйn que ustedes lo ayuden no estoy en contra de nada.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)