10.11.2012, 14:26
Estuve haciendo un sistema para que al comprar un arma, te de un nъmero de serie del 1 al 99999..
Tengo un problema, creй un comando llamado /vnumero, que funciona con el arma que uno tiene en mano, entonces comprй una pistola colt 45 y me dio el nъmero de serie 7545, bien, usй /vnumero y apareciу "El nъmero de serie de йsta arma es 7545", bien, ahora.. me quitй el arma, usй el comando /vnumero (tenнa el puсo en la mano) y me apareciу "El nъmero de serie de йsta arma es 7545", me giveй una escopeta y me apareciу "El nъmero de serie de йsta arma es 7545" (no es lo mismo givear que comprar, al comprar te da nъmero de serie, al givear no). Luego me comprй un rifle de caza con el nъmero de serie 17499, usй el comando /vnumero y me apareciу "El nъmero de serie de йsta arma es 17499", la descartй, me giveй una bazooka y usй /vnumero, y me apareciу "El nъmero de serie de йsta arma es 17499". Luego, descartй las armas, comprй una pistola colt 45 y me dio nъmero de serie 3000, usй /vnumero y me figurу que el nъmero de serie es 3000, no la descartй, y no me giveй armas, comprй un rifle de caza con el nъmero de serie 8000, entonces usй /vnumero y me apareciу que el nъmero era 8000, entonces seleccionй la pistola y me apareciу que era 8000, descartй armas y empezу a aparecer 8000.
Conclusiуn: Creo que detecta el ъltimo nъmero de serie del arma comprada, y por lo tanto, se hace fija.
No entiendo porque se generan йstas confusiones de script.
Al principio del GM definн;
Se actualiza asн;
Con su correspondiente timer en OnGameModeInit;
El comando /vnъmero;
Los dialog's que muestran que te da la variable;
Sй que es algo complejo, desde mi punto de vista avanzado, al principio sabнa que generarнa confusiones, fue una idea propia y original, que ningъn servidor tiene, asн que decidн scriptearlo.
Tengo un problema, creй un comando llamado /vnumero, que funciona con el arma que uno tiene en mano, entonces comprй una pistola colt 45 y me dio el nъmero de serie 7545, bien, usй /vnumero y apareciу "El nъmero de serie de йsta arma es 7545", bien, ahora.. me quitй el arma, usй el comando /vnumero (tenнa el puсo en la mano) y me apareciу "El nъmero de serie de йsta arma es 7545", me giveй una escopeta y me apareciу "El nъmero de serie de йsta arma es 7545" (no es lo mismo givear que comprar, al comprar te da nъmero de serie, al givear no). Luego me comprй un rifle de caza con el nъmero de serie 17499, usй el comando /vnumero y me apareciу "El nъmero de serie de йsta arma es 17499", la descartй, me giveй una bazooka y usй /vnumero, y me apareciу "El nъmero de serie de йsta arma es 17499". Luego, descartй las armas, comprй una pistola colt 45 y me dio nъmero de serie 3000, usй /vnumero y me figurу que el nъmero de serie es 3000, no la descartй, y no me giveй armas, comprй un rifle de caza con el nъmero de serie 8000, entonces usй /vnumero y me apareciу que el nъmero era 8000, entonces seleccionй la pistola y me apareciу que era 8000, descartй armas y empezу a aparecer 8000.
Conclusiуn: Creo que detecta el ъltimo nъmero de serie del arma comprada, y por lo tanto, se hace fija.
No entiendo porque se generan йstas confusiones de script.
Al principio del GM definн;
pawn Код:
new NumeroDeSerie[MAX_PLAYERS];
pawn Код:
forward ActualizarNumeroSerie();
public ActualizarNumeroSerie()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(NumeroDeSerie[i] > 0)
{
//
}
}
}
pawn Код:
SetTimer("ActualizarNumeroSerie",100,1);
pawn Код:
zcmd(vnumero, playerid, params[])
{
new string[128];
format(string, sizeof(string), "El nъmero de serie de йsta arma es {00FF00}%d.", NumeroDeSerie[playerid]);
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}
pawn Код:
if(dialogid == AMMUNATION_MENU_PIS)
{
if(response == 1)
{
if(JugadorInfo[playerid][pGunLic] == 0)
{
Message(playerid, COLOR_GRAD2, " Debe tener licencia de porte armamentнstico para poder adquirir un arma.");
return 1;
}
switch(listitem)
{
case 0:
{
if(JugadorInfo[playerid][pDonateT] == 1)
{
new randarma = random(99999);
NumeroDeSerie[playerid] = randarma;
SendClientMessage(playerid, COLOR_YELLOW, "Usted ha comprado una pistola Colt M1911 (calibre .45). Se le ha hecho un descuento del 30%% por ser socio.");
format(string, sizeof(string), "El nъmero de serie de su pistola es {00FF00}%d.", randarma);
SendClientMessage(playerid, COLOR_YELLOW, string);
Compra(playerid, 665);
SafeGivePlayerWeapon(playerid, 22, 1);
}
else
{
new randarma = random(99999);
NumeroDeSerie[playerid] = randarma;
SendClientMessage(playerid, COLOR_YELLOW, "Usted ha comprado una pistola Colt M1911 (calibre .45).");
format(string, sizeof(string), "El nъmero de serie de su pistola es {00FF00}%d.", randarma);
SendClientMessage(playerid, COLOR_YELLOW, string);
Compra(playerid, 960);
SafeGivePlayerWeapon(playerid,22,1);
}
}
}
}
else ShowAmmunation(playerid);
}
if(dialogid == AMMUNATION_MENU_ESC)
{
if(response == 1)
{
if(JugadorInfo[playerid][pGunLic] == 0)
{
Message(playerid, COLOR_GRAD2, " Debe tener licencia de porte armamentнstico para poder adquirir un arma.");
return 1;
}
switch(listitem)
{
case 0:
{
if(JugadorInfo[playerid][pDonateT] == 1)
{
new randarma = random(99999);
NumeroDeSerie[playerid] = randarma;
SendClientMessage(playerid, COLOR_YELLOW, "Usted ha comprado un rifle de caza Marlin Model 336 (calibre .30). Se le ha hecho un descuento del 30%% por ser socio.");
format(string, sizeof(string), "El nъmero de serie de su rifle de caza es {00FF00}%d.", randarma);
SendClientMessage(playerid, COLOR_YELLOW, string);
Compra(playerid, 693);
SafeGivePlayerWeapon(playerid, 33,1);
}
else
{
new randarma = random(99999);
NumeroDeSerie[playerid] = randarma;
SendClientMessage(playerid, COLOR_YELLOW, "Usted ha comprado un rifle de caza Marlin Model 336 (calibre .30).");
format(string, sizeof(string), "El nъmero de serie de su rifle de caza es {00FF00}%d.", randarma);
SendClientMessage(playerid, COLOR_YELLOW, string);
Compra(playerid, 990);
SafeGivePlayerWeapon(playerid, 33,1);
}
}
case 1:
{
if(JugadorInfo[playerid][pDonateT] == 1)
{
new randarma = random(99999);
NumeroDeSerie[playerid] = randarma;
SendClientMessage(playerid, COLOR_YELLOW, "Usted ha comprado una escopeta Ithaca 17 (calibre 18,53mm). Se le ha hecho un descuento del 30%% por ser socio.");
format(string, sizeof(string), "El nъmero de serie de su escopeta normal es {00FF00}%d.", randarma);
SendClientMessage(playerid, COLOR_YELLOW, string);
Compra(playerid, 805);
SafeGivePlayerWeapon(playerid, 25,1);
}
else
{
new randarma = random(99999);
NumeroDeSerie[playerid] = randarma;
SendClientMessage(playerid, COLOR_YELLOW, "Usted ha comprado una escopeta Ithaca 17 (calibre 18,53mm). Se le ha hecho un descuento del 30%% por ser socio.");
format(string, sizeof(string), "El nъmero de serie de su escopeta normal es {00FF00}%d.", randarma);
SendClientMessage(playerid, COLOR_YELLOW, string);
Compra(playerid, 1150);
SafeGivePlayerWeapon(playerid, 25,1);
}
}
}
}
else ShowAmmunation(playerid);
}