[Ayuda] Script no da error pero no funciona
#1

No me anda el script para un bug que tengo aunque no da errores... Porque quiero poner que cuando pongas /dararma se te ponga el EstaVendiendo en 1 y que si cuando queres guardar un arma en el maletero estas con EstaVendiendo en 1 no te deje guardarla, lo hice asi pero no funciona.

pawn Код:
// Aca lo puse por primera vez
new EstaVendiendo[MAX_PLAYERS];

//Aca en el comando /dararma
CMD:dararma(playerid, params[]) {
    new string[128],id,weapon;
    if(sscanf(params, "u", id))
    return SendClientMessage(playerid, COLOR_GREY, "Uso: /dararma [playerid]");
    if(GetPVarInt(playerid, "IsInArena") == 1) return SendClientMessageEx(playerid, COLOR_WHITE, "[ERROR]: No puedes usar este comando mientras estбs en el paintball.");
    else if(Info[playerid][pEstado]==0)
    {
        if(id == playerid) return SendClientMessageEx(playerid, COLOR_GRAD1, "No puedes darte un arma a ti mismo!");
        if(Info[id][pConnectTime] < 2 || Info[id][pWRestricted] > 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "Ese jugador tiene restricciуn de armas.");
        /*if(Info[playerid][pMember] != Info[id][pMember] && Info[playerid][pMember] > 0)
        {
            SendClientMessageEx(playerid, COLOR_GRAD1, "No puedes dar armas a los jugadores fuera de tu facciуn!");
            return 1;
        }*/

        if(IsPlayerConnected(id)){
            if(ProxDetectorS(6.0, playerid, id) && !IsPlayerInAnyVehicle(playerid)){
                if(IsPlayerInAnyVehicle(id)) return SendClientMessageEx(playerid, COLOR_GRAD2, "No puedes dar un arma si el jugador esta en un vehнculos.");
                weapon = GetPlayerWeapon(playerid);
                switch(weapon)
                {
                    case 16, 18, 35, 36, 37, 38, 39, 40, 44, 45, 46, 0: SendClientMessage(playerid, COLOR_GREY, "Arma Invбlida.");
                    default:
                    {
                        format(string, sizeof(string), "Ofreciste a %s tu %s.", GetPlayerNameEx(id), WeaponNames[weapon]);
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
                        format(string, sizeof(string), "%s te ha ofrecido su %s - Usa /aceptar arma para recibirla.", GetPlayerNameEx(playerid), WeaponNames[weapon]);
                        SendClientMessage(id, COLOR_LIGHTBLUE, string);
                        SetPVarInt(id,"gunID",playerid);
                        SetPVarInt(playerid,"gun",weapon);
                        SetPVarInt(playerid,"slot",GetWeaponSlot(weapon));
                        EstaVendiendo[playerid] = 1; //ACA
                    }
                }
            }
            else SendClientMessage(playerid, COLOR_GREY, "Tu estas lejos del jugador o en un vehнculo.");
        }
        else SendClientMessage(playerid, COLOR_GREY, "La ID que has ingresado es invбlida.");
    }
    else SendClientMessage(playerid, COLOR_GREY, "No puedes hacer esto mientras estas tazeado, esposado o congelado.");
    return 1;
}

// en el /gmaletero lo tengo asi

CMD:gmaletero(playerid, params[])
{
    if(GetPVarInt(playerid, "IsInArena") == 1) return SendClientMessageEx(playerid, COLOR_WHITE, "[ERROR]: No puedes usar este comando mientras estбs en el paintball.");
    if(GetPVarInt( playerid, "EventToken") != 0) return SendClientMessageEx(playerid, COLOR_GREY, "[ERROR]: No puedes usar este comando mientras estбs en un evento.");
    if(IsPlayerInAnyVehicle(playerid)) { SendClientMessageEx(playerid, COLOR_WHITE, "[ERROR]: No puedes hacer esto mientras estar en el interior del vehнculo!"); return 1; }
    if(GetPVarInt(playerid, "EMSAttempt") != 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "[ERROR]: No puedes usar este comando ahora mismo.");
    if(EstaVendiendo[playerid] == 1) return SendClientMessageEx(playerid, COLOR_GRAD2, "[ERROR]: No puedes usar este comando mientras estas ofreciendo un arma."); //ACA
Reply
#2

pawn Код:
new bool:EstaVendiendo[MAX_PLAYERS];

CMD:dararma(playerid, params[]) {
    new string[128], weapon;
    if(sscanf(params, "r", params[0])) return SendClientMessage(playerid, COLOR_GREY, "Uso: /dararma [playerid]");
    if(Info[playerid][pEstado]==0) return SendClientMessage(playerid, COLOR_GREY, "No puedes hacer esto mientras estas tazeado, esposado o congelado.");
    if(GetPVarInt(playerid, "IsInArena")) return SendClientMessageEx(playerid, COLOR_WHITE, "[ERROR]: No puedes usar este comando mientras estбs en el paintball.");
    if(params[0] == playerid) return SendClientMessageEx(playerid, COLOR_GRAD1, "No puedes darte un arma a ti mismo!");
    if(Info[params[0]][pConnectTime] < 2 || Info[params[0]][pWRestricted] > 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "Ese jugador tiene restricciуn de armas.");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, "La ID que has ingresado es invбlida.");
    if(ProxDetectorS(6.0, playerid, params[0]) && IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "Tu estas lejos del jugador o en un vehнculo.");
    if(IsPlayerInAnyVehicle(params[0])) return SendClientMessageEx(playerid, COLOR_GRAD2, "No puedes dar un arma si el jugador esta en un vehнculos.");
   
    weapon = ArmasInvalidas(playerid);
    if(weapon) {
        SendClientMessage(playerid, COLOR_GREY, "Arma Invбlida.");
    } else {
        format(string, sizeof(string), "Ofreciste a %s tu %s.", GetPlayerNameEx(params[0]), WeaponNames[weapon]);
        SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
        format(string, sizeof(string), "%s te ha ofrecido su %s - Usa /aceptar arma para recibirla.", GetPlayerNameEx(playerid), WeaponNames[weapon]);
        SendClientMessage(params[0], COLOR_LIGHTBLUE, string);
        SetPVarInt(params[0],"gunID",playerid);
        SetPVarInt(playerid,"gun",weapon);
        SetPVarInt(playerid,"slot",GetWeaponSlot(weapon));
        EstaVendiendo[playerid] = true; //ACA
    } return true;
}
stock ArmasInvalidas(playerid) {
    switch(GetPlayerWeapon(playerid)) {
        case 16, 18, 35, 36, 37, 38, 39, 40, 44, 45, 46, 0: return true;
    } return false;
}

