[Ayuda] Comando /intentar
#1

pongo esto por si otros tenian el mismo problema o querian hacer ese cambio puedan hacerlo, solo necesitamos que alguien nos ayude,

Код:
	if(strcmp(cmd, "/intentar", true) == 0)
	{
	  if(IsPlayerConnected(playerid))
	  {
	    if(gPlayerLogged[playerid] == 0)
	    {
	      SendClientMessage(playerid, COLOR_GREY, "  No te has Logeado");
	      return 1;
	    }
			GetPlayerName(playerid, sendername, sizeof(sendername));
			new length = strlen(cmdtext);
			while ((idx < length) && (cmdtext[idx] <= ' '))
			{
				idx++;
			}
			new offset = idx;
			new result[64];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			if(!strlen(result))
			{
				SendClientMessage(playerid, COLOR_GRAD2, "USO: /intenta [accion]");
				return 1;
			}
			new randa = random(2)+1;
			if(PlayerInfo[playerid][pMaskuse] == 1)
			{
				if(randa == 1)
				format(string, sizeof(string), "*** Extraсo intenta %s y lo consigue!", result);
				else format(string, sizeof(string), "*** Extraсo intenta %s, pero falla!!", result);
			}
			else
			{
			  if(randa == 1)
				format(string, sizeof(string), "*** %s intenta %s y lo consigue!", sendername, result);
				else format(string, sizeof(string), "*** %s intenta %s, pero falla!", sendername, result);
			}
			ProxDetector(30.0,playerid, string, COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
			printf("%s", string);
		}
		return 1;
	}
Quisiera que cuando dijera "Falla" salga en rojo no en el mismo color que el de "Conseguir" y que solo lo pudieran utilizar 3 veces, muchas personas abusan de el codigo y lo pueden hacer infinitas veces.
Reply
#2

mmm amigo mejor te aces el Comando intentar De otra Manera Mira te ayudare
//arriba del todo esto:
new RandomMSG[][] =
{
"y No Consigio",
"y Consiguio Hacerlo."

};
//i en la linea de Comandos Pues
if(!strcmp(cmdtext, "/in", true, 3))
{
if(!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /in [accion]");
new str[128];
new randMSG = random(sizeof(RandomMSG));
GetPlayerName(playerid, str, sizeof(str));
format(str, sizeof(str), "* %s intento %s", str, cmdtext[4],RandomMSG[randMSG]);
SendClientMessageToAll(0xFFFF00AA, str);
return 1;
}


Suerte Colega!
Reply
#3

eso intentaba pero tengo complicaciones porque uno es para los que tienen la mascara puesta y los usuarios normales
Reply
#4

Bueno yo lo tengo asi:
pawn Код:
//arriba de todo:
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);

//en cualquier parte:
public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
    if(IsPlayerConnected(playerid))
    {
        new Float:posx, Float:posy, Float:posz;
        new Float:oldposx, Float:oldposy, Float:oldposz;
        new Float:tempposx, Float:tempposy, Float:tempposz;

        GetPlayerPos(playerid, oldposx, oldposy, oldposz);
        //radi = 2.0; //Trigger Radius
        for(new i = 0; i < MAX_PLAYERS; i++)
        {
            if(IsPlayerConnected(i))
            {
                if(!BigEar[i])
                {
                    GetPlayerPos(i, posx, posy, posz);
                    tempposx = (oldposx -posx);
                    tempposy = (oldposy -posy);
                    tempposz = (oldposz -posz);
                    //printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
                    if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
                    {
                      if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
                      {
                            SendClientMessage(i, col1, string);
                        }
                    }
                    else if (((tempposx < radi/8) && (tempposx > -radi/8)) && ((tempposy < radi/8) && (tempposy > -radi/8)) && ((tempposz < radi/8) && (tempposz > -radi/8)))
                    {
            if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
            {
                            SendClientMessage(i, col2, string);
                        }
                    }
                    else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
                    {
                      if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
                      {
                            SendClientMessage(i, col3, string);
                        }
                    }
                    else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
                    {
                      if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
                      {
                            SendClientMessage(i, col4, string);
                        }
                    }
                    else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
                    {
            if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
            {
                            SendClientMessage(i, col5, string);
                        }
                    }
    }
                else
                {
                    SendClientMessage(i, col1, string);
                }
            }
        }
    }//not connected
    return 1;
}

//en OnPlayerCommandText:
if(strcmp(cmd, "/intentar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " No te has Logeado !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "USA: /intentar [accion]");
return 1;
}
new which_message = random(2);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(which_message == 0)
{
format(string, sizeof(string), "*%s intenta %s y lo logra", name, result);
ProxDetector(30.0,playerid, string, COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
}
else if(which_message == 1)
{
format(string, sizeof(string), "*%s intenta %s y falla", name, result);
ProxDetector(30.0,playerid, string, COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED);
}
}
}
------------------------

