[Ayuda] Error en un comando
#1

Tengo un problema con el comando /skin. Cuando se lo coloco funciona correctamente, pero cuando reinicia, lleva el skin de la persona que se lo puso.
PD: es un GM que funciona por MySQL.

Код:
     if(strcmp(cmd, "/skin", true) == 0)
     {
			  new skin;
			  cmd = strtok(cmdtext, idx);
			  if(!strlen(cmd))
			  {
				SendClientMessage(playerid,COLOR_RED,"Usa: /skin [ID] [ID del Skin]");
				return 1;
			  }
			giveplayerid = strval(cmd);
			cmd = strtok(cmdtext, idx);
			if(!strlen(cmd))
			{
				SendClientMessage(playerid,COLOR_RED,"Usa: /skin [ID] [ID del Skin]");
				return 1;
			}
			skin = strval(cmd);
			if(IsPlayerConnected(giveplayerid))
			{
			  if(InfoJugador[playerid][pAdmin] > 1)
			  {
				if (skin == 0)
				{
					GetPlayerName(giveplayerid,giveplayer, sizeof(giveplayer));
					GetPlayerName(playerid,sendername, sizeof(sendername));
					InfoJugador[giveplayerid][pModel] = skin;
					InfoJugador[giveplayerid][pChar] = skin;
					SetPlayerSkin(giveplayerid,0);
					format(string,sizeof(string),"* Has vestido a %s con el skin %d!",giveplayer,skin);
					SendClientMessage(playerid,COLOR_RED,string);
					format(string, sizeof(string), "AdminCmd: %s Te ha puesto el skin %d",sendername,skin);
					SendClientMessage(giveplayerid,COLOR_RED,string);
					return 1;
				}
 				#define	MAX_BAD_SKINS 22
    			new badSkins[MAX_BAD_SKINS] =
    			{ 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 268, 273, 289 };
    			if (skin < 0 || skin > 299) return SendClientMessage(playerid, COLOR_GREEN, "* id de skin invalida");
    			for (new i = 0; i < MAX_BAD_SKINS; i++) { if (skin == badSkins[i]) return SendClientMessage(playerid, COLOR_GREEN, "* id de skin invalida"); }
    			#undef MAX_BAD_SKINS
				GetPlayerName(giveplayerid,giveplayer, sizeof(giveplayer));
				GetPlayerName(playerid,sendername, sizeof(sendername));
				SetPlayerSkin(giveplayerid,skin);
				format(string,sizeof(string),"* Has vestido a %s con el skin %d!",giveplayer,skin);
				SendClientMessage(playerid,COLOR_RED,string);
				format(string, sizeof(string), "%s Te ha puesto el skin %d",sendername,skin);
             	SendClientMessage(giveplayerid,COLOR_RED,string);
                }
                else
                {
			    SendClientMessage(playerid, COLOR_GRAD1, "   No puedes usar ese comando!");
                }
             }
			return 1;
		}
Reply
#2

