pasar de strcmp a zcmd
#1

Buenas.
Hace rato intento pasar dos comandos /milugar y /lugar pero no puedo, quedan mal, y no se si uso el parametro correcto con sscanf, me gustarнa si me los pudieran pasar ustedes, muchas gracias:

pawn Код:
new cmd[256], idx, tpm[256];

     if(strcmp(cmd, "/milugar", true) == 0)
     {
        new tpm2[256], file[256];
        tpm = strtok(cmdtext,idx);
        tpm2 = strrest(cmdtext, idx);
        format(file, sizeof(file), "/Teleports.txt");
        if(!strlen(tpm))return SendClientMessage(playerid, -1, "Uso: /milugar <nombre> [opcional]<comentario>");
        if(strlen(tpm) > 10)return SendClientMessage(playerid, -1, "ERROR: El nombre es muy largo");
        if(strlen(tpm2) > 90)return SendClientMessage(playerid, -1, "ERROR: El comentario es muy largo");
        if(dini_Isset(file, tpm))return SendClientMessage(playerid, -1, "ERROR: Ese lugar ya existe");
        new Float:X, Float:Y, Float:Z, Float:A, I, Vw, str[11], str2[128];
        GetPlayerPos(playerid, X, Y, Z);
        GetPlayerFacingAngle(playerid, A);
        I = GetPlayerInterior(playerid);
        Vw = GetPlayerVirtualWorld(playerid);
    new dotcount;
    for(new s, l = strlen(tpm2); s < l; s++)
    {
        if (tpm2[s] == ':' && dotcount == 3) return 1;
        if (tpm2[s] == '.' && dotcount < 3) dotcount++;
    }
        if(!dini_Exists(file))dini_Create(file);
        dini_Set(file, tpm, "1");
        format(str, sizeof(str), "%sX", tpm);
        dini_FloatSet(file, str, X);
        format(str, sizeof(str), "%sY", tpm);
        dini_FloatSet(file, str, Y);
        format(str, sizeof(str), "%sZ", tpm);
        dini_FloatSet(file, str, Z);
        format(str, sizeof(str), "%A", tpm);
        dini_FloatSet(file, str, A);
        format(str, sizeof(str), "%sC", tpm);
        dini_Set(file, str, tpm2);
        format(str, sizeof(str), "%sI", tpm);
        dini_IntSet(file, str, I);
        format(str, sizeof(str), "%sVw", tpm);
        dini_IntSet(file, str, Vw);
        format(str2, sizeof(str2), "Has creado un nuevo teleport, usa /lugar %s para ir a el", tpm);
        SendClientMessage(playerid, -1, str2);
          return 1;
    }

    if(strcmp(cmd, "/lugar", true) == 0){
        tpm = strtok(cmdtext,idx);
        if(!strlen(tpm))return SendClientMessage(playerid, -1, "Uso: /lugar <nombre>");
    new Float:health;
    GetPlayerHealth(playerid,health);
   
        new file[256];
        format(file, sizeof(file), "/Teleports.txt");
        if(!dini_Isset(file, tpm))return SendClientMessage(playerid, -1, "ERROR: Ese lugar no existe");
        new Float:X, Float:Y, Float:Z, Float:A, I, str[128], cmt[128];
        format(str, sizeof(str), "%sX", tpm);
        X = dini_Float(file, str);
        format(str, sizeof(str), "%sY", tpm);
        Y = dini_Float(file, str);
        format(str, sizeof(str), "%sZ", tpm);
        Z = dini_Float(file, str);
        format(str, sizeof(str), "%sA", tpm);
        A = dini_Float(file, str);
        format(str, sizeof(str), "%sI", tpm);
        I = dini_Int(file, str);
        if(IsPlayerInAnyVehicle(playerid)){
            SetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
            SetVehicleZAngle(GetPlayerVehicleID(playerid), A);
            LinkVehicleToInterior(GetPlayerVehicleID(playerid), I);
        }
        else{
            SetPlayerPos(playerid, X, Y, Z);
            SetPlayerFacingAngle(playerid, A);
            SetPlayerInterior(playerid, I);
            SetCameraBehindPlayer(playerid);
        }
        format(cmt, sizeof(cmt), "%sC", tpm);
        format(str, sizeof(str), "%s", dini_Get(file, cmt));
        SendClientMessage(playerid, -1, str);
        return 1;
    }
Reply
#2

tenta

