[AYUDA] Problema con los comandos
#1

Hola,

He creado unos comandos para sacar el tazer, linterna y armadura... pero hay un problema, si un user usa el comando /sacartazer, y luego yo intento tambiйn sacarlo, me dice que ya lo tengo sacado... їcуmo puede ser eso si yo no la saquй?
Luego si yo saco la linterna, y despuйs mi compaсero tambiйn intenta sacarla, le dice que ya tiene la linterna...

Los cуdigos los hice de la siguiente manera, puse los new:

Код:
new armaduraenmanot;
new armaduraenespalda;
new linternaenmano;
new tazerenmano;
Luego puse los comandos:

Код:
    if (strcmp("/sacararmadura", cmdtext, true, 10) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
            new counter = 0;
             for(new i = 453; i <= 459; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 20; i <= 28; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 32; i <= 37; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 460; i <= 461; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 468; i <= 470; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 19; i <= 19; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             if(counter == 0)
             {
               SendClientMessage(playerid, COLOR_GREY, "No estбs cerca de ningъn vehнculo policial.");
               return 1;
             }
             if(armaduraenmano == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "ЎYa tienes una armadura!");
               return 1;
            }
            if(armaduraenespalda == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "ЎYa tienes una armadura, la tienes en la espalda!");
               return 1;
            }
              PutRiotShieldOnArm(playerid);
              format(string, sizeof(string), "* %s agarra la armadura anti-disturbios del maletero.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            armaduraenmano = 1;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
    
    if (strcmp("/guardararmadura", cmdtext, true, 10) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
            new counter = 0;
             for(new i = 453; i <= 459; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 20; i <= 28; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 32; i <= 37; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 460; i <= 461; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 468; i <= 470; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             for(new i = 19; i <= 19; i++)
             {
                 new dist = CheckPlayerDistanceToVehicle(7, playerid, i);
                 if(dist)
                 {
                     counter++;
                 }
             }
             if(counter == 0)
             {
               SendClientMessage(playerid, COLOR_GREY, "No estбs cerca de ningъn vehнculo policial.");
               return 1;
             }
             if(armaduraenmano == 0)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "No tienes ninguna armadura en mano o lo tienes en la espalda.");
               return 1;
            }
              RemoveItems(playerid);
              format(string, sizeof(string), "* %s agarra la armadura anti-disturbios y lo guarda en el maletero.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            armaduraenmano = 0;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
    
    if (strcmp("/colgararmadura", cmdtext, true, 10) == 0)
    {
       if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
               if(armaduraenmano == 0)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "No tienes ninguna armadura en mano");
               return 1;
            }
                PutRiotShieldOnBack(playerid);
              format(string, sizeof(string), "* %s se cuelga la armadura anti-disturbios en su espalda.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            armaduraenmano = 0;
            armaduraenespalda = 1;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
    
    if (strcmp("/descolgararmadura", cmdtext, true, 10) == 0)
    {
       if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
               if(armaduraenespalda == 0)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "No tienes ninguna armadura en la espalda");
               return 1;
            }
                PutRiotShieldOnArm(playerid);
              format(string, sizeof(string), "* %s se cuelga la armadura anti-disturbios en su espalda.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            armaduraenmano = 1;
            armaduraenespalda = 0;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
    
    if (strcmp("/sacarlinterna", cmdtext, true, 10) == 0)
    {
       if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
               if(linternaenmano == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "Ya tienes el tazer en la mano...");
               return 1;
            }
            if(tazerenmano == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "Tienes un tazer, por lo que no puedes sacar la linterna.");
               return 1;
            }
                GiveFlashLight(playerid);
              format(string, sizeof(string), "* %s agarra la linterna de su cinturуn.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            linternaenmano = 1;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
    
    if (strcmp("/guardarlinterna", cmdtext, true, 10) == 0)
    {
       if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
               if(tazerenmano == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "No tienes linterna, tienes tazer.");
               return 1;
            }
            if(linternaenmano == 0)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "No tienes ningъna linterna para guardar.");
               return 1;
            }
                RemoveItems(playerid);
              format(string, sizeof(string), "* %s guarda la linterna en su cinturуn.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            linternaenmano = 0;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
    
    if (strcmp("/sacartazer", cmdtext, true, 10) == 0)
    {
       if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
               if(tazerenmano == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "Ya tienes el tazer en la mano...");
               return 1;
            }
            if(linternaenmano == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "Tienes una linterna, por lo que no puedes sacar el tazer.");
               return 1;
            }
                GiveTazer(playerid);
              format(string, sizeof(string), "* %s agarra el tazer de su cinturуn y lo prepara para usarlo.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            tazerenmano = 1;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
    
    if (strcmp("/guardartazer", cmdtext, true, 10) == 0)
    {
       if(IsPlayerConnected(playerid))
        {
           if (PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pLeader] == 1)
           {
               if(linternaenmano == 1)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "No tienes tazer, tienes linterna.");
               return 1;
            }
               if(tazerenmano == 0)
            {
               SendClientMessage(playerid, 0xAFAFAFAA, "No tienes ningъn tazer para guardar.");
               return 1;
            }
                RemoveItems(playerid);
              format(string, sizeof(string), "* %s guarda el tazer en su cinturуn.", sendername);
            ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
            tazerenmano = 0;
              return 1;
         }
         else
         {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no es agente de policнa.");
         }
      }
      else
      {
         SendClientMessage(playerid, COLOR_GRAD2, "No estбs conectado.");
      }
      return 1;
    }
