SA-MP Forums Archive
Problema a la hora de llamar funcion - 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: Problema a la hora de llamar funcion (/showthread.php?tid=409177)



Problema a la hora de llamar funcion - xblade2k10 - 20.01.2013

Hola nuevamente, queria comentarles un poblema que tengo a la hora de querer llamar a una funcion y no consigo llamarma de ninguna forma que se me ocurre.

Se trata de aplicar componentes tuning al coche en este caso un stereo y al mismo tiempo guardarlo en un archivo en concreto para asi despues cargarlo y no perder el tuning.

Estoy usando para las opciones del tuning un menu con la funciones OnPlayerSelectedMenuRow y OnPlayerExitedMenu y en el caso de la opcion de aplicar un Stereo:

pawn Код:
if(Current == Carstereo) {//Menu opcion Stereo
        switch(row){
            case 0:
             if(GetPlayerMoney(playerid) >= 0)//Si el dinero es igual o menor a 0 negamos la opcion por falta de fondos.
                {
                    new vehiculo = GetPlayerVehicleID(playerid);//obtencion de la ID del vehiculo
                    AddVehicleComponent(vehiculo,1086);//Aсadimos el componente
                    CarInfo[vehiculo][cStereo] = 1086;//verifico el componente
                            AddVehicleComponent(vehiculo, CarInfo[car][cStereo]);
                    SendClientMessage(playerid,COLOR_WHITE,"[INFORMACION] Has aсadido Correctamente un equipo Estereo al veciculo ");
                    ShowMenuForPlayer(Carstereo, playerid);
                    return OnTunninUpdate();//Funcion que no llama... por lo tanto no guarda el componente
                }
                else
                {
        SendClientMessage(playerid,COLOR_RED,"Lo siento pero no tienes dinero suficiente!");
                    ShowMenuForPlayer(MenuPrincipal, playerid);
                }
alguna sugerencia caballeros?, yo me estoy volviendo loco ya que si uso la funcion en un comando normal el que sea OnTunninUpdate(); si que la llama pero no cuando aplico la opcion en el menu de seleccion....

saludos


Respuesta: Problema a la hora de llamar funcion - OneBlaack - 20.01.2013

Crea una funciуn para guardar los datos y la llamas. Eso fue lo que entendн de lo que quieres hacer.


Respuesta: Problema a la hora de llamar funcion - xblade2k10 - 20.01.2013

la tengo creada un poco mas abajo asi:

pawn Код:
forward OnTunninUpdate()
public OnTunninUpdate()
{
    new idx;
    new File: file2;

idx = VV_DESDE;
    while (idx < sizeof(CarInfo))
    {
    new coordsstring[256];
 format(coordsstring, sizeof(coordsstring), "%d,%f,%f,%f,%f,%d,%d,%s,%s,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\n",
 CarInfo[idx][cModel],//
 CarInfo[idx][cLocationx],//
 CarInfo[idx][cLocationy],//
 CarInfo[idx][cLocationz],//
 CarInfo[idx][cAngle],//
 CarInfo[idx][cColorOne],//
 CarInfo[idx][cColorTwo],//
 CarInfo[idx][cOwner],//
 CarInfo[idx][cDescription],//
 CarInfo[idx][cValue],//
 CarInfo[idx][cOwned],//
 CarInfo[idx][cLock],
 CarInfo[idx][cSpoiler],
 CarInfo[idx][cHood],
 CarInfo[idx][cRoof],
 CarInfo[idx][cSideskirt],
 CarInfo[idx][cNitro],
 CarInfo[idx][cLamps],
 CarInfo[idx][cExhaust],
 CarInfo[idx][cWheel],
 CarInfo[idx][cHydraulics],
 CarInfo[idx][cStereo],
 CarInfo[idx][cFrontBumper],
 CarInfo[idx][cRearBumper],
 CarInfo[idx][cVents],
 CarInfo[idx][cPaintjob]);
        if(idx == VV_DESDE)
        {
            file2 = fopen("coches.cfg", io_write);
        }
        else
        {
            file2 = fopen("coches.cfg", io_append);
        }
        fwrite(file2, coordsstring);
        idx++;
        fclose(file2);
    }
return 1;
}
la cosa esque si la llamo desde un comando como he comentado arriba la llama sin problemas pero no en el menu...


Respuesta: Problema a la hora de llamar funcion - OneBlaack - 20.01.2013

Creo que es porque esta mal puesto el if perdon si me equivoco prueba de este modo.

Код:
if(Current == Carstereo) {//Menu opcion Stereo
        switch(row){
            case 0:
             if(GetPlayerMoney(playerid) >= 0)//Si el dinero es igual o menor a 0 negamos la opcion por falta de fondos.
                {
        SendClientMessage(playerid,COLOR_RED,"Lo siento pero no tienes dinero sufuciente!");
                    ShowMenuForPlayer(MenuPrincipal, playerid);
}
else
{
                    new vehiculo = GetPlayerVehicleID(playerid);//obtencion de la ID del vehiculo
                    AddVehicleComponent(vehiculo,1086);//Aсadimos el componente
                    CarInfo[vehiculo][cStereo] = 1086;//verifico el componente
                            AddVehicleComponent(vehiculo, CarInfo[car][cStereo]);
                    SendClientMessage(playerid,COLOR_WHITE,"[INFORMACION] Has aсadido Correctamente un equipo Estereo al veciculo ");
                    ShowMenuForPlayer(Carstereo, playerid);
                    return OnTunninUpdate();//Funcion que no llama... por lo tanto no guarda el componente
                }



Respuesta: Problema a la hora de llamar funcion - xblade2k10 - 20.01.2013

no me dio resultado, sigue sin llamar a la funcion


Respuesta: Problema a la hora de llamar funcion - OneBlaack - 20.01.2013

Код:
if(Current == Carstereo) {//Menu opcion Stereo
        switch(row){
            case 0:
             if(GetPlayerMoney(playerid) >= 0)//Si el dinero es igual o menor a 0 negamos la opcion por falta de fondos.
                {
        SendClientMessage(playerid,COLOR_RED,"Lo siento pero no tienes dinero sufuciente!");
                    ShowMenuForPlayer(MenuPrincipal, playerid);
}
else
{
                    new vehiculo = GetPlayerVehicleID(playerid);//obtencion de la ID del vehiculo
                    AddVehicleComponent(vehiculo,1086);//Aсadimos el componente
                    CarInfo[vehiculo][cStereo] = 1086;//verifico el componente
                            AddVehicleComponent(vehiculo, CarInfo[car][cStereo]);
                    SendClientMessage(playerid,COLOR_WHITE,"[INFORMACION] Has aсadido Correctamente un equipo Estereo al veciculo ");
                    ShowMenuForPlayer(Carstereo, playerid);
                    OnTunninUpdate();//Funcion que no llama... por lo tanto no guarda el componente
                }
Intenta de ese modo.


Respuesta: Problema a la hora de llamar funcion - Adoniiz - 20.01.2013

pawn Код:
if(Current == Carstereo)
{
    switch(row)
    {
        case 0:
        if(GetPlayerMoney(playerid) <= 0)//Si el dinero es igual o menor a 0 negamos la opcion por falta de fondos.
        {
            new vehiculo = GetPlayerVehicleID(playerid);//obtencion de la ID del vehiculo
            AddVehicleComponent(vehiculo,1086);//Aсadimos el componente
            CarInfo[vehiculo][cStereo] = 1086;//verifico el componente
            AddVehicleComponent(vehiculo, CarInfo[car][cStereo]);
            SendClientMessage(playerid,COLOR_WHITE,"[INFORMACION] Has aсadido Correctamente un equipo Estereo al veciculo ");
            ShowMenuForPlayer(Carstereo, playerid);
            return OnTunninUpdate();//Funcion que no llama... por lo tanto no guarda el componente
        }
        else
        {
            SendClientMessage(playerid,COLOR_RED,"Lo siento pero no tienes dinero suficiente!");
            ShowMenuForPlayer(MenuPrincipal, playerid);
        }
el menor es <
el mayor es >


Respuesta: Problema a la hora de llamar funcion - xblade2k10 - 20.01.2013

la cosa esq los codigos funcionan, aplican el componente pero no parece llamar a OnTunninUpdate(); he puesto un print y no sale nada... esto es rarisimo porq por ejemplo desde un comando o un menu normal si la llama pero no desde aqui.... no veo la explicacion.


Respuesta: Problema a la hora de llamar funcion - Adoniiz - 20.01.2013

Quote:
Originally Posted by xblade2k10
Посмотреть сообщение
la cosa esq los codigos funcionan, aplican el componente pero no parece llamar a OnTunninUpdate(); he puesto un print y no sale nada... esto es rarisimo porq por ejemplo desde un comando o un menu normal si la llama pero no desde aqui.... no veo la explicacion.
pawn Код:
if(Current == Carstereo)
{
    switch(row)
    {
        case 0:
        if(GetPlayerMoney(playerid) <= 0)//Si el dinero es igual o menor a 0 negamos la opcion por falta de fondos.
        {
            new vehiculo = GetPlayerVehicleID(playerid);//obtencion de la ID del vehiculo
            AddVehicleComponent(vehiculo,1086);//Aсadimos el componente
            CarInfo[vehiculo][cStereo] = 1086;//verifico el componente
            AddVehicleComponent(vehiculo, CarInfo[car][cStereo]);
            OnTunninUpdate();//Funcion que no llama... por lo tanto no guarda el componente
            SendClientMessage(playerid,COLOR_WHITE,"[INFORMACION] Has aсadido Correctamente un equipo Estereo al veciculo ");
            ShowMenuForPlayer(Carstereo, playerid);
            return 1;
        }
        else
        {
            SendClientMessage(playerid,COLOR_RED,"Lo siento pero no tienes dinero suficiente!");
            ShowMenuForPlayer(MenuPrincipal, playerid);
        }



Respuesta: Problema a la hora de llamar funcion - xblade2k10 - 20.01.2013

mira esto es un ejemplo de como "si" la llama...

pawn Код:
if(strcmp(cmdtext, "/estereo", true) == 0)
    {
    new vehiculo = GetPlayerVehicleID(playerid);//obtencion de la ID del vehiculo
    AddVehicleComponent(vehiculo,1086);//Aсadimos el componente
    CarInfo[vehiculo][cStereo] = 1086;//verifico el componente
    AddVehicleComponent(vehiculo, CarInfo[car][cStereo]);
    OnTunninUpdate();
    return 1;
    }
pero con la opcion del menu... no consigo llamarla ni usando los codigos que me estais pasado... no entiendo porque.