pawn Код:
CMD:milugar(playerid, params[])
{
    new file[256];
    format(file, sizeof(file), "/Teleports.txt");
    if(sscanf(cmdtext, "s[10]s[90]", params[0], params[1]))return SendClientMessage(playerid, -1, "Uso: /milugar <nombre> [opcional]<comentario>");
    if(strlen(params[0]) > 10)return SendClientMessage(playerid, -1, "ERROR: El nombre es muy largo");
    if(strlen(params[1]) > 90)return SendClientMessage(playerid, -1, "ERROR: El comentario es muy largo");
    if(dini_Isset(file, params[0]))return SendClientMessage(playerid, -1, "ERROR: Ese lugar ya existe");
    new Float:X, Float:Y, Float:Z, Float:A, I, Vw, str[11], str2[128];
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, A);
    I = GetPlayerInterior(playerid);
    Vw = GetPlayerVirtualWorld(playerid);
    new dotcount;
    for(new s, l = strlen(params[1]); s < l; s++)
    {
        if (params[1][s] == ':' && dotcount == 3) return 1;
        if (params[1][s] == '.' && dotcount < 3) dotcount++;
    }
    if(!dini_Exists(file))dini_Create(file);
    dini_Set(file, params[0], "1");
    format(str, sizeof(str), "%sX", params[0]);
    dini_FloatSet(file, str, X);
    format(str, sizeof(str), "%sY", params[0]);
    dini_FloatSet(file, str, Y);
    format(str, sizeof(str), "%sZ", params[0]);
    dini_FloatSet(file, str, Z);
    format(str, sizeof(str), "%A", params[0]);
    dini_FloatSet(file, str, A);
    format(str, sizeof(str), "%sC", params[0]);
    dini_Set(file, str, params[1]);
    format(str, sizeof(str), "%sI", params[0]);
    dini_IntSet(file, str, I);
    format(str, sizeof(str), "%sVw", params[0]);
    dini_IntSet(file, str, Vw);
    format(str2, sizeof(str2), "Has creado un nuevo teleport, usa /lugar %s para ir a el", params[0]);
    SendClientMessage(playerid, -1, str2);
    return 1;
}

CMD:lugar(playerid, params[])
{
    if(sscanf(cmdtext, "s[10]", params[0])) return SendClientMessage(playerid, -1, "Uso: /lugar <nombre>");
    new file[256];
    format(file, sizeof(file), "/Teleports.txt");
    if(!dini_Isset(file, params[0]))return SendClientMessage(playerid, -1, "ERROR: Ese lugar no existe");
    new Float:X, Float:Y, Float:Z, Float:A, I, str[128], cmt[128];
    format(str, sizeof(str), "%sX", params[0]);
    X = dini_Float(file, str);
    format(str, sizeof(str), "%sY", params[0]);
    Y = dini_Float(file, str);
    format(str, sizeof(str), "%sZ", params[0]);
    Z = dini_Float(file, str);
    format(str, sizeof(str), "%sA", params[0]);
    A = dini_Float(file, str);
    format(str, sizeof(str), "%sI", params[0]);
    I = dini_Int(file, str);
    if(IsPlayerInAnyVehicle(playerid))
    {
        SetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
        SetVehicleZAngle(GetPlayerVehicleID(playerid), A);
        LinkVehicleToInterior(GetPlayerVehicleID(playerid), I);
    }
    else
    {
        SetPlayerPos(playerid, X, Y, Z);
        SetPlayerFacingAngle(playerid, A);
        SetPlayerInterior(playerid, I);
        SetCameraBehindPlayer(playerid);
    }
    format(cmt, sizeof(cmt), "%sC", params[0]);
    format(str, sizeof(str), "%s", dini_Get(file, cmt));
    SendClientMessage(playerid, -1, str);
    return 1;
}
Reply
#3

C:\Users\FELIPE\Desktop\Server\gamemodes\server.pw n(703) : error 001: expected token: ")", but found "["
C:\Users\FELIPE\Desktop\Server\gamemodes\server.pw n(703) : error 029: invalid expression, assumed zero
C:\Users\FELIPE\Desktop\Server\gamemodes\server.pw n(703) : warning 215: expression has no effect
C:\Users\FELIPE\Desktop\Server\gamemodes\server.pw n(703) : error 001: expected token: ";", but found "]"
C:\Users\FELIPE\Desktop\Server\gamemodes\server.pw n(703) : fatal error 107: too many error messages on one line


el error me da en

pawn Код:
for(new s, l = strlen(params[1]); s < l; s++)
    {
        if (params[1][s] == ':' && dotcount == 3) return 1;
        if (params[1][s] == '.' && dotcount < 3) dotcount++;
    }
gracias
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)