Como pueden ver, he usado un sistema MUY SIMPLE, y que son los tazerenmano = 0; o tazerenmano = 1; para que luego, si tiene ya un objeto en la mano, ya no le deja sacar nada porque ya tiene el tazer y despues, que sн le deje, porque no tiene el tazer.

Todo ese sistema lo tengo yo ya hecho y va perfecto. Pero la cosa se complica porque si mi compaсero saca un tazer /sacartazer y yo luego pongo /sacartazer me sale que ya lo tengo sacado, y no lo saquй...

No se si lo entienden, lo he explicado de la mejor forma, porfavor necesito que me ayuden e intenten que esto no se vaya abajo porque no desearнa revivir el tema haciendo doble post.

Gracias por adelantado y a la espera de vuestra ayuda.


Saludos.
Reply
#2

new armaduraenmanot[MAX_PLAYERS];
new armaduraenespalda[MAX_PLAYERS];
new linternaenmano[MAX_PLAYERS];
new tazerenmano[MAX_PLAYERS];

ej:
armaduraenmano[playerid] = 1;

їentiendes? x.x
Reply
#3

pawn Код:
new armaduraenmanot;
new armaduraenespalda;
new linternaenmano;
new tazerenmano;
pawn Код:
new armaduraenmanot[MAX_PLAYERS];
new armaduraenespalda[MAX_PLAYERS];
new linternaenmano[MAX_PLAYERS];
new tazerenmano[MAX_PLAYERS];
pawn Код:
if(armaduraenespalda == 1)
pawn Код:
if(armaduraenespalda[playerid] == 1)
asi cambia todos..
Reply
#4

Bien muchas gracias lo he probado y va genial.

Pero tengo otro problemita:

Cuando saco la armadura y tambien el tazer (o linterna da igual) entonces tengo las dos cosas, pero... si guardo el tazer entonces la armadura tambien desaparece...

Yo sй lo que pasa, pues que el comando para guardar el tazer usa RemoveItems(playerid); y eso lo que hace es remover todos los objetos...

їse podrнa poner para que sуlo quitara el tazer? Ej: Removetazer(playerid); (creo que no existe eso xD)

Tambiйn podrнa hacer que sуlo pudieras tener un solo objeto, pero nose... queda bien tener la armadura anti-disturbios + el tazer a mano para que puedan tazear sin necesidad de guardar la armadura...

Gracias de antemano.
Reply
#5

Una pregunta, porque
pawn Код:
new armaduraenmanot;

Me parece a mi o le pusistes una "t" de mas ?
Reply
#6

Quote:
Originally Posted by TiNcH010
Посмотреть сообщение
Una pregunta, porque
pawn Код:
new armaduraenmanot;

Me parece a mi o le pusistes una "t" de mas ?
Me parece a mi o le pusiste una "s" de mas a la palabra "pusiste"?
Reply
#7

Hombre, eso ya lo solucionй... ya que al compilar sale error y es fбcil de detectarlo... Pero gracias igualmente por detectar el problema xD

Bueno si alguien sabe algo que mire la respuesta numero #4 para ver si me puede ayudar.

Gracias
Reply
#8

Supongo que sera el include "herramientas de policнas".

RemovePlayerAttachedObject(playerid,slot);

Cada herramienta en un slot distinto.

Mira el include asн te darбs cuenta.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)