pasar de strcmp a zcmd -
pep_25 - 09.12.2013
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;
}
Re: pasar de strcmp a zcmd -
PT - 09.12.2013
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;
}
Respuesta: pasar de strcmp a zcmd -
pep_25 - 10.12.2013
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