#1

Bueno, en mi gamemode (no el de ZC, otro) hay un sistema de maleteros de vehнculos muy buenos, pero.. estб incompleto, o sea, lo ъnico que falta es un comando para abrir y cerrar baъl.. Mientras tal comando no estй, no se podrб acceder a tales funciones. Me parece mejor crear un /llavesmaletero que al estar cerrado y pongas el comando lo abra, y al estar abierto y pongas el comando lo cierre, para no hacer dos comandos a la vez y simplificar trabajo.

A continuaciуn, algunas funciones del maletero:

pawn Код:
if(strcmp(cmd,"/maletero", true) == 0)
    {
        new counter = 0;
        new result;
        new plyName[MAX_PLAYER_NAME];

        GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
        for(new i; i != MAX_VEHICLES; i++)
        {
            new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
            if(dist)
            {
                result = i;
                counter++;
            }
        }
        switch(counter)
        {
            case 0:
            {
                SendClientMessage(playerid, ROJO_OSCURO, " No hay vehiculo cerca de ti !");
            }
            case 1:
            {
                if(MaleteroAbierto[result] == 1)
                {
                    new buffer[512];
                    SendClientMessage(playerid, AMARILLO, "Maletero: ");
                    for(new slot = 1; slot != MAX_TRUNK_SLOTS; slot++)
                    {
                        new gunname[100];
                        if(vehTrunk[result][slot] != 0)
                        {
                            GetWeaponName(vehTrunk[result][slot], gunname, sizeof(gunname));
                            format(buffer, sizeof(buffer), " Espacio %i: %s (BALAS: %i)", slot, gunname, vehTrunkAmmo[result][slot]);
                            SendClientMessage(playerid, BLANCO, buffer);

                        }else
                        {
                            format(buffer, sizeof(buffer), " Espacio %i: Vacio (BALAS: N/A)", slot);
                            SendClientMessage(playerid, BLANCO, buffer);
                        }
                    }
                }
                else
                {
                    SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб cerrado!");
                }
            }
            default:
            {
                SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
            }
        }
        return 1;
    }

    if(strcmp(cmd,"/tomararma", true) == 0)
    {
        new counter = 0;
        new result;
        new plyName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
        for(new i; i != MAX_VEHICLES; i++)
        {
            new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
            if(dist)
            {
                result = i;
                counter++;
            }
        }
        if(JugadorInfo[playerid][jNivel] == 1)
        {
            SendClientMessage(playerid, ROJO_OSCURO, "No puedes retirar un arma siendo nivel 1!.");
        }
        switch(counter)
        {
            case 0:
            {
                SendClientMessage(playerid, ROJO_OSCURO, " No hay vehiculo cerca de ti !");
            }
            case 1:
            {
                if(vehTrunkCounter[result] != 0)
                {
                    if(MaleteroAbierto[result] == 1)
                    {
                        if(MaleteroTimer[playerid] == 0)
                        {
                            new buffer[512];
                            new gunName[100];
                            EntregarArma(playerid, vehTrunk[result][vehTrunkCounter[result]], vehTrunkAmmo[result][vehTrunkCounter[result]]);
                            GetWeaponName(vehTrunk[result][vehTrunkCounter[result]], gunName, sizeof(gunName));
                            format(buffer, sizeof(buffer), "* Has tomado una %s (BALAS: %i) del Maletero del Vehiculo.", gunName, vehTrunkAmmo[result][vehTrunkCounter[result]]);
                            SendClientMessage(playerid, AMARILLO, buffer);
                            vehTrunk[result][vehTrunkCounter[result]] = '\0';
                            vehTrunkAmmo[result][vehTrunkCounter[result]] = '\0';
                            vehTrunkCounter[result]--;
                            GuardarMaleteros();
                            MaleteroTimer[playerid] = 1;
                            SetTimerEx("Maletero", 5000, false, "d", playerid);
                            format(string,sizeof(string), "* %s Toma un arma del maletero.", NombreJugador(playerid));
                            MandarMensajeCercano(30,playerid,string,ROSA,ROSA,ROSA,ROSA,ROSA);
                        }
                        else
                        {
                            SendClientMessage(playerid, ROJO_OSCURO, " Espera 5 segundos para guardar un arma denuevo!");
                            return 1;
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб cerrado o este coche no tiene maletero!.");
                        return 1;
                    }
                }
                else
                {
                    SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб Vacio!");
                    return 1;
                }
            }
            default:
            {
                SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
                return 1;
            }
        }
        return 1;
    }

    if(strcmp(cmd,"/guardararma", true) == 0)
    {
        new counter = 0;
        new result;
        new plyName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
        for(new i; i != MAX_VEHICLES; i++)
        {
            new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
            if(dist)
            {
                result = i;
                counter++;
            }
        }
        switch(counter)
        {
            case 0:
            {
                SendClientMessage(playerid, ROJO_OSCURO, "No hay coches cerca de ti.");
            }
            case 1:
            {
                if(vehTrunkCounter[result] != (MAX_TRUNK_SLOTS-1))
                {
                    if(MaleteroAbierto[result] == 1)
                    {
                        if(MaleteroTimer[playerid] == 0)
                        {
                            new buffer[512];
                            new gunname[100];
                            new gunID = GetPlayerWeapon(playerid);
                            new gunAmmo = GetPlayerAmmo(playerid);
                            new plyWeapons[12];
                            new plyAmmo[12];
                            if(gunID != 0)
                            {
                                GetWeaponName(gunID, gunname, sizeof(gunname));
                                for(new slot = 0; slot != 12; slot++)
                                {
                                    new wep, ammo;
                                    GetPlayerWeaponData(playerid, slot, wep, ammo);
                                    if(wep != gunID)
                                    {
                                        GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
                                    }
                                }
                                vehTrunkCounter[result]++;
                                vehTrunk[result][vehTrunkCounter[result]] = gunID;
                                vehTrunkAmmo[result][vehTrunkCounter[result]] = gunAmmo;
                                format(buffer, sizeof(buffer), "[Maletero] Pusiste tu %s (BALAS: %i) en el Maletero del Auto.", gunname, gunAmmo);
                                SendClientMessage(playerid, AMARILLO, buffer);
                                ResetearArmas(playerid);
                                for(new slot = 0; slot != 12; slot++)
                                {
                                    EntregarArma(playerid, plyWeapons[slot], plyAmmo[slot]);
                                }
                                MaleteroTimer[playerid] = 1;
                                SetTimerEx("Maletero", 5000, false, "d", playerid);
                                GuardarMaleteros();
                                format(string,sizeof(string), "* %s guarda un arma del maletero.", NombreJugador(playerid));
                                MandarMensajeCercano(30,playerid,string,ROSA,ROSA,ROSA,ROSA,ROSA);
                            }
                            else
                            {
                                SendClientMessage(playerid, ROJO_OSCURO, " No tienes arma para guardar!");
                            }
                        }
                        else
                        {
                            SendClientMessage(playerid, ROJO_OSCURO, " Espera 5 segundos para guardar un arma denuevo!");
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, ROJO_OSCURO, " El maletero estб cerrado o este coche no tiene maletero!");
                    }
                }
                else
                {
                    SendClientMessage(playerid, ROJO_OSCURO, " Este maletero esta lleno.");
                }
            }
            default:
            {
                SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
            }
        }
        return 1;
    }

    if(strcmp(cmd,"/forzarmaletero", true) == 0)
    {
        new counter = 0;
        new result;
        new plyName[MAX_PLAYER_NAME];

        if(JugadorInfo[playerid][jMiembro] > 2 && JugadorInfo[playerid][jMiembro] < 1 || JugadorInfo[playerid][jLider] > 2 && JugadorInfo[playerid][jLider] < 1)
        {
            SendClientMessage(playerid, ROJO_OSCURO, "* No eres RCSD ni USMC.");
            return 1;
        }

        GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
        for(new i; i != MAX_VEHICLES; i++)
        {
            new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
            if(dist)
            {
                result = i;
                counter++;
            }
        }
        switch(counter)
        {
            case 0:
            {
                SendClientMessage(playerid, ROJO_OSCURO, "No hay coches cerca de ti.");
            }
            case 1:
            {
                if(MaleteroAbierto[result] == 1)
                {
                    SendClientMessage(playerid, ROJO_OSCURO, "* El maletero ya estб abierto.");
                    return 1;
                }
                new engine,lights,alarm,doors,bonnet,boot,objective;
                GetVehicleParamsEx(result,engine,lights,alarm,doors,bonnet,boot,objective);
                new suerte = random(6);
                if(suerte == 0 || suerte == 3 || suerte == 5)
                {
                    GetVehicleParamsEx(result,engine,lights,alarm,doors,bonnet,boot,objective);
                    SetVehicleParamsEx(result,engine,lights,alarm,doors,bonnet,1,objective);
                    format(string, sizeof(string), "* %s intenta forzar el maletero y lo logra.", NombreJugador(playerid));
                    MandarMensajeCercano(30.0,playerid, string, VERDE_OSCURO,VERDE_OSCURO,VERDE_OSCURO,VERDE_OSCURO,VERDE_OSCURO);
                    MaleteroAbierto[result] = 1;
                    GuardarMaleteros();
                    return 1;
                }
                else
                {
                    format(string, sizeof(string), "* %s intenta forzar el maletero y falla.", NombreJugador(playerid));
                    MandarMensajeCercano(30.0,playerid, string, ROJO_OSCURO,ROJO_OSCURO,ROJO_OSCURO,ROJO_OSCURO,ROJO_OSCURO);
                    MaleteroAbierto[result] = 0;
                    GuardarMaleteros();
                }
            }
        }
        return 1;
    }
Reply
#2

pawn Код:
if(strcmp(cmd,"/Baul", true) == 0)
    {
        new counter = 0;
        new result;
        new plyName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, plyName, MAX_PLAYER_NAME);
        for(new i; i != MAX_VEHICLES; i++)
        {
            new dist = CheckPlayerDistanceToVehicle(5.0, playerid, i);
            if(dist)
            {
                result = i;
                counter++;
            }
        }
        switch(counter)
        {
            case 0:
            {
                SendClientMessage(playerid, ROJO_OSCURO, " No hay vehiculo cerca de ti !");
            }
            case 1:
            {
                if(MaleteroAbierto[result] == 0)
                {
                    MaleteroAbierto[result] = 1;
                    SendClientMessage(playerid, ROJO_OSCURO, " Haz Abierto el Baul Del Vehiculo!");
                    new Motor, Luces, Alarma, Puertas, Capo, Maletero, Objetivos;
                    GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero, Objetivos);
                    SetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, true, Objetivos);
                }
                else if(MaleteroAbierto[result] == 1)
                {
                    MaleteroAbierto[result] = 0;
                    SendClientMessage(playerid, ROJO_OSCURO, " Haz Cerrado el Baul Del Vehiculo!");
                    new Motor, Luces, Alarma, Puertas, Capo, Maletero, Objetivos;
                    GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero, Objetivos);
                    SetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, false, Objetivos);
                }
            }
            default:
            {
                SendClientMessage(playerid, ROJO_OSCURO, " Mбs de un vehнculo detectado cerca, por favor aleje los demбs.");
            }
        }
        return 1;
    }
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)