SA-MP Forums Archive
[Duda]їPorque sale esto? - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: [Duda]їPorque sale esto? (/showthread.php?tid=522509)



[Duda]їPorque sale esto? - xXmAn40100Xx - 27.06.2014

Hola, estoy tratando de hacer mi include, todo bien, pero cuando voy al gamemode y pongo la funcion que yo necesito me sale
Код:
Funciones.inc(93) : error 021: symbol already defined: "i"
Funciones.inc(93) : warning 203: symbol is never used: "i"
Cosa que no entiendo, debido a que ya revise esa linea y sale esto:
pawn Код:
for(new i=0, i < MAX_PLAYERS, i++)
Codigo completo:
pawn Код:
stock DarArmaATodos(weaponid)
{
    new Jugador[MAX_PLAYER_NAME], Mensaje[500];
    for(new i=0, i < MAX_PLAYERS, i++)
    {
        if(!IsPlayerConnected(i)) continue;
        else
        {
            GetPlayerName(i, Jugador, 35);
            format(Mensaje, sizeof(Mensaje), "[-]El administrador %s ha dado un arma a todos", Jugador);
            PlayerPlaySound(i, 1139, 0, 0, 0);
            GivePlayerWeapon(i, weaponid, 9999);
            SendClientMessage(i, Verde, Mensaje);
        }
    }
}
Ayuda, soy nuevo en Pawno.

Gracias de Antemano


Respuesta: [Duda]їPorque sale esto? - Juance - 27.06.2014

Proba el bucle asн:

pawn Код:
for(new i=0; i < MAX_PLAYERS; i++)
EDITO: Se me ha olvidado cambiar la "," de MAX_PLAYERS jajaja, soy un cabeza dura


Respuesta: [Duda]їPorque sale esto? - DesingMyCry - 27.06.2014

Es pawn.

El error es porque definiste "i" globalmente...

Y el bucle esta mal:


pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)



Respuesta: [Duda]їPorque sale esto? - JustBored - 27.06.2014

Pusiste una coma en la ultima parte de cada etapa del bucle en ves de un punto y coma.
pawn Код:
stock DarArmaATodos(weaponid)
{
    new Jugador[MAX_PLAYER_NAME], Mensaje[500];
    for(new i=0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        else
        {
            GetPlayerName(i, Jugador, 35);
            format(Mensaje, sizeof(Mensaje), "[-]El administrador %s ha dado un arma a todos", Jugador);
            PlayerPlaySound(i, 1139, 0, 0, 0);
            GivePlayerWeapon(i, weaponid, 9999);
            SendClientMessage(i, Verde, Mensaje);
        }
    }
}



Respuesta: [Duda]їPorque sale esto? - xXmAn40100Xx - 30.06.2014

Quote:
Originally Posted by DesingMyCry
Посмотреть сообщение
Es pawn.

El error es porque definiste "i" globalmente...

Y el bucle esta mal:


pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
"i" no esta definida globalmente.. y el bucle ya aprendн que esta mal hecho el bucle.

Quote:
Originally Posted by Juance
Посмотреть сообщение
Proba el bucle asн:

pawn Код:
for(new i=0; i < MAX_PLAYERS; i++)
EDITO: Se me ha olvidado cambiar la "," de MAX_PLAYERS jajaja, soy un cabeza dura
Quote:
Originally Posted by JustBored
Посмотреть сообщение
Pusiste una coma en la ultima parte de cada etapa del bucle en ves de un punto y coma.
pawn Код:
stock DarArmaATodos(weaponid)
{
    new Jugador[MAX_PLAYER_NAME], Mensaje[500];
    for(new i=0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        else
        {
            GetPlayerName(i, Jugador, 35);
            format(Mensaje, sizeof(Mensaje), "[-]El administrador %s ha dado un arma a todos", Jugador);
            PlayerPlaySound(i, 1139, 0, 0, 0);
            GivePlayerWeapon(i, weaponid, 9999);
            SendClientMessage(i, Verde, Mensaje);
        }
    }
}
Gracias a todos , una ultima pregunta antes de cerrar el tema, en el bucle For, їsiempre va con ; o cuando se debe utilizar esta?


Respuesta: [Duda]їPorque sale esto? - Juance - 30.06.2014

Si, el bucle va tal cual te lo han dejado. Pero antes del bucle yo te recomiendo que uses foreach que hace lo mismo, pero optimiza mбs.

pawn Код:
foreach(new i : Player)
{
if(!IsPlayerConnected(i)) continue;
Con el include puesto en el gm y en la carpeta pawno/includes obviamente.


Respuesta: [Duda]їPorque sale esto? - Swedky - 30.06.2014

Quote:
Originally Posted by Juance
Посмотреть сообщение
Si, el bucle va tal cual te lo han dejado. Pero antes del bucle yo te recomiendo que uses foreach que hace lo mismo, pero optimiza mбs.

pawn Код:
foreach(new i : Player)
{
if(!IsPlayerConnected(i)) continue;
Con el include puesto en el gm y en la carpeta pawno/includes obviamente.
Tu condiciуn estб al pedo ahн, ya que foreach solo recorre las ID's conectadas. Ademбs, y_iterate es una nueva versiуn de foreach, claro, mucho mejor y mбs rбpido.


Respuesta: [Duda]їPorque sale esto? - Juance - 30.06.2014

Solo le di un ejemplo cabezуn. El bucle hace lo mismo que el foreach.


Respuesta: [Duda]їPorque sale esto? - Swedky - 30.06.2014

Quote:
Originally Posted by Juance
Посмотреть сообщение
Solo le di un ejemplo cabezуn. El bucle hace lo mismo que el foreach.
Oh enserio? Pensй que foreach servнa para enviar un mensaje a un jugador, gracias genio de la vida.

Tu cуdigo es estъpido y no tiene lуgica. Es lo mismo que hacer:

pawn Код:
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, -1, "* No estбs conectado!");
O sea, no tiene sentido hacer eso.

Solo te mencionй que no es necesario verificar si una ID estб conectada o no dentro de un bucle realizado por foreach.


Respuesta: [Duda]їPorque sale esto? - juandiegox - 30.06.2014

Quote:
Originally Posted by xXmAn40100Xx
Посмотреть сообщение
"i" no esta definida globalmente.. y el bucle ya aprendн que esta mal hecho el bucle.





Gracias a todos , una ultima pregunta antes de cerrar el tema, en el bucle For, їsiempre va con ; o cuando se debe utilizar esta?
Siempre va con ; Segun TheChaoz, Dice que son 3 etapas , pero a mi un amigo me dijo que era Inicializacion, Condicion, y Finalizacion algo a si, y que cada parte se separa por ; osea algo como:
pawn Код:
for(new que= 0; que < 139; que++)
{
Funciones
}
se iniciara en 0 y terminara en 138 , Puedes comprobar eso haciendo un test en la consola..