Problema a la hora de llamar funcion
#1

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
Reply
#2

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

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...
Reply
#4

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
                }
Reply
#5

no me dio resultado, sigue sin llamar a la funcion
Reply
#6

Код:
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.
Reply
#7

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 >
Reply
#8

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.
Reply
#9

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);
        }
Reply
#10

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.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)