Todos pueden abrir el maletero..
#1

No sй, pero tengo un comando que me hizo Otacon, y estб bien, y todo, estб adaptado al sistema de maleteros del GM, ya que estб muy bueno, sуlo que faltaba comando para abrir y cerrar el mismo.. El problema es que cualquiera puede abrir el maletero de cualquiera..

pawn Код:
if(strcmp(cmd,"/llavesmaletero", 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 ningъn vehнculo cerca tuyo !");
            }
            case 1:
            {
                if(MaleteroAbierto[result] == 0)
                {
                    MaleteroAbierto[result] = 1;
                    SendClientMessage(playerid, ROJO_OSCURO, " Has abierto el maletero de tu vehнculo!");
                    new Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos;
                    GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos);
                    SetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, true, Objetivos);
                }
                else if(MaleteroAbierto[result] == 1)
                {
                    MaleteroAbierto[result] = 0;
                    SendClientMessage(playerid, ROJO_OSCURO, " Has cerrado el maletero de tu vehнculo!");
                    new Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos;
                    GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero2, 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;
    }

    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;
    }
Creo que йsto detecta si uno es dueсo de un vehнculo:

Код:
format(AutoInfo[tmpidcar][aOwner], MAX_PLAYER_NAME, "%s", cmd);
Variables:
aOwner, : El comprador del vehнculo.
aOwned,: En 0, no tiene dueсo, en 1, lo tiene.
aCarkey,: El slot del vehнculo, hay slot 1, 2, 3, 4 y 5, es el mбximo de vehнculos por persona.
Reply
#2

estas pidiendo ke te hagan el if ?

Si necesitas ke te hagan el script utiliza el sub foro Pedidos
Reply
#3

Podes usar strcmp para comparar plyName con aOwner.

pawn Код:
case 1:
{
    if(strcmp(plyName, AutoInfo[result][aOwner], false))
    {
        if(MaleteroAbierto[result] == 0)
        {
            MaleteroAbierto[result] = 1;
            SendClientMessage(playerid, ROJO_OSCURO, " Has abierto el maletero de tu vehнculo!");
            new Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos;
            GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos);
            SetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, true, Objetivos);
        }
        else if(MaleteroAbierto[result] == 1)
        {
            MaleteroAbierto[result] = 0;
            SendClientMessage(playerid, ROJO_OSCURO, " Has cerrado el maletero de tu vehнculo!");
            new Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos;
            GetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, Maletero2, Objetivos);
            SetVehicleParamsEx(result, Motor, Luces, Alarma, Puertas, Capo, false, Objetivos);
        }
    }
    else SendClientMessage(playeid, ROJO_OSCURO, "No tienes las llaves de йste vehнculo.");
}
Reply
#4

їCuбl es mбs eficaz?

pawn Код:
if(strcmp(plyName, AutoInfo[result][aOwner], false))
pawn Код:
if(strcmp(AutoInfo[result][aOwner],plyName))
Reply
#5

Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
їCuбl es mбs eficaz?

pawn Код:
if(strcmp(plyName, AutoInfo[result][aOwner], false))
pawn Код:
if(strcmp(AutoInfo[result][aOwner],plyName))
Ninguna es mбs eficaz las dos formas hacen lo mismo, lo que hace strcmp es comparar si la string1 es igual a la string2 asн que el orden de los factores no afecta en este caso, el "false" del final no es necesario usarlo por que la funciуn strcmp ya la pone por defecto si no se usa ese parametro.
Reply
#6

Thanks you, +rep a ambos.
Reply
#7

Quote:
Originally Posted by Daniel-92
Посмотреть сообщение
Ninguna es mбs eficaz las dos formas hacen lo mismo, lo que hace strcmp es comparar si la string1 es igual a la string2 asн que el orden de los factores no afecta en este caso, el "false" del final no es necesario usarlo por que la funciуn strcmp ya la pone por defecto si no se usa ese parametro.
Si es necesario, para evitar un bug. Que la gente entre con el nombre en minъsculas y podrнa usar el maletero del vehнculo de la cuenta original. (lo digo por experiencia propia)


Quote:
Originally Posted by DeadSkyTkb
Посмотреть сообщение
Thanks you, +rep a ambos.
Cualquier cosa volve a comentar, saludos!
Reply
#8

lo del false seria necesario solamente si se editara el native del strcmp ya que por defecto es false si no se usa el parбmetro
pawn Код:
native strcmp(const string1[], const string2[], bool:ignorecase=false, length=cellmax);
Reply
#9

Desconocнa eso, como en Wiki no lo indicaba...

Disculpas.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)