Ayuda con comando
#1

Buenas, hace aprox 1 aсo que no toco pawno, no tengo mucha experiencia y lo ultimo que hice fue trabajar en un GM RP...

Al retomarlo me encuentro con un comando que no funciona como es debido, estoy seguro que lo que pasa no es muy dificil, serб la falta de practica, pero no logro ver el error.
el cmd es este
Код:
if(strcmp(cmd, "/reportar", true) == 0) //Reporta a la administraciуn
if(ChatOOC[playerid] == 1){SendClientMessage(playerid, Rojo, "* Espera 60 segundos para volver a reportar."); return 1;}
{
    new length = strlen(cmdtext);
	while ((idx < length) && (cmdtext[idx] <= ' '))
	{
		idx++;
	}
	new offset = idx;
	new result[150];
	while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
	{
		result[idx - offset] = cmdtext[idx];
		idx++;
	}
	result[idx - offset] = EOS;
	if(!strlen(result))
	{
		SendClientMessage(playerid, Naranja, "* /Reportar [Reporte]");
		return 1;
	}
	new string2[255];
	format(string, sizeof(string), "Reporte de %s [ID: %d]:", GetPlayerNameRP(playerid), playerid);
	SendAdminMessage(Ocre, string);
	format(string2, sizeof(string2), "Reporte: %s", result);
    SendAdminMessage(Ocre, string2);
    
	SendClientMessage(playerid, Amarillo, "Reporte enviado a la administraciуn. Espera a que te respondan.");
	format(string2, sizeof(string2), "Reporte: %s", result);
    SendClientMessage(playerid, Amarillo, string2);
	ChatOOC[playerid] = 1;
	SetTimerEx("ChatOOCTimer",60000,0,"d",playerid);
	return 1;
}
Lo que sucede es que cualquier comando que yo escriba me lo toma como que esta mal escrito el reportar, (me sale el aviso de que utilize "/reportar reporte" y si yo llego a poner /"cualquiercosa"+algo me lo cuenta como el comando reportar...

Alguien que me abra los ojos? Muchas gracias!
Reply
#2

Cambia el comando a ZCMD y a sscanf. Es mejor que usar OnPlayerCommandText...
Aquн te lo tradusco a ZCMD y a sscanf, esto quizбs solucione el error:

pawn Код:
CMD:reportar(playerid, params[])
{
    new result[128];
    if(ChatOOC[playerid] == 1)
    {
        SendClientMessage(playerid, Rojo, "* Espera 60 segundos para volver a reportar.");
        //Si pones return 1 aquн es lo mismo que poner abajo else. Igual, como quieras c:
    }
    else
    {
        if(sscanf(params, "s[128]", result)) return SendClientMessage(playerid, Naranja, "* /Reportar [Reporte]");
        else
        {
            new string[255];//Puedes reutilizar una variable para ahorrar memoria, a no ser de que la estes usando como global, ponle string2
            format(string, sizeof(string), "Reporte de %s [ID: %d]:", GetPlayerNameRP(playerid), playerid);
            SendAdminMessage(ocre, string);
           
            format(string, sizeof(string), "Reporte: %s", result);
            SendAdminMessage(Ocre, string);
           
            SendClientMessage(playerid, Amarillo, "Reporte enviado a la administraciуn. Espera a que te respondan.");
            format(string, sizeof(string), "Reporte: %s", result);
            SendClientMessage(playerid, Amarillo, string);
            ChatOOC[playerid] = 1;
            SetTimerEx("ChatOOCTimer", 60000, 0, "d", playerid);
        }
    }
    return 1;
}
De paso, observa si el callback OnPlayerCommandPerformed esta bien puesto...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)