if(PlayerInfo[playerid][Level] == 2)
{
for(new weapon2=23; weapon2<34; weapon2++)
{
if(GetPlayerWeapon(playerid) == weapon2)
{
SetPlayerArmedWeapon(playerid, 0);
GivePlayerWeapon(playerid, weapon2, 0);
}
}
}
if(PlayerInfo[playerid][Level] == 2)
{
new WeaponID = GetPlayerWeapon( playerid );
switch( WeaponID )
{
case 1, 2, 3, 4, 5, 6, 7..24: // aqui vocк coloca os ids das armas...
{
SetPlayerArmedWeapon(playerid, 0);
GivePlayerWeapon(playerid, weapon2, 0);
//ResetPlayerWeapons(playerid);
}
}
}
RemovePlayerWeapon(playerid, ID_DA_ARMA_A_SER_REMOVIDA);
RemovePlayerWeapon(playerid, weaponid)
{
new weaponData[13][2], i;
for(i = 0; i < 13; i++)
{
GetPlayerWeaponData(playerid, i, weaponData[i][0], weaponData[i][1]);
}
ResetPlayerWeapons(playerid);
for(i = 0; i < 13; i++)
{
if(weaponData[i][0] != 0 && weaponData[i][0] != weaponid)
{
GivePlayerWeapon(playerid, weaponData[i][0], weaponData[i][1]);
}
}
}
Para remover a arma й incorreto vocк dar a arma com muniзгo 0, isso nгo vai removк-la do player...use essa funзгo que criei um tempo atrбs!
Uso: RemovePlayerWeapon(playerid, ID_DA_ARMA_A_SER_REMOVIDA); PHP код:
|
new weapons[13][2];
for (new i = 0; i <= 12; i++)
{
GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
}
ResetPlayerWeapons(playerid);
for(new i; i != 13; ++i){
GivePlayerWeapon(playerid, weapons[i][0], weapons[i][1]);
}
for(new i; i != 13; ++i){
if(weapon[i][0] == WEAPON_MINIGUN){
GivePlayerWeapon(playerid, weapons[i][0], weapons[i][1]);
}
}
for(new i; i != 13; ++i){ if(weapon[i][0] == WEAPON_MINIGUN){ GivePlayerWeapon(playerid, weapons[i][0], weapons[i][1]); } } |
eu sу queria entender uma coisa (referente ao code abaixo que vocк postou). O porque o "i" й "!=" de "13" e se tem algo haver o "i++" do "++i".
|
for(new i; i != 13; ++i){
Creio que uma nova funзгo nгo seria necessбrio. O correto й aprender a utilizar a funзгo GetPlayerWeaponData:
A funзгo GetPlayerWeaponData pega a arma e a quantidade de balas de acordo com o slot do jogador, Atualmente temos disponнveis 13 slots e no exemplo abaixo irei mostrar um pequeno exemplo: ... |
Tб nessa ordem..
й porque tб no onplayerupdate, e a cada segundo й atualizado, ai ele salva a arma do player (GetPlayerWeaponData) reseta ela (ResetPlayerWeapons) e devolve (GivePlayerWeapon), ai ele tira a arma do playe e devolve e isso a cada segundo. |
- Utilizar um timer. Nesse timer vocк pode aplicar dois tipos de validaзхes com intervalos diferentes:> Identificar se o player estб com uma Minigun em mгos, fazendo o uso da funзгo GetPlayerWeapon. Nesse caso, quanto menor for o intervalo do timer(a partir de 4 seg) maior serб a chance de nгo houver falhas como o player conseguir pegar, atirar e guardar a arma enquanto o timer nгo coincidiu com o momento.- Utilizar a funзгo OnPlayerWeaponSlotChange ou OnPlayerCurrentWeaponChange(faz uso da callback OnPlayerUpdate!!) onde identifica quando uma arma й trocada pelo player(em mгos ou no slot), logo, bastaria identificar se o ID da mesma й o da Minigun, e entгo fazer o uso da funзгo que lhe passei para remover a arma.
> Utilizar da funзгo GetPlayerWeaponData, pegando a arma que estiver no slot da Minigun, que no caso й o 7, como podes ver nessa tabela, e validar se a arma do slot й o ID da Minigun, e caso for vбlido utilizar da funзгo que disponibilizei para remover a arma. Caso aplique isso, o timer pode contar com um intervalo maior, pois identificarб mesmo com a arma guardada ou em mгos...algo como > 15 seg jб estaria suficiente.
As duas funзхes que citei acima sгo da include iBranch.inc do ipsLeon, encontre elas aqui.