[AYUDA]NO Armas en Interiores.
#1

Hola Buenos dнas, Tardes Noches.
Quisiera saber si no hay un modo de bloquear las armas en interiores Ammunation's 24/7 etc.

Se los agradezco de antemano.

Saludos
Reply
#2

equivocacion mia.
Reply
#3

Код:
AllowInteriorWeapons(0);
En GamemodeINT
Reply
#4

A mн me suena que esa native fue eliminada hace algunos aсos, en su lugar hay que usar SetPlayerArmedWeapon en OnPlayerUpdate.

En una de esa la volvieron a poner, porque recuerdo que muchos se pedнan que la volvieran a poner.
Reply
#5

Darken3 no me funciono :c :/
Quote:

Respuesta: [AYUDA]NO Armas en Interiores.
Code:
AllowInteriorWeapons(0);
En GamemodeINT
________________

************************************************** **************************
BM0Z ME PUDES AYUDAR PARA BLOQUEAR LOS INTERIORES? SABES?
Quote:

Re: [AYUDA]NO Armas en Interiores.
A mн me suena que esa native fue eliminada hace algunos aсos, en su lugar hay que usar SetPlayerArmedWeapon en OnPlayerUpdate.

En una de esa la volvieron a poner, porque recuerdo que muchos se pedнan que la volvieran a poner.
__________________
www.GameRol.net
ip: server.gamerol.net
ts: ts.gamerol.net

Reply
#6

GetPlayerPos... ResetPlayerWeapons... SetPlayerArmedWeapon... con eso lo haces
Reply
#7

En OnPlayerUpdate:
Код:
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0)
    SetPlayerArmedWeapon(playerid, 0);
Eso desactiva las armas en todos los interiores, o sino puedes usar algo asi para algunos interiores:
Код:
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0)
{
    if((GetPlayerInterior(playerid) == 10 && IsPlayerInRangeOfPoint(playerid, 50.0, 375.962463, -65.816848, 1001.507812)) // Burger Shot
    || (GetPlayerInterior(playerid) == 9 && IsPlayerInRangeOfPoint(playerid, 50.0, 369.579528, -4.487294, 1001.858886)) // Cluckin' Bell
    || (GetPlayerInterior(playerid) == 5 && IsPlayerInRangeOfPoint(playerid, 50.0, 373.825653, -117.270904, 1001.499511))) // Well Stacked Pizza
        SetPlayerArmedWeapon(playerid, 0);
}
Esto no elimina las armas, lo que hace es cambiar el arma en la mano a los puсos.
Reply
#8

Quote:
Originally Posted by bm0z
Посмотреть сообщение
En OnPlayerUpdate:
Код:
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0)
    SetPlayerArmedWeapon(playerid, 0);
Eso desactiva las armas en todos los interiores, o sino puedes usar algo asi para algunos interiores:
Код:
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0)
{
    if((GetPlayerInterior(playerid) == 10 && IsPlayerInRangeOfPoint(playerid, 50.0, 375.962463, -65.816848, 1001.507812)) // Burger Shot
    || (GetPlayerInterior(playerid) == 9 && IsPlayerInRangeOfPoint(playerid, 50.0, 369.579528, -4.487294, 1001.858886)) // Cluckin' Bell
    || (GetPlayerInterior(playerid) == 5 && IsPlayerInRangeOfPoint(playerid, 50.0, 373.825653, -117.270904, 1001.499511))) // Well Stacked Pizza
        SetPlayerArmedWeapon(playerid, 0);
}
Esto no elimina las armas, lo que hace es cambiar el arma en la mano a los puсos.
Por que haces eso, amigo? Es super deficiente.

Como dijo Darken3, https://sampwiki.blast.hk/wiki/AllowInteriorWeapons.

O de otra forma:
pawn Код:
new pCurrentWeapons[MAX_PLAYERS][12],
pLastAmmo[MAX_PLAYERS][12];

GivePlayerWeaponEx(playerid, weaponid, ammo)
{
    RefreshPlayerWeapons(playerid);

    new slot = GetWeaponSlot(weaponid);
    pCurrentWeapons[playerid][slot] = weaponid;
    pLastAmmo[playerid][slot] = ammo;
    return GivePlayerWeapon(playerid, weaponid, ammo);
}

