[Pregunta/Ayuda] Errores al compilar.
#1

Buenas; Una pregunta, anoche me encontraba buscando una funciуn para que al destruirse un coche, aparezca en la misma posiciуn donde este se destruyo con su personaje dentro, o fuera, pero al compilar, me da errores, quisiera saber si alguien me harнa el favor de decirme en que me equivoco, o que debo corregir, les dejare el cуdigo y lo que e hecho.

Cуdigo:

pawn Код:
new Float:VehPosExp[MAX_VEHICLES][4];

public OnVehicleDeath(vehicleid, killerid)
{
    if(vehicleid > MAX_VEHPUBLICO) //Aquн ya no lanza error
    {
        if(CarInfo[vehicleid][cEnDeposito] == 0) //Aquн sigue lanzando. (15273)
        {
            if(!IsAPlane(vehicleid))
            {
                VehExplotado[vehicleid] = 1;
                CarInfo[vehicleid][cEnDeposito] = 1;
                GetVehiclePos(vehicleid, VehPosExp[vehicleid][0], VehPosExp[vehicleid][1], VehPosExp[vehicleid][2]);
                GetVehicleZAngle(vehicleid, VehPosExp[vehicleid][3]);
            }
        }
    }
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    if(VehExplotado[vehicleid] == 1)
    {
        SetVehiclePos(vehicleid, VehPosExp[vehicleid][0], VehPosExp[vehicleid][1], VehPosExp[vehicleid][2]);
        SetVehicleZAngle(vehicleid, VehPosExp[vehicleid][3]);
        SetVehicleHealth(vehicleid, 350.0);
        VehExplotado[vehicleid] = 0;
    }
    return 1;
}
Errores que me lanza:
pawn Код:
C:\Users\Sebastian\Desktop\kk\gamemodes\MI-RP.pwn(15273) : error 029: invalid expression, assumed zero
C:\Users\Sebastian\Desktop\kk\gamemodes\MI-RP.pwn(15273) : warning 215: expression has no effect
C:\Users\Sebastian\Desktop\kk\gamemodes\MI-RP.pwn(15273) : error 001: expected token: ";", but found "]"
C:\Users\Sebastian\Desktop\kk\gamemodes\MI-RP.pwn(15273) : error 029: invalid expression, assumed zero
C:\Users\Sebastian\Desktop\kk\gamemodes\MI-RP.pwn(15273) : fatal error 107: too many error messages on one line
En otro foro, me dijeron esto:

http://imgur.com/a/uR1Ql

Que lo definiera asн:

http://imgur.com/a/nvFzT

Pero no comprendo muy bien.
Reply
#2

Te has olvidado mencionar los errores que te salen en las capturas de pantalla. їQuй hay en la lнnea 4956?

їTienes definido estas 3 cosas?: MAX_VEHPUBLICO, IsAPlane, VehExplotado.
Reply
#3

Quote:
Originally Posted by bm0z
Посмотреть сообщение
Te has olvidado mencionar los errores que te salen en las capturas de pantalla. їQuй hay en la lнnea 4956?

їTienes definido estas 3 cosas?: MAX_VEHPUBLICO, IsAPlane, VehExplotado.
---------------------------------------------------Edito Tema---------------------------------------------------

Hola; Logre reparar la mayorнa de errores, ahora me lanza esto:

pawn Код:
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : error 001: expected token: ")", but found "["
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : error 029: invalid expression, assumed zero
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : warning 215: expression has no effect
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : error 001: expected token: ";", but found "]"
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : fatal error 107: too many error messages on one line
Cуdigo original:

pawn Код:
public OnVehicleDeath(vehicleid, killerid)
{
    if(vehicleid > MAX_VEHICLES)
    {
        if(!InfoVeh[vehicleid][vModelo][cEnDeposito] == 0)//Posdata: Esta es la linea de error 15272.
        {
            if(!IsVehPlane(vehicleid))
            {
                VehExplotado[vehicleid] = 1;
                InfoVeh[vehicleid][cEnDeposito] = 1;
                GetVehiclePos(vehicleid, VehPosExp[vehicleid][0], VehPosExp[vehicleid][1], VehPosExp[vehicleid][2]);
                GetVehicleZAngle(vehicleid, VehPosExp[vehicleid][3]);
            }
        }
    }
    return 1;
}
Reply
#4

