їCуmo hago para que las balas de mi arma se actualicen en el bolsillos? -
Strikeskp - 06.05.2017
Sucede que hay un problema un poco problemбtico por asн decirlo, sucede que mi arma al estar digamos, una deserte con 7 balas, en el
/bol aparece
Desert Eagle (7) es decir
7 balas el problema es que digamos, al disparar, y la desert queda en 2 balas, verificamos el /bol y sigue diciendo
"Desert Eagle (7)"
Ahora mi pregunta es їCуmo puedo hacer que cuando la bala se dispare, se actualice en el bolsillo? porque esto tambien crea otro problema y es que si el arma se acaba, y usamos /guardar y luego sacar, el arma se recarga sin problemas.
Gracias de antemano.
Respuesta: їCуmo hago para que las balas de mi arma se actualicen en el bolsillos? -
Mamoru - 06.05.2017
Podrнas hacer que la variable de balas en '/bol' se ponga en 0 al sacar el arma y cuando uses '/guardar' se guarde con las balas actuales.
Re: їCуmo hago para que las balas de mi arma se actualicen en el bolsillos? -
Strikeskp - 06.05.2017
Estб asн fнjate. Este es el comando
/bol
PHP код:
stock MostrarBolsillos(playerid, playerid1)
{
new dialog[1024], string[128];
for(new i = 1; i < 13; i++)
{
if(i == 1)
{
if(BolsilloID[playerid][i] != 0) format(dialog, sizeof(dialog), "{FFFFFF}1) - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})", ObtenerNombreObjeto(BolsilloID[playerid][1]), BolsilloCantidad[playerid1][1]);
else format(dialog, sizeof(dialog), "{FFFFFF}1) - Bolsillo vacнo.");
continue;
}
if(i == 11)
{
strcat(dialog, "\n|--------------------------------------------------------------|");
if(BolsilloID[playerid][i] != 0) format(string, sizeof(string), "\n{FFFFFF}%Mano derecha - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})", ObtenerNombreObjeto(BolsilloID[playerid][i]), BolsilloCantidad[playerid1][i]);
else format(string, sizeof(string), "\n{FFFFFF}Mano derecha - desocupada.");
strcat(dialog, string);
continue;
}
if(i == 12)
{
if(BolsilloID[playerid][i] != 0) format(string, sizeof(string), "\n{FFFFFF}%Mano izquierda - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})", ObtenerNombreObjeto(BolsilloID[playerid][i]), BolsilloCantidad[playerid1][i]);
else format(string, sizeof(string), "\n{FFFFFF}Mano izquierda - desocupada.");
strcat(dialog, string);
break;
}
if(BolsilloID[playerid][i] != 0) format(string, sizeof(string), "\n{FFFFFF}%d) - {D4D700}%s {FFFFFF}({D4D700}%d{FFFFFF})", i, ObtenerNombreObjeto(BolsilloID[playerid][i]), BolsilloCantidad[playerid1][i]);
else format(string, sizeof(string), "\n{FFFFFF}%d) - Bolsillo vacнo.", i);
strcat(dialog, string);
}
format(string, sizeof(string), "{FFFFFF}Bolsillos de %s", GetPlayerNameEx(playerid));
ShowPlayerDialog(playerid, BOLSILLO, DIALOG_STYLE_LIST, string, dialog, "Seleccionar", "Salir");
return 1;
}
Y este es el
/sacar
PHP код:
CMD:guardar(playerid, params[])
{
new id;
if(sscanf(params, "i", id))
{
SendClientMessage(playerid, COLOR_WHITE, "Uso: {FFFFFF}/guardar [Slot]");
SendClientMessage(playerid, COLOR_WHITE, "Slots: {FFFFFF}1 = derecha | 2 = izquierda");
return 1;
}
if(id != 1 && id != 2)
{
SendClientMessage(playerid, COLOR_WHITE, "Uso: {FFFFFF}/guardar [Slot]");
SendClientMessage(playerid, COLOR_WHITE, "Slots: {FFFFFF}1 = derecha | 2 = izquierda");
return 1;
}
if(BolsilloID[playerid][10+id] == 0) return SendClientMessage(playerid, COLOR_WHITE, "* No tienes nada en esa mano.");
if(ObjetoPesado(BolsilloID[playerid][10+id])) return SendClientMessage(playerid, COLOR_WHITE, "* No puedes guardar este objeto en tu bolsillo.");
for(new i = 1; i < 10; i++)
{
if(BolsilloID[playerid][i] == 0)
{
new string[64];
SetTimerEx("ArmaSegura", 4500, 0, "d", playerid);
GuardoArmaSegura[playerid] = 1;
BolsilloID[playerid][i] = BolsilloID[playerid][10+id];
BolsilloTipo[playerid][i] = BolsilloTipo[playerid][10+id];
BolsilloCantidad[playerid][i] = BolsilloCantidad[playerid][10+id];
if(EsArma(BolsilloID[playerid][10+id]))
{
ResetPlayerWeapons(playerid);
}
BolsilloID[playerid][10+id] = 0;
BolsilloTipo[playerid][10+id] = 0;
BolsilloCantidad[playerid][10+id] = 0;
format(string, sizeof(string), "Colocaste un/a %s en el bolsillo %d.", ObtenerNombreObjeto(BolsilloID[playerid][i]), i);
SendClientMessage(playerid, COLOR_WHITE, string);
UpdateAttach(playerid);
GuardarBolsillos(playerid);
return 1;
}
}
return 1;
}
Intentй eso que me dijiste pero no le encuentro vuelta
Respuesta: їCуmo hago para que las balas de mi arma se actualicen en el bolsillos? -
mcreed - 07.05.2017
Si lo que quieres es que conforme dispare se reduscan las balas podrнas utilizar la siguiente callback:
PHP код:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
Si es a travйs de un comando de /sacar donde especificas las balas que el jugador puede sacar de su bolsillo, pues simplemente te recomendarнa restar del total que saco y luego lo guardas.
Re: їCуmo hago para que las balas de mi arma se actualicen en el bolsillos? -
Strikeskp - 01.09.2017
Ya lo reparй, tuve que colocar un Forward/public que actualiza el inventario y todo l oque tenga en la mano.
Gracias a todos
Respuesta: їCуmo hago para que las balas de mi arma se actualicen en el bolsillos? -
Tirael - 01.09.2017
Eso pasa al descargar cosas a medias.
їPara que quieres guardar todo lo que tenga en el inventario si con guardar la municiуn sobra?.
La mejor soluciуn serнa esto:
pawn Код:
ActualizarBalas(playerid);//Colуcalo en OnPlayerUpdate
Y al final del gamemode:
pawn Код:
funcion ActualizarBalas(playerid)
{
if(EsArma(PlayerInfo[playerid][pBolsillos][11]))
{
new municion, arma;
arma = GetPlayerWeapon(playerid);
if(arma == 0) return 1;
municion = GetPlayerAmmo(playerid);
PlayerInfo[playerid][pCantidadBolsillos][11] = municion;//PlayerInfo[playerid][pCantidadBolsillos][11] cбmbialo por lo que uses.
}
return 1;
}