ResetPlayerWeaponsEx(playerid)
{
    for(new i = 0; i < 12; i ++)
    {
        new weapon[12], ammo[12];
        GetPlayerWeaponData(playerid, i, weapon[i], ammo[i]);
        pCurrentWeapons[playerid][i] = weapon[i];
        pLastAmmo[playerid][i] = ammo[i];
    }
    return ResetPlayerWeapons(playerid);
}

RefreshPlayerWeapons(playerid)
{
    for(new i = 0; i < 12; i ++)
    {
        new weapon[12], ammo[12];
        GetPlayerWeaponData(playerid, i, weapon[i], ammo[i]);
        pCurrentWeapons[playerid][i] = weapon[i];
        pLastAmmo[playerid][i] = ammo[i];
    }
    return 1;
}

ClearPlayerWeaponSlot(playerid, slot)
{
    pCurrentWeapons[playerid][slot] = 0;
    pLastAmmo[playerid][slot] = 0;
    return 1;
}

ClearPlayerWeapons(playerid)
{
    for(new i = 0; i < 12; i ++)
    {
        pCurrentWeapons[playerid][i] = 0;
        pLastAmmo[playerid][i] = 0;
    }
    return 1;
}

GivePlayerTheirWeapons(playerid)
{
    for(new i = 0; i < 12; i ++)
    {
        GivePlayerWeapon(playerid, pCurrentWeapons[playerid][i], pLastAmmo[playerid][i]);
    }
    return 1;
}

GetWeaponSlot(weaponid)
{
    new slot;
    switch(weaponid)
    {
        case 0, 1: slot = 0;
        case 2, 3, 4, 5, 6, 7, 8, 9: slot = 1;
        case 22, 23, 24: slot = 2;
        case 25, 26, 27: slot = 3;
        case 28, 29, 32: slot = 4;
        case 30, 31: slot = 5;
        case 33, 34: slot = 6;
        case 35, 36, 37, 38: slot = 7;
        case 16, 17, 18, 39: slot = 8;
        case 41, 42, 43: slot = 9;
        case 10, 11, 12, 13, 14, 15: slot = 10;
        case 44, 45, 46: slot = 11;
        case 40: slot = 12;
    }
    return slot;
}
Reply
#9

Quote:
Originally Posted by bm0z
Посмотреть сообщение
En OnPlayerUpdate:
Код:
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0)
    SetPlayerArmedWeapon(playerid, 0);
Eso desactiva las armas en todos los interiores, o sino puedes usar algo asi para algunos interiores:
Код:
if(GetPlayerInterior(playerid) != 0 && GetPlayerWeapon(playerid) != 0)
{
    if((GetPlayerInterior(playerid) == 10 && IsPlayerInRangeOfPoint(playerid, 50.0, 375.962463, -65.816848, 1001.507812)) // Burger Shot
    || (GetPlayerInterior(playerid) == 9 && IsPlayerInRangeOfPoint(playerid, 50.0, 369.579528, -4.487294, 1001.858886)) // Cluckin' Bell
    || (GetPlayerInterior(playerid) == 5 && IsPlayerInRangeOfPoint(playerid, 50.0, 373.825653, -117.270904, 1001.499511))) // Well Stacked Pizza
        SetPlayerArmedWeapon(playerid, 0);
}
Esto no elimina las armas, lo que hace es cambiar el arma en la mano a los puсos.
Se puede optimizar mбs ese cуdigo definiendo las coordenadas (en un array o en una macro porque son estбticos) y usando OnPayerInteriorChange con un Switch.

Esta es la mejor forma aunque no este del todo optimizada, porque AllowInteriorWeapons restringe el uso de armas para TODOS los interiores, y hay interiores como las comisarнas (RP) y los hangares (DM) donde se suelen utilizar armas.
Reply
#10

Como he dicho anteriormente, AllowInteriorWeapons dejo de funcionar hace algъn tiempo, aunque si funciona nuevamente, es otra historia. Para mн no es la mejor opciуn ResetPlayerWeapons, pero ambas opciones son vбlidas.

Por cierto, estoy de acuerdo con Jking, no se como no se me ha ocurrido antes a mн, jeje.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)