[Ayuda] Error 030.
#1

Buenas, hoy creando y practicando hacer un comando /MP [ID] [Mensaje], al compilar me sale el siguiente error.

Quote:

C:\Cosas Joses\Mis juegos\Mega SV\filterscripts\base.pwn(72) : error 030: compound statement not closed at the end of file (started at line 72)

Quisiera saber como poder solucionarlo, dejor el Script para que vean haber.

Quote:

#include <a_samp>
#include "../include/gl_common.inc"

#define GENERAL 0xA14466FF
#define GENERAL_2 0x214466FF

//------------------------------------------------

public OnFilterScriptInit()
{
print("Comando MP");
return 1;
}

//------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new tmp[256];
new Message[256];
new gMessage[256];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
new idx;

cmd = strtok(cmdtext, idx);

// PM Command
if(strcmp("/MP", cmd, true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
SendClientMessage(playerid, GENERAL,"Uso: /MP [ID] [Mensaje]");
return 1;
}

new id = strval(tmp);
gMessage = strrest(cmdtext,idx);

if(!strlen(gMessage)) {
SendClientMessage(playerid,GENERAL,"Uso: /MP [ID] [Mensaje]");
return 1;
}

if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,GENERAL_2,"Ninten DM : Mensaje incorrecto / no vбlido.");
return 1;
}

if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,GENERAL_2,Message);
format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,GENERAL_2,Message);
PlayerPlaySound(id,1085,0.0,0.0,0.0);

printf("Mensaje Privado: %s",Message);

}
else {
SendClientMessage(playerid,GENERAL,"No te puedes enviar mensajes a ti mismo.");
}
return 1;
{
Reply
#2

te falto cerrar una llave en ves de abrirla cierrala }

hay donde dice
pawn Код:
printf("Mensaje Privado: %s",Message);

}
else {
SendClientMessage(playerid,GENERAL,"No te puedes enviar mensajes a ti mismo.");
}
return 1;
{//aka no debes abrirla debes cerrarla asi }
Reply
#3

que error en vez de cerrarla la abrio hazlo como lo hizo cesar
pawn Код:
printf("Mensaje Privado: %s",Message);

}
else {
SendClientMessage(playerid,GENERAL,"No te puedes enviar mensajes a ti mismo.");
}
return 1;
} //siempre al cerrar debe ser asi y si vas a cerrarlo total el callback usa asi
return 0; // con esto cierras todo el callback
}
Reply
#4

Ah! Gracias.

Pero una cosita. Yo cierro :

Quote:

if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,GENERAL_2,Message);
format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,GENERAL_2,Message);
PlayerPlaySound(id,1085,0.0,0.0,0.0);

printf("Mensaje Privado: %s",Message);

}
else {
SendClientMessage(playerid,GENERAL,"No te puedes enviar mensajes a ti mismo.");
}
return 1;
}

Pero me obliga a cerrar otra lнnea mбs y me da Warning.

Quote:

#include <a_samp>
#include "../include/gl_common.inc"

#define GENERAL 0xA14466FF
#define GENERAL_2 0x214466FF

//------------------------------------------------

public OnFilterScriptInit()
{
print("Comando MP");
return 1;
}

//------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new tmp[256];
new Message[256];
new gMessage[256];
new pName[MAX_PLAYER_NAME+1];
new iName[MAX_PLAYER_NAME+1];
new idx;

cmd = strtok(cmdtext, idx);

// PM Command
if(strcmp("/MP", cmd, true) == 0)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp) || strlen(tmp) > 5) {
SendClientMessage(playerid, GENERAL,"Uso: /MP [ID] [Mensaje]");
return 1;
}

new id = strval(tmp);
gMessage = strrest(cmdtext,idx);

if(!strlen(gMessage)) {
SendClientMessage(playerid,GENERAL,"Uso: /MP [ID] [Mensaje]");
return 1;
}

if(!IsPlayerConnected(id)) {
SendClientMessage(playerid,GENERAL_2,"Ninten DM : Mensaje incorrecto / no vбlido.");
return 1;
}

if(playerid != id) {
GetPlayerName(id,iName,sizeof(iName));
GetPlayerName(playerid,pName,sizeof(pName));
format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",iName,id,gMessage);
SendClientMessage(playerid,GENERAL_2,Message);
format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",pName,playerid,gMessage);
SendClientMessage(id,GENERAL_2,Message);
PlayerPlaySound(id,1085,0.0,0.0,0.0);

printf("Mensaje Privado: %s",Message);

}
else {
SendClientMessage(playerid,GENERAL,"No te puedes enviar mensajes a ti mismo.");
}
return 1;
}
return 0;
}