pawn Код:
if(strcmp(cmd, "/skin", true) == 0)
     {
              new skin;
              cmd = strtok(cmdtext, idx);
              if(!strlen(cmd))
              {
                SendClientMessage(playerid,COLOR_RED,"Usa: /skin [ID] [ID del Skin]");
                return 1;
              }
            giveplayerid = strval(cmd);
            cmd = strtok(cmdtext, idx);
            if(!strlen(cmd))
            {
                SendClientMessage(playerid,COLOR_RED,"Usa: /skin [ID] [ID del Skin]");
                return 1;
            }
            skin = strval(cmd);
            if(IsPlayerConnected(giveplayerid))
            {
              if(InfoJugador[playerid][pAdmin] > 1)
              {
                if (skin == 0)
                {
                    GetPlayerName(giveplayerid,giveplayer, sizeof(giveplayer));
                    GetPlayerName(playerid,sendername, sizeof(sendername));
                    InfoJugador[giveplayerid][pModel] = skin;
                    InfoJugador[giveplayerid][pChar] = skin;
                    SetPlayerSkin(giveplayerid,0);
                    format(string,sizeof(string),"* Has vestido a %s con el skin %d!",giveplayer,skin);
                    SendClientMessage(playerid,COLOR_RED,string);
                    format(string, sizeof(string), "AdminCmd: %s Te ha puesto el skin %d",sendername,skin);
                    SendClientMessage(giveplayerid,COLOR_RED,string);
                    return 1;
                }
                #define MAX_BAD_SKINS 22
                new badSkins[MAX_BAD_SKINS] =
                { 3, 4, 5, 6, 8, 42, 65, 74, 86, 119, 149, 208, 268, 273, 289 };
                if (skin < 0 || skin > 299) return SendClientMessage(playerid, COLOR_GREEN, "* id de skin invalida");
                for (new i = 0; i < MAX_BAD_SKINS; i++) { if (skin == badSkins[i]) return SendClientMessage(playerid, COLOR_GREEN, "* id de skin invalida"); }
                #undef MAX_BAD_SKINS
                GetPlayerName(giveplayerid,giveplayer, sizeof(giveplayer));
                GetPlayerName(playerid,sendername, sizeof(sendername));
                SetPlayerSkin(giveplayerid,skin);
                InfoJugador[giveplayerid][pModel] = skin;
                InfoJugador[giveplayerid][pChar] = skin;
                format(string,sizeof(string),"* Has vestido a %s con el skin %d!",giveplayer,skin);
                SendClientMessage(playerid,COLOR_RED,string);
                format(string, sizeof(string), "%s Te ha puesto el skin %d",sendername,skin);
                SendClientMessage(giveplayerid,COLOR_RED,string);
                }
                else
                {
                SendClientMessage(playerid, COLOR_GRAD1, "   No puedes usar ese comando!");
                }
             }
            return 1;
        }
Reply
#3

pawn Код:
//----------------------------------[Skin]------------------------------------------------
    if(strcmp(cmd, "/skin", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_GRAD2, "Escribe: /Skin [id] [skin id]");
                return 1;
            }
            new para1;
                        new level;
            if (PlayerInfo[playerid][pAdmin] >= 1)
            {
                if(IsPlayerConnected(para1))
                {
                    if(para1 != INVALID_PLAYER_ID)
                    {
                        GetPlayerName(para1, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        PlayerInfo[para1][pChar] = level;
                        format(string, sizeof(string), "Tu skin fue cambiado por %s", sendername);
                        SendClientMessage(para1, COLOR_WHITE, string);
                        format(string, sizeof(string), "Has dado a %s el skin id %d.", giveplayer,level);
                        SendClientMessage(playerid, COLOR_WHITE, string);
                        SetPlayerSkin(para1, PlayerInfo[para1][pChar]);
                    }
                }//No conectado ...
            }
            else
            {
                SendClientMessage(playerid, COLOR_GRAD1, "   No eres admin!");
            }
        }
        return 1;
    }
Proba asi, si falta algo avisa
Reply
#4

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
Proba asi, si falta algo avisa
Usando ese cуdigo distinto al suyo puede hacer crashear al cliente o al servidor ya que puedes emplear los skins: 3, 4, 5... Dejando de lado eso, їEl cуdigo funciona? Emplea esta parte: "PlayerInfo[para1][pChar] = level;" para cambiarle el skin al jugador, pero la variable: "level" no tiene asignado ningъn valor.
Reply
#5

Talvez el problema sea cuando requiere clase (OnPlayerRequestClass)

Ponle esto:

pawn Код:
public OnPlayerRequestClass(playerid, classid)
{
     SetPlayerSkin(playerid,PlayerInfo[playerid][pModel]);
     //...
     return 1;
}
Reply
#6

Eso ya lo debe tener, ya que aparece con el skin antiguo. El problema es que solo guarda el nuevo skin si este es el 0 (el de CJ). Si pone mi cуdigo le debe funcionar correctamente.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)