GetPlayerWeaponData -
Mitic0 - 05.08.2018
Olб guys tф fazendo um sistema de armas em mysql, so que tф tendo um probleminha,
nгo estou conseguindo diminuir a muniзгo, alguйm pode me dar uma forcinha ?
pawn Код:
forward VerificarBalas();
public VerificarBalas()
{
new weapon, ammo;
foreach(new playerid : Player)
{
for(new i; i < MAX_ARMAS; i++)
{
if(Armas[i][DonoArma] == PlayerInfo[playerid][UserID])
{
GetPlayerWeaponData(playerid, GetSlot(Armas[i][Modelo]), weapon, ammo);
if(ammo >= Armas[i][Municao]) {
Armas[i][Municao] = ammo;
}
else Armas[i][Municao] = 0;
new on = DonoOnline(Armas[i][DonoArma]);
if(Armas[i][Municao] == 0)
{
if(on > -1)
{
new string[128];
format(string,128,"ARMAS: A muniзгo de sua arma %s acabou.", NomeArmas[Armas[i][Modelo]]);
SendClientMessage(i, -1, string);
}
}
}
}
}
return 1;
}
Re: GetPlayerWeaponData -
willttoonn - 05.08.2018
Que erro acontece?
Re: GetPlayerWeaponData -
Mitic0 - 05.08.2018
quando o jogador voltava no servidor, as muniзхes duplicava. Consegui, fiz desse jeito.
pawn Код:
forward VerificarBalas();
public VerificarBalas()
{
new plyWeapons[13];
new plyAmmo[13];
new weapon, ammo;
foreach(new playerid : Player)
{
for(new i; i < MAX_ARMAS; i++)
{
if(Arma[i][Dono] == PlayerInfo[playerid][UserID])
{
for(new slot = 0; slot < 13; slot++) GetPlayerWeaponData(playerid, GetSlot(Arma[i][Modelo]), plyWeapons[slot], plyAmmo[slot]);
new has = Arma[i][ArmaAmmo];
if(plyWeapons[GetSlot(Arma[i][Modelo])] == Arma[i][Modelo])
{
if(has > plyAmmo[GetSlot(Arma[i][Modelo])])
{
if( (has > 5000 && plyAmmo[GetSlot(Arma[i][Modelo])] == 0) || (plyAmmo[GetSlot(Arma[i][Modelo])] < (has-5000*2)))
{
}
else
{
Arma[i][ArmaAmmo] = plyAmmo[GetSlot(Arma[i][Modelo])];
}
}
new on = DonoOnline(Arma[i][Dono]);
if(Arma[i][ArmaAmmo] == 0)
{
if(on > -1)
{
new string[128];
format(string,128,"ARMAS: A muniзгo de sua arma %s acabou.", NomeArmas[Arma[i][Modelo]]);
SendClientMessage(i, -1, string);
}
}
}
}
}
}
return 1;
}
eu fiz essas cb mas acho que poderia ficar melhor melhor, tem alguma ideia de como identar ela ?
й pra identificar se tem a arma jб no slot para o player nгo poder comprar outra
pawn Код:
stock TemArmaSlot(playerid, idarma)
{
new temarmaslot = 0;
for(new i; i < MAX_ARMAS; i++)
{
if(Arma[i][Dono] == PlayerInfo[playerid][UserID])
{
if(idarma == 2 || idarma == 3 || idarma == 4 || idarma == 5 || idarma == 6 || idarma == 7 || idarma == 8 || idarma == 9){
if(Arma[i][Modelo] == 2 ||Arma[i][Modelo] == 3 ||Arma[i][Modelo] == 4 ||Arma[i][Modelo] == 5 ||Arma[i][Modelo] == 6 ||Arma[i][Modelo] == 7 ||Arma[i][Modelo] == 8 ||Arma[i][Modelo] == 9)
{
temarmaslot = 1;
}
}
if(idarma == 10 || idarma == 11 || idarma == 12 || idarma == 13 || idarma == 14 || idarma == 15){
if(Arma[i][Modelo] == 10 ||Arma[i][Modelo] == 11 ||Arma[i][Modelo] == 12 ||Arma[i][Modelo] == 13 ||Arma[i][Modelo] == 14 ||Arma[i][Modelo] == 15)
{
temarmaslot = 1;
}
}
if(idarma == 16 || idarma == 17 || idarma == 18){
if(Arma[i][Modelo] == 16 ||Arma[i][Modelo] == 17 ||Arma[i][Modelo] == 18)
{
temarmaslot = 1;
}
}
if(idarma == 22 || idarma == 23 || idarma == 24 ){
if(Arma[i][Modelo] == 22 ||Arma[i][Modelo] == 23 ||Arma[i][Modelo] == 24)
{
temarmaslot = 1;
}
}
if(idarma == 25 || idarma == 26 || idarma == 27 ){
if(Arma[i][Modelo] == 25 ||Arma[i][Modelo] == 26 ||Arma[i][Modelo] == 27)
{
temarmaslot = 1;
}
}
if(idarma == 28 || idarma == 29 || idarma == 32){
if(Arma[i][Modelo] == 28 ||Arma[i][Modelo] == 29 ||Arma[i][Modelo] == 32)
{
temarmaslot = 1;
}
}
if(idarma == 30 || idarma == 31){
if(Arma[i][Modelo] == 30 ||Arma[i][Modelo] == 31)
{
temarmaslot = 1;
}
}
if(idarma == 33 || idarma == 34){
if(Arma[i][Modelo] == 33 ||Arma[i][Modelo] == 34)
{
temarmaslot = 1;
}
}
}
}
return temarmaslot;
}
stock CarregarArma(playerid)
{
new idarma;
for(new i; i < MAX_ARMAS; i++)
{
if(Arma[i][Dono] == PlayerInfo[playerid][UserID])
{
idarma = Arma[i][Modelo];
if(idarma == 2 || idarma == 3 || idarma == 4 || idarma == 5 || idarma == 6 || idarma == 7 || idarma == 8 || idarma == 9){
if(Arma[i][Modelo] == 2 ||Arma[i][Modelo] == 3 ||Arma[i][Modelo] == 4 ||Arma[i][Modelo] == 5 ||Arma[i][Modelo] == 6 ||Arma[i][Modelo] == 7 ||Arma[i][Modelo] == 8 ||Arma[i][Modelo] == 9)
{
GivePlayerWeapon(playerid, idarma);
}
}
if(idarma == 10 || idarma == 11 || idarma == 12 || idarma == 13 || idarma == 14 || idarma == 15){
if(Arma[i][Modelo] == 10 ||Arma[i][Modelo] == 11 ||Arma[i][Modelo] == 12 ||Arma[i][Modelo] == 13 ||Arma[i][Modelo] == 14 ||Arma[i][Modelo] == 15)
{
GivePlayerWeapon(playerid, idarma);
}
}
if(idarma == 16 || idarma == 17 || idarma == 18){
if(Arma[i][Modelo] == 16 ||Arma[i][Modelo] == 17 ||Arma[i][Modelo] == 18)
{
GivePlayerWeapon(playerid, idarma);
}
}
if(idarma == 22 || idarma == 23 || idarma == 24 ){
if(Arma[i][Modelo] == 22 ||Arma[i][Modelo] == 23 ||Arma[i][Modelo] == 24)
{
GivePlayerWeapon(playerid, idarma);
}
}
if(idarma == 25 || idarma == 26 || idarma == 27 ){
if(Arma[i][Modelo] == 25 ||Arma[i][Modelo] == 26 ||Arma[i][Modelo] == 27)
{
GivePlayerWeapon(playerid, idarma);
}
}
if(idarma == 28 || idarma == 29 || idarma == 32){
if(Arma[i][Modelo] == 28 ||Arma[i][Modelo] == 29 ||Arma[i][Modelo] == 32)
{
GivePlayerWeapon(playerid, idarma);
}
}
if(idarma == 30 || idarma == 31){
if(Arma[i][Modelo] == 30 ||Arma[i][Modelo] == 31)
{
GivePlayerWeapon(playerid, idarma);
}
}
if(idarma == 33 || idarma == 34){
if(Arma[i][Modelo] == 33 ||Arma[i][Modelo] == 34)
{
GivePlayerWeapon(playerid, idarma);
}
}
}
}
return temarmaslot;
}
Re: GetPlayerWeaponData -
Felipealves - 05.08.2018
PHP код:
static TemArmaSlot(playerid, idarma){
for(new i = 0; i < MAX_ARMAS; i++){
if(Arma[i][Dono] == PlayerInfo[playerid][UserID]){
if(Arma[i][Modelo] == idarma){
return true;
}
}
}
return false;
}
PHP код:
if(TeamArmaSlot(playerid, idarma)) return SendClientMessage(playerid, -1, "[!] Vocк jб possui essa arma no slot.");
Re: GetPlayerWeaponData -
Mitic0 - 05.08.2018
Isso nгo funciona, porque por exemplo, Se eu estiver com a arma 25, e comprar a 26 nгo vai bloquear, somente se eu comprar a 25.
Re: GetPlayerWeaponData -
Felipealves - 05.08.2018
Testa ai
PHP код:
static SlotsArmas(armaid){
new slot;
switch(armaid){
case 0..1: slot = 0; // FIST
case 2..9: slot = 1; // ARMA BRANCA
case 10..15: slot = 10; // ARMAS SLAOQ
case 16..18: slot = 8; // EXPLOSIVOS
case 22..24: slot = 2; // PISTOLAS
case 25..27: slot = 3; // DOZES
case 28..29: slot = 4; // SUBS
case 30..31: slot = 5; // FUZIS
case 32: slot = 4; // SUBS
case 33..34: slot = 6; // SNIPERS
case 35..38: slot = 7; // BAZUCAS
case 39: slot = 8; // EXPLOSIVO
case 40: slot = 12; // DETONADOR
case 41..43: slot = 9; // SLAS
case 44..46: slot = 11; // VISГO
}
return slot;
}
static SlotVazios(playerid, idarma){
new Weapons[13][2];
for(new i = 0; i < 13; i++){
GetPlayerWeaponData(playerid, i, Weapons[i][0], Weapons[i][1]);
if(SlotsArmas(idarma) == i && (Weapons[i][0] != 0))
return true;
}
return false;
}
PHP код:
if(SlotVazios(playerid, idarma)) return SendClientMessage(playerid, -1, "[!] Vocк jб possui arma nesse slot!");