Ayuda por favor!! ://
Reply
#5

tienes puesto esto:

if(!InfoVeh[vehicleid][vModelo][cEnDeposito] == 0)

quizбs lo que necesitas es esto:

if(InfoVeh[vehicleid][cEnDeposito] == 0)
Reply
#6

Quote:
Originally Posted by bm0z
Посмотреть сообщение
tienes puesto esto:

if(!InfoVeh[vehicleid][vModelo][cEnDeposito] == 0)

quizбs lo que necesitas es esto:

if(InfoVeh[vehicleid][cEnDeposito] == 0)
Lo cambie y ahora me muestra esto:

pawn Код:
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : warning 213: tag mismatch
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 012: invalid function call, not a valid address
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : warning 215: expression has no effect
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 001: expected token: ";", but found ")"
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 029: invalid expression, assumed zero
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : fatal error 107: too many error messages on one line
pawn Код:
if(InfoVeh[vehicleid][cEnDeposito] == 0)//Posdata: Esta es la linea de error 15272.
{
if(IsVehPlane(vehicleid))//Posdata: Esta es la linea de error 15274.
Reply
#7

No se que sucede, si lo cambio asi como dices, me da unos cuantos mas errores, y si pongo los valores en parentesis, me da esto:

pawn Код:
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : error 012: invalid function call, not a valid address
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : warning 215: expression has no effect
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : error 001: expected token: ";", but found ")"
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : error 029: invalid expression, assumed zero
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : fatal error 107: too many error messages on one line


No se que hacer, me estoy volviendo loco desde ayer en la maсana con este cуdigo. ;S (Si lo pongo en parйntesis, me da los errores de arriba)

pawn Код:
public OnVehicleDeath(vehicleid, killerid)
{
    if(vehicleid > MAX_VEHICLES)
    {
        if(InfoVeh(vehicleid)(vModelo)(cEnDeposito) == 1);//Posdata: Esta es la linea de error 15272.
        {
            if(IsVehPlane(vehicleid))
            {
                VehExplotado[vehicleid] = 1;
                InfoVeh[vehicleid][cEnDeposito] = 1;
                GetVehiclePos(vehicleid, VehPosExp[vehicleid][0], VehPosExp[vehicleid][1], VehPosExp[vehicleid][2]);
                GetVehicleZAngle(vehicleid, VehPosExp[vehicleid][3]);
            }
        }
    }
    return 1;
}
Reply
#8

Vas bien encaminado. Deja el if como te dije y vamos a arreglar los errores que te tira:

Код:
if(InfoVeh[vehicleid][cEnDeposito] == 0)
Estos son los errores:

Код:
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : warning 213: tag mismatch
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 012: invalid function call, not a valid address
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : warning 215: expression has no effect
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 001: expected token: ";", but found ")"
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 029: invalid expression, assumed zero
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : fatal error 107: too many error messages on one line
El error de la lнnea 15272, es un problema con el tag. En Pawn el tag es esa palabra que va antes de las variables y que permite definir el tipo de datos que vas a usar, ejemplo:

Код:
new MiTag:mivariable;
new variablesintag;

mivariable = variablesintag; // warning 213: tag mismatch
mivariable = MiTag:variablesintag; // no da warnings ni errores
Seguramente el problema en tu cуdigo es que hayas usado el tag bool. Lo que puedes hacer es cambiar los 1 y 0 por true o false, otra cosa que puedes hacer es eliminar ese tag.

Код:
if(InfoVeh[vehicleid][cEnDeposito] == 0)
por
if(InfoVeh[vehicleid][cEnDeposito] == false)
Y mбs abajo:

Код:
InfoVeh[vehicleid][cEnDeposito] = 1;
por
InfoVeh[vehicleid][cEnDeposito] = true;
El otro error es porque no tienes definida la funciуn IsVehPlane, puedes usar esta:

Код:
stock IsVehPlane(vehicleid)
{
	new modelid = GetVehicleModel(vehicleid);
	if(modelid == 593 || modelid == 592 || modelid == 577 || modelid == 511 || modelid == 512 || modelid == 520 || modelid == 553 || modelid == 476 || modelid == 519 || modelid == 460 || modelid == 513)
		return 1;
	return 0;
}
Reply
#9

Bro. xd

He puesto todo como me indicaste, y ahora no me tira error, si no que me pone el pawno como "Pawn Compiler dejo de funcionar", jaja.

Clickeame. Aquн lo hice como me dijiste.

Clickeame. Aquн ya me lanza error de que dejo de funcionar.

Mira; Realice unas modificaciones, y ya luego me tira error, fнjate.


Imagen 1: Clickeame. Aquн retire el New a ver si ya lanzaba solo errores.

Imagen 2: Clickeame.

Imagen 3: Clickeame. La variable de GetVehicleModel ya la uso, no hace falta ponerla en un New para definirla. (creo)

Imagen 4: Clickeame. La variable modelid igual. xd

Imagen 5: Clickeame. Aqui pensaba reemplazar eso del New model, por el Else, pero aun asн me lanza los errores que te mostrare a continuaciуn.

Errores sin el "new modelid = GetVehicleModel(vehicleid);":

pawn Код:
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15272) : warning 213: tag mismatch
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 012: invalid function call, not a valid address
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : warning 215: expression has no effect
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 001: expected token: ";", but found ")"
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : error 029: invalid expression, assumed zero
C:\Users\Sebastian\Desktop\MI-RP V2.5\gamemodes\MI-RP.pwn(15274) : fatal error 107: too many error messages on one line
Reply
#10