Para que solo pueda usarlo 3 veces:
pawn Код:
//arriba de todo
#define MAXIMOS_INTENTAR 3 //el 3 es el numero maximo q puede intentar
forward VolverUsarIntentar(playerid);
new NoIntentar[MAX_PLAYERS];

//dentro del comando /intentar:
if(strcmp(cmd,"/intentar",true)==0)
{
  if(NoIntentar[playerid] == MAXIMOS_INTENTAR) return SendClientMessage(playerid,0xff0000ff,"No puedes volver a usar este comando tan rapido");
  //Aqui tu codigo
  if(NoIntentar[playerid] < MAXIMOS_INTENTAR) NoIntentar[playerid]++;
  if(NoIntentar[playerid] == MAXIMOS_INTENTAR)
  {
   SetTimerEx("VolverUsarIntentar",60000,0,"d",playerid);
  }
  return 1;
}

//al final:
public VolverUsarIntentar(playerid)
{
  NoIntentar[playerid] = 0;
  return 1;
}
-----------------------------------------------
Codigo: Gantzyo
Reply
#5

gracias por la respuestas, y como le agrego tambien para cuando pongan /intentar y tenga mascara salga como "Extraсo intenta tal cosa" como el que puse arriba en el primer post
Reply
#6

Pues no se como es la funcion que tienes de extraсo pero suponele:

pawn Код:
if(strcmp(cmd, "/intentar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " No te has Logeado !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "USA: /intentar [accion]");
return 1;
}
new which_message = random(2);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(which_message == 0)
{
 format(string, sizeof(string), "*%s intenta %s y lo logra", name, result); ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
}
 else if(PlayerInfo[playerid][pMaskuse] == 1)
 {
 format(string, sizeof(string), "*Extraсo intenta %s y lo logra", name, result); ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
}
}
if(which_message == 1)
{
format(string, sizeof(string), "*%s intenta %s y falla", name, result);
ProxDetector(30.0,playerid, string, COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED);
}
 else if(PlayerInfo[playerid][pMaskuse] == 1)
 {
 format(string, sizeof(string), "*Extraсo intenta %s y falla", name, result); ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
}
}
}
}
Fijate,el "EsExtraсo" lo cambias por la funcion que es cuando tienes mascara.
Reply
#7

gracias por responder, me tira estos 3 errores tu codigo
Код:
rp.pwn(20638) : error 017: undefined symbol "which_message"
rp.pwn(20640) : error 017: undefined symbol "name"
rp.pwn(20645) : error 017: undefined symbol "name"
Reply
#8

Entonces asi, ami no me dio ningun error:
pawn Код:
if(strcmp(cmd, "/intentar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " No te has Logeado !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "USA: /intentar [accion]");
return 1;
}
new which_message = random(2);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(which_message == 0)
{
 format(string, sizeof(string), "*%s intenta %s y lo logra", name, result);
 ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
 if(PlayerInfo[playerid][pMaskuse] == 1)
 {
   format(string, sizeof(string), "*Extraсo intenta %s y lo logra", name, result); ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
 }
}
else if(which_message == 1)
{
 format(string, sizeof(string), "*%s intenta %s y falla", name, result);
 ProxDetector(30.0,playerid, string, COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED);
 if(PlayerInfo[playerid][pMaskuse] == 1)
 {
 format(string, sizeof(string), "*Extraсo intenta %s y falla", name, result); ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
 }
}
}
return 1;
}
return 0;
}
Reply
#9

ahora funsiona pero tiene un bug, sin la mascara funsiona perfecto, pero cuando me la pongo me dice extraсo intenta pero tambien me dice mi nombre como si no la tuviera ejemplo


Carlos: Intenta bailar y lo consigue
Extraсo: Intenta bailar y lo consigue

y el extraсo cuando falla o lo consigue lo dice del mismo color verde tambien
Reply
#10

Bueno no estoy seguro porque no puedo probar el codigo pero creo que asi se arregla:

pawn Код:
if(strcmp(cmd, "/intentar", true) == 0)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid] == 0)
{
SendClientMessage(playerid, COLOR_GREY, " No te has Logeado !");
return 1;
}
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
SendClientMessage(playerid, COLOR_GRAD2, "USA: /intentar [accion]");
return 1;
}
new which_message = random(2);
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(which_message == 0)
{
 format(string, sizeof(string), "*%s intenta %s y lo logra", name, result);
 ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
 return 1;
}
if(PlayerInfo[playerid][pMaskuse] == 1)
 {
   format(string, sizeof(string), "*Extraсo intenta %s y lo logra", name, result); ProxDetector(30.0,playerid,string,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN,COLOR_GREEN);
   return 1;
}
else if(which_message == 1)
{
 format(string, sizeof(string), "*%s intenta %s y falla", name, result);
 ProxDetector(30.0,playerid, string, COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED);
 return 1;
 }
if(PlayerInfo[playerid][pMaskuse] == 1)
 {
 format(string, sizeof(string), "*Extraсo intenta %s y falla", name, result); ProxDetector(30.0,playerid,string,COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED,COLOR_RED);
 return 1;
}
}
return 1;
}
return 0;
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)