Problema.
#1

Bueno, estuve haciendo un sistema de cargador de arma..

Код:
zcmd(ucargador, playerid, params[])
	{
	    if(JugadorInfo[playerid][jCartuchoP] == 0)
	    {
	        SendClientMessage(playerid, COLOR_GRAD2, "Usted no tiene municiуn para su pistola.");
	        return 1;
		}
		else
		{
		    new arma = GetPlayerWeapon(playerid);
		    new municion = GetPlayerAmmo(playerid);
		    if(arma == 22 || arma == 23)
		    {
		    	SetPlayerAmmo(playerid, arma, municion+17);
				JugadorInfo[playerid][jCartuchoP] -= 1;
				SendClientMessage(playerid, COLOR_BLANCO, "Usted ha utilizado un cargador para su pistola.");
            }
		}
		if(JugadorInfo[playerid][jCartuchoE] == 0)
	    {
	        SendClientMessage(playerid, COLOR_GRAD2, "Usted no tiene municiуn para su escopeta.");
	        return 1;
		}
		else
		{
		    new arma = GetPlayerWeapon(playerid);
		    new municion = GetPlayerAmmo(playerid);
		    if(arma == 25)
		    {
		    	SetPlayerAmmo(playerid, arma, municion+4);
				JugadorInfo[playerid][jCartuchoE] -= 1;
				SendClientMessage(playerid, COLOR_BLANCO, "Usted ha utilizado un cargador para su escopeta.");
            }
		}
		if(JugadorInfo[playerid][jCartuchoR] == 0)
	    {
	        SendClientMessage(playerid, COLOR_GRAD2, "Usted no tiene municiуn para su rifle.");
	        return 1;
		}
		else
		{
		    new arma = GetPlayerWeapon(playerid);
		    new municion = GetPlayerAmmo(playerid);
		    if(arma == 22 || arma == 23)
		    {
		    	SetPlayerAmmo(playerid, arma, municion+10);
				JugadorInfo[playerid][jCartuchoR] -= 1;
				SendClientMessage(playerid, COLOR_BLANCO, "Usted ha utilizado un cargador para su rifle.");
            }
		}
		return 1;
	}
Tengo 3 problemas;

Si tengo una pistola y compro cargador de pistola, lo uso y me aparece "Usted no tiene municiуn para su escopeta.", pero por lo menos me carga correctamente el cargador (se agregan 17 balas).
Si tengo una escopeta y compro cargador de escopeta, lo uso y me aparece "Usted no tiene municiуn para su pistola.", y encima no me carga ninguna bala.
Si tengo un rifle y compro cargador de rifle, lo uso y me aparece "Usted no tiene municiуn para su pistola.", y encima no me carga ninguna bala.

jCargadorE (CargadorEscopeta), jCargadorP (CargadorPistola) y jCargadorR (CargadorRifle).

La variable de jCargadorX (la X segъn el nombre) aumenta en 1 cada vez que se compra un cargador en ammu-nation (JugadorInfo[playerid][jCargadorX] += 1. Sуlo creй de 3 armas, debido a que sуlo esas armas puse en venta en ammu-nation.

La variable estб definida asн:

Код:
enum jInfo
{
	jCartuchoP,
	jCartuchoE,
	jCartuchoR
};

new JugadorInfo[MAX_PLAYERS][jInfo];
Creo que no hace falta poner el dialog, їverdad?
Reply
#2

Desde que empieza el comando te puedes dar cuenta que no va a funcionar las demбs opciones porque si la primera falla las demбs nunca se ejecutaran.
pawn Код:
//aqui le dices que si no tiene municion de pistola se va a terminar el comando
//no importa si querias el cartucho de escopeta, si no tenes de pistola no funciona.
if(JugadorInfo[playerid][jCartuchoP] == 0)
{
    SendClientMessage(playerid, COLOR_GRAD2, "Usted no tiene municiуn para su pistola.");
    return 1;
}
lo que tenйs que hacer es verificar primero el tipo de arma que lleva.
pawn Код:
zcmd(ucargador, playerid, params[])
{
    new arma = GetPlayerWeapon(playerid);
    if(arma == 22) {
        if(JugadorInfo[playerid][jCartuchoP] == 0) {
            SendClientMessage(playerid, COLOR_GRAD2, "Usted no tiene municiуn para su pistola.");
            return 1; //aqui se termina el comando, pero ya sabemos que el user queria el cartucho de pistola
        }
        SetPlayerAmmo(playerid, arma, GetPlayerAmmo(playerid)+17);
        JugadorInfo[playerid][jCartuchoP] -= 1;
        SendClientMessage(playerid, COLOR_BLANCO, "Usted ha utilizado un cargador para su pistola.");
        }
    }
    if(arma == 25) {
        //y asн todo lo demбs
    }
    return 1;
}
Reply
#3

Vale, ahora funciona escopeta y pistola, pero al querer cargar el rifle con su correspondiente cargador, uso el comando y no aparece ningъn mensaje, y tampoco carga las balas..

Me gustarнa hacer mejor el comando, mбs exacto, que al usarlo sin tener ningъn arma aparezca: "No tienes ningъn arma en mano", y creo que me faltan mбs mensajes de error.
Reply
#4

se puede hacer con un switch.
pawn Код:
zcmd(ucargador, playerid, params[])
{
    switch(GetPlayerWeapon(playerid)) {
        case 22,23: {
            if(JugadorInfo[playerid][jCartuchoP] == 0) {
                SendClientMessage(playerid, COLOR_GRAD2, "Usted no tiene municiуn para su pistola.");
                return 1;
            }
            SetPlayerAmmo(playerid, arma, GetPlayerAmmo(playerid)+17);
            JugadorInfo[playerid][jCartuchoP] -= 1;
            SendClientMessage(playerid, COLOR_BLANCO, "Usted ha utilizado un cargador para su pistola.");
        }
        case 25: {
            if(JugadorInfo[playerid][jCartuchoE] == 0) {
                SendClientMessage(playerid, COLOR_GRAD2, "Usted no tiene municiуn para su escopeta.");
                return 1;
            }
            SetPlayerAmmo(playerid, arma, GetPlayerAmmo(playerid)+4);
            JugadorInfo[playerid][jCartuchoE] -= 1;
            SendClientMessage(playerid, COLOR_BLANCO, "Usted ha utilizado un cargador para su escopeta.");
        }
        case 0: {
            SendClientMessage(playerid, COLOR_BLANCO, "No tienes ningun arma en mano.");
        }
        default: {
            SendClientMessage(playerid, COLOR_BLANCO, "Usted no tiene cartuchos para esta arma.");
        }
    }
    return 1;
}
Reply
#5

Gracias Daniel, ya funciona todo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)