Lo que te pase estб todo bien. Estuve testeando y me di cuenta que los errores de la lнnea 15274 son porque tienes definido IsVehPlane como una VARIABLE y no como una FUNCIУN.

Deja la funciуn como te pase, con el new model = GetVehicleModel(vehicleid); y los true y false. Luego busca en el gamemode donde tengas definido IsVehPlane como una variable y eliminalo.

Lo mбs seguro es que sea algo parecido a esto:

new IsVehPlane[MAX_VEHICLES];

o puede que directamente:

new IsVehPlane;

Si por una de esas tienes suerte y compila sin errores, entonces puede que estemos ante un milagro, porque estб claro que has tenido que recibir ayuda divina. Pero mejor dejemos eso para otro momento.

Si te compila sin errores, entonces necesitas arreglar otros dos fallos para que te funcione ese script. Reemplaza esto:

Код:
if(vehicleid > MAX_VEHICLES)
por
if(vehicleid < MAX_VEHICLES)
y esto otro:

Код:
if(IsVehPlane(vehicleid))
por
if(!IsVehPlane(vehicleid))
Pero por favor, sуlo arreglalo en caso de que te compile sin errores. Cambiando de tema, encontre un tutorial, estб orientado a C++ pero igual te puede interesar:

http://www.ecured.cu/Signos_de_puntu...form%C3%A1tica)

Voy a citarte algunas frases:

Corchetes

Los corchetes indican subнndices de matrices uni y multi dimensionales.

Parйntesis

Los parйntesis sirven para agrupar expresiones; alterar la precedencia normal de los operadores y su asociatividad; aislar expresiones condicionales; indicar llamadas a funciones, y seсalar los parбmetros de estas.

Llaves

Los pares de llaves { } seсalan el comienzo y final de una sentencia compuesta, es decir, bloques de cуdigo (grupos de sentencias que son tratadas como una unidad). Un bloque es una sentencia compuesta, se trata de una sucesiуn (que puede estar vacнa) de sentencias delimitadas por un par de corchetes { }.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)