Solo una pequeсa duda.
#1

Feliz aсo nuevo a todos.
Quiero aprender a como hacer un comando que sea asн: /color <blanco/negro>

pawn Код:
dcmd_color(playerid, params[])
{
    //En vez de que sea por nъmeros (/color <1/2>) sea por palabras: /color <blanco/negro>
    //Y que se use Dcmd
    return 1;
}
Espero que me puedan ayudar.
Reply
#2

pawn Код:
dcmd_color(playerid, params[])
{
    if (!strcmp(params, "negro", true))
    {
        // aqui negro
    }
    else if (!strcmp(params, "blanco", true))
    {
        // aqui blanco
    }

    return 1;
}
Reply
#3

Mmm, todo sale bien pero cuando uso el comando /teleport Deathmatch sale como desconocido.
Aquн el cуdigo:

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    dcmd(teleport, 8, cmdtext);
    return 0;
}

dcmd_teleport(playerid, params[])
{
    new teleport;
    if(sscanf(params, "s", teleport)) return SendClientMessage(playerid, COLOR_ORANGE,"Usage: /teleport <teleportname>");
    if(!strcmp(params, "Deathmatch", true))
    {
        SendClientMessage(playerid, COLOR_GREEN,"Welcome to the Deathmatch zone");
        SendClientMessage(playerid, COLOR_WHITE,"Use /weaponmenu to select another weapon");
    }
    return 1;
}
Reply
#4

Quote:
Originally Posted by arturo clark
Посмотреть сообщение
pawn Код:
new teleport;
if(sscanf(params, "s", teleport)) return SendClientMessage(playerid, COLOR_ORANGE,"Usage: /teleport <teleportname>");
La variable "teleport" solo puede almacenar un nъmero entero y tu estбs tratando de asignarle una cadena de texto. Ademбs, їpara que utilizar sscanf en ese comando si solo vas a verificar si hay UN parametro despuйs del comando?

Esta serнa mi versiуn de ese comando:
pawn Код:
dcmd_teleport(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, COLOR_ORANGE, "Usage: /teleport <location>");
    else if(strcmp(params, "deathmatch", true) == false)
    {
        SendClientMessage(playerid, COLOR_GREEN, "Welcome to the deathmatch zone.");
        SendClientMessage(playerid, COLOR_WHITE, "Use /weaponmenu to select another weapon.");
    }
    return 1;
}
"isnull" te dice si una cadena de texto (en nuestro caso params) estб vacнa. Si params que es el ъnico parametro estб vacнo, significa que el jugador no escribiу nada despuйs del comando. Lo demбs es muy simple, creo que no necesita explicaciуn.
Reply
#5

Errores. ;S
Код:
C:\Users\USER\Documents\Mis Juegos\GTA San Andreas\SA-MP\Server\Deathmatch\gamemodes\Race-Life.pwn(180) : error 017: undefined symbol "isnull"
C:\Users\USER\Documents\Mis Juegos\GTA San Andreas\SA-MP\Server\Deathmatch\gamemodes\Race-Life.pwn(181) : warning 213: tag mismatch
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


1 Error.
Reply
#6

El primer error es porque no tienes la funciуn "isnull" definida en ningъn lugar y el segundo porque yo me equivoque en:
pawn Код:
else if(strcmp(params, "deathmatch", true) == false) // false deberнa ser 0 o un ! al comienso de la condiciуn.
"isnull" revisa si la primera celda de una cadena de texto es \0, si lo es entonces la cadena de texto (string) estб vacнa. Hay otros casos pero creo que la condiciуn que verбs en la soluciуn servirб.

Soluciуn:
pawn Код:
dcmd_teleport(playerid, params[])
{
    if(params[0] == '\0') return SendClientMessage(playerid, COLOR_ORANGE, "Usage: /teleport <location>");
    else if(!strcmp(params, "deathmatch", true))
    {
        SendClientMessage(playerid, COLOR_GREEN, "Welcome to the deathmatch zone.");
        SendClientMessage(playerid, COLOR_WHITE, "Use /weaponmenu to select another weapon.");
    }
    return 1;
}
Por cierto, si el jugador escribe algo diferente a "deathmatch" como parametro el comando no va a hacer nada.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)