CMD:gmaletero(playerid, params[]) {
    if(!EstaVendiendo[playerid]) return SendClientMessage(playerid, COLOR_GRAD2, "[ERROR]: No puedes usar este comando mientras estas ofreciendo un arma.");
   
    return true;
}
Reply
#3

Gracias Otacon pero me dice "No puedes usar esto cuando estas tazeado o esposado o congelado" y no estoy nada de eso... que sera?
Reply
#4

cambia el :

pawn Код:
if(Info[playerid][pEstado]==0)
por
pawn Код:
if(Info[playerid][pEstado]==1)
Reply
#5

Muchisimas gracias Otacon!

Pera ahora tengo otro problema, cuando el otro quiere aceptarla le dice que nadie le ofrecio nada! Que bug ! xd
Reply
#6

debes cambiar el playerid por params[0] de la variable ke corresponde ke le esta ofeciendo el arma.
Reply
#7

pawn Код:
SetPVarInt(params[0],"gunID",playerid);
        SetPVarInt(params[0],"gun",weapon);
        SetPVarInt(params[0],"slot",GetWeaponSlot(weapon));
Lo puse asi y sigue pasando... no se que hice mal
Reply
#8

seguro el problema lo tienes en la funcion del comando de dar arma... verifica eso.
Reply
#9

No se como darme cuenta, yo por lo que me fije todo esta bien, por ahi esta mal en el comando de /aceptar arma algo, mira te lo dejo aca:

pawn Код:
else if(strcmp(params, "arma", true) == 0) {

                new
                    playerOffering = GetPVarInt(playerid,"gunID"),
                    weaponOffering = GetPVarInt(GetPVarInt(playerid,"gunID"),"gun"),
                    slotOffering = GetPVarInt(GetPVarInt(playerid,"gunID"),"slot"),
                    wstring[128];

                if(weaponOffering != 0 && slotOffering != 0) {
                    if(ProxDetectorS(6.0, playerid, playerOffering) && !IsPlayerInAnyVehicle(playerid) && !IsPlayerInAnyVehicle(playerOffering)) {
                        if(Info[playerOffering][pEstado]!=0) {
                            return SendClientMessage(playerid, COLOR_GREY, "El jugador que quiere venderte estб tazeado, esposado o congelado.");
                        }
                        else if(Info[playerid][pEstado]!=0) {
                            return SendClientMessage(playerid, COLOR_GREY, "No puedes hacer esto mientras estas tazeado, esposado o congelado.");
                        }
                        else {
                            RemovePlayerWeapon(playerOffering, weaponOffering);
                            GivePlayerValidWeapon(playerid, weaponOffering);
                            format(wstring, sizeof(wstring), "Aceptas el %s de %s.", WeaponNames[weaponOffering], GetPlayerNameEx(playerOffering));
                            SendClientMessage(playerid, COLOR_WHITE, wstring);
                            format(wstring, sizeof(wstring), "%s aceptу tu %s que le ofreciste.", GetPlayerNameEx(playerid), WeaponNames[weaponOffering]);
                            SendClientMessage(playerOffering, COLOR_WHITE, wstring);
                            format(wstring, sizeof(wstring), "* %s le da su %s a %s.", GetPlayerNameEx(playerOffering), WeaponNames[weaponOffering], GetPlayerNameEx(playerid));
                            ProxDetector(30.0, playerid, wstring, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                            DeletePVar(playerOffering,"gun");
                            DeletePVar(playerid,"gunID");
                            DeletePVar(playerOffering,"slot");
                        }
                    }
                    else SendClientMessage(playerid, COLOR_GREY, "Estбs muy lejos de la persona o estб en un vehнculo.");
                }
                else SendClientMessage(playerid, COLOR_GREY, "Nadie te ha ofrecido un arma.");
            }
Es lo unico que se me ocurre para que no funcione
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)