Reply
#5

dame la linea que te da el error y el error si tienes mas comandos debajo de ese todavia no uses return 0;
Reply
#6

El warning debe por alguna sangria suelta "lose identation", te recomiendo que uses sangrias en tu cуdigo para que se entienda mejor e incluso es mбs facil saber si te ha faltado cerrar una llave

pawn Код:
#include <a_samp>
#include "../include/gl_common.inc"

#define GENERAL 0xA14466FF
#define GENERAL_2 0x214466FF

//------------------------------------------------

public OnFilterScriptInit()
{
    print("Comando MP");
    return 1;
}

//------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new tmp[256];
    new Message[256];
    new gMessage[256];
    new pName[MAX_PLAYER_NAME+1];
    new iName[MAX_PLAYER_NAME+1];
    new idx;

    cmd = strtok(cmdtext, idx);

    // PM Command
    if(strcmp("/MP", cmd, true) == 0)
    {
        tmp = strtok(cmdtext,idx);
        if(!strlen(tmp) || strlen(tmp) > 5) {
            SendClientMessage(playerid, GENERAL,"Uso: /MP [ID] [Mensaje]");
            return 1;
        }

        new id = strval(tmp);
        gMessage = strrest(cmdtext,idx);

        if(!strlen(gMessage)) {
            SendClientMessage(playerid,GENERAL,"Uso: /MP [ID] [Mensaje]");
            return 1;
        }

        if(!IsPlayerConnected(id)) {
            SendClientMessage(playerid,GENERAL_2,"Ninten DM : Mensaje incorrecto / no vбlido.");
            return 1;
        }

        if(playerid != id) {
            GetPlayerName(id,iName,sizeof(iName));
            GetPlayerName(playerid,pName,sizeof(pName));
            format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",iName,id,gMessage);
            SendClientMessage(playerid,GENERAL_2,Message);
            format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",pName,playerid,gMessage);
            SendClientMessage(id,GENERAL_2,Message);
            PlayerPlaySound(id,1085,0.0,0.0,0.0);
            printf("Mensaje Privado: %s",Message);
        }
        else {
            SendClientMessage(playerid,GENERAL,"No te puedes enviar mensajes a ti mismo.");
        }
        return 1;
    }
    return 0;
}
Reply
#7

http://pastebin.com/MSFkk1Cf ahi esta el codigo sin errores


PD: se puede optimizar bastante, pero no tengo tiempo para dartelo optimizado solo te lo aviso.
Reply
#8

Como dijo Chaoz, el cуdigo es MUY optimizable, te dejo aca una idea.
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256];
    new tmp[256];
    new Message[256];
    new gMessage[256];
    new pName[MAX_PLAYER_NAME+1];
    new iName[MAX_PLAYER_NAME+1];
    new idx;

    cmd = strtok(cmdtext, idx);

    // PM Command
    if(strcmp("/MP", cmd, true) == 0)
    {
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, GENERAL, "Uso: /MP [ID] [Mensaje]");

        new id = strval(tmp);

        gMessage = strrest(cmdtext, idx);
        if(!strlen(gMessage)) return SendClientMessage(playerid, GENERAL, "Uso: /MP [ID] [Mensaje]");

        if(!IsPlayerConnected(id) || playerid == id) return SendClientMessage(playerid, GENERAL_2, "Ninten DM: No puedes enviar un mensaje a ese jugador!");
        GetPlayerName(id,iName,sizeof(iName));
        GetPlayerName(playerid,pName,sizeof(pName));
        format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",iName,id,gMessage);
        SendClientMessage(playerid,GENERAL_2,Message);
        format(Message,sizeof(Message),"Mensaje Privado : %s(%d): %s",pName,playerid,gMessage);
        SendClientMessage(id,GENERAL_2,Message);
        PlayerPlaySound(id,1085,0.0,0.0,0.0);
        printf("Mensaje Privado: %s",Message);
        return 1;
    }
    return 0;
}
Esa es una pequeсa optimizacion que puedo ver estando en el foro, pero podrнas pasar todo a ZCMD & SSCANF, serнa mas veloz. Pero para empezar, esta medianamente bien.
Reply
#9

lo dije principalmente por la cantidad de arrays inecesarios de 256 cells
Reply
#10

Eso no lo habнa notado, yo lo que hice fue ordenarlo para que estй un poco mas optimizado ^^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)