zcmd+sscanf returns ??
#1

Hola me pueden ayudar, tengo problema con los parбmetros en sscanf, hago comandos & unos funcionan & otros no aver pondre un ejemplo & corriganme si estoy mal

Aquн un ejemplo con variables mundiales ( ї se puedй ? )

pawn Код:
#include "a_samp"

#include "zcmd"

#include "sscanf"

enum Datos
{
Admin,

Score
};

new PlayerInfo[ MAX_PLAYERS ][ Datos ];

new Cantidad, Player;

CMD:setscore ( playerid, params[] )
{
  if ( PlayerInfo[ playerid ][ Admin ] >= 1 ) return SendClientMessage ( playerid, -1, ".." );
 
  if ( sscanf ( params, "ui", Player, Cantidad ) ) return SendClientMessage ( playerid, -1, ".." );
 
  if ( !IsPlayerConnected ( Player ) ) return SendClientMessage ( playerid, -1, ".." );
 
  PlayerInfo[ Player ][ Score ] = Cantidad;
 
  SendClientMessage ( playerid, -1, "Comando ejecutado." );
 
  return 1;
}
Si lo coloco asн al ejecutar el comando se queda en un mensaje de algun return o el comando no existe.

Lo intente asн & tampoco:

pawn Код:
CMD:setscore ( playerid, params[] )
{
  if ( PlayerInfo[ playerid ][ Admin ] >= 1 )
  {
  if ( sscanf ( params, "ui", Player, Cantidad ) ) return SendClientMessage ( playerid, -1, ".." );

  if ( !IsPlayerConnected ( Player ) )
  {
  PlayerInfo[ Player ][ Score ] = Cantidad;

  SendClientMessage ( playerid, -1, "Comando ejecutado." );
  }
  else return SendClientMessage ( playerid, -1, ".." );
  }
  else return SendClientMessage ( playerid, -1, ".." );
 
  return 1;
}
& una pregunta.. ї se puede hacer un comando sin news ? solo usando params ? asн:

pawn Код:
CMD:setscore ( playerid, params[] )
{
  if ( PlayerInfo[ playerid ][ Admin ] >= 1 ) return SendClientMessage ( playerid, -1, ".." );

  if ( sscanf ( params, "ui", params[0 ], params[ 1 ] ) ) return SendClientMessage ( playerid, -1, ".." );

  if ( !IsPlayerConnected ( params[ 0 ] ) ) return SendClientMessage ( playerid, -1, ".." );

  PlayerInfo[ params[ 0 ] ][ Score ] = params[ 1 ];

  SendClientMessage ( playerid, -1, "Comando ejecutado." );

  return 1;
}

Gracias.
Reply
#2

1 - Variables mundiales? Te refieres a las globales...
2 - 'puedй' - Tratemos de nunca usarlo.
3 - Sн se puede hacerlo sin crear variables.

No lo sй, pero creo que tu error estб en que dejas un espacio en el nombre del comando y cuando empiezas a escribir los argumentos. Te ordenй el cуdigo ya que es bastante feo como se ve:

pawn Код:
CMD:setscore(playerid, params[]) // 'setscore (' - No recomiendo que lo uses asн.
{
    if(PlayerInfo[playerid][Admin] >= 1) return SendClientMessage(playerid, -1, "..");
    if(sscanf(params, "ui", params[0], params[1])) return SendClientMessage(playerid, -1, "..");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, "..");
    else
    {
        PlayerInfo[params[0]][Score] = params[1]; // Aquн quizбs otro error.
        SendClientMessage(playerid, -1, "Comando ejecutado.");
    }
    return 1;
}
Reply
#3

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
1 - Variables mundiales? Te refieres a las globales...
2 - 'puedй' - Tratemos de nunca usarlo.
3 - Sн se puede hacerlo sin crear variables.

No lo sй, pero creo que tu error estб en que dejas un espacio en el nombre del comando y cuando empiezas a escribir los argumentos. Te ordenй el cуdigo ya que es bastante feo como se ve:

pawn Код:
CMD:setscore(playerid, params[]) // 'setscore (' - No recomiendo que lo uses asн.
{
    if(PlayerInfo[playerid][Admin] >= 1) return SendClientMessage(playerid, -1, "..");
    if(sscanf(params, "ui", params[0], params[1])) return SendClientMessage(playerid, -1, "..");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, "..");
    else
    {
        PlayerInfo[params[0]][Score] = params[1]; // Aquн quizбs otro error.
        SendClientMessage(playerid, -1, "Comando ejecutado.");
    }
    return 1;
}
Lo pongo tal & como lo colocas & repito lo mismo, me manda el mensaje del primer return.
Reply
#4

Serб por que no tienes Nivel Admin. Usa un comando para dбrtelo y prueba el comando 'setscore' otra vez.
Reply
#5

Quote:
Originally Posted by EnzoMetlc
Посмотреть сообщение
Serб por que no tienes Nivel Admin. Usa un comando para dбrtelo y prueba el comando 'setscore' otra vez.
ї Usted cree quй probarнa el comando sin nivel admin ? jajajaja! ya lo tengo, & sigue igual.. alguna otra idea de porquй sucede esto ?.

EDIT: Solucionado.

pawn Код:
CMD:setscore(playerid, params[])
{
   if ( PlayerInfo[ playerid ][ Admin ] >= 1 )
   {
   if ( sscanf ( params, "ui", params[0], params[1] )) return SendClientMessage ( playerid, -1, "Uso: /setscore [playerid] [cantidad]." );
   
   if ( IsPlayerConnected( params[0] ) && params[0] != INVALID_PLAYER_ID )
   {
   SetPlayerScore ( params[0], params[1] );
   
   SendClientMessage ( playerid, -1, "Comando enviado." );
   }
   else
   {
   SendClientMessage ( playerid, -1, "Player no conectado." );
   }
   }
   else
   {
   SendClientMessage ( playerid, -1, "No eres administrador." );
   }
   return 1;
}
Gracias cerebrito.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)