Laser color.
#1

I have this CMD:
pawn Код:
CMD:lasercol(playerid, params[])
{
    new color[64];
    if(sscanf(params, "s[64]", color)) return SendClientMessage(playerid, C_GREY, "USAGE: /lasercol [color]");
    {
        if(strcmp(color, "red", false)) SetPVarInt(playerid, "color", 19080);
        else if(strcmp(color, "blue", false)) SetPVarInt(playerid, "color", 18643);
        else if(strcmp(color, "pink", false)) SetPVarInt(playerid, "color", 19081);
        else if(strcmp(color, "orange", false)) SetPVarInt(playerid, "color", 19082);
        else if(strcmp(color, "green", false)) SetPVarInt(playerid, "color", 19083);
        else if(strcmp(color, "yellow", false)) SetPVarInt(playerid, "color", 19084);
        else SendClientMessage(playerid, C_VIOLET, "Color not available!");
    }
    return 1;
}
But only /lasercol red and /lasercol blue work. When I try to make my laser yellow or any other color execpt red, it'll become blue. Also when I type an unkown color, the lest message wont come to me.
Reply
#2

You entered the script in OnPlayerUpdate?

This is the right script :

Код:
//Script Laser Weapons - Only OnPlayerUpdate CallBack.

public OnPlayerUpdate(playerid)
{
if (GetPVarInt(playerid, "laser")) {
                RemovePlayerAttachedObject(playerid, 0);
                if ((IsPlayerInAnyVehicle(playerid)) || (IsPlayerInWater(playerid))) return 1;
                switch (GetPlayerWeapon(playerid)) {
                        case 23: {
                                if (IsPlayerAiming(playerid)) {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SP standing aiming
                                                0.108249, 0.030232, 0.118051, 1.468254, 350.512573, 364.284240);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SP crouched aiming
                                                0.108249, 0.030232, 0.118051, 1.468254, 349.862579, 364.784240);
                                        }
                                } else {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SP standing not aiming
                                                0.078248, 0.027239, 0.113051, -11.131746, 350.602722, 362.384216);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SP crouched not aiming
                                                0.078248, 0.027239, 0.113051, -11.131746, 350.602722, 362.384216);
                        }       }       }
                        case 27: {
                                if (IsPlayerAiming(playerid)) {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SPAS standing aiming
                                                0.588246, -0.022766, 0.138052, -11.531745, 347.712585, 352.784271);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SPAS crouched aiming
                                                0.588246, -0.022766, 0.138052, 1.468254, 350.712585, 352.784271);
                                        }
                                } else {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SPAS standing not aiming
                                                0.563249, -0.01976, 0.134051, -11.131746, 351.602722, 351.384216);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // SPAS crouched not aiming
                                                0.563249, -0.01976, 0.134051, -11.131746, 351.602722, 351.384216);
                        }       }       }
                        case 30: {
                                if (IsPlayerAiming(playerid)) {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // AK standing aiming
                                                0.628249, -0.027766, 0.078052, -6.621746, 352.552642, 355.084289);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // AK crouched aiming
                                                0.628249, -0.027766, 0.078052, -1.621746, 356.202667, 355.084289);
                                        }
                                } else {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // AK standing not aiming
                                                0.663249, -0.02976, 0.080051, -11.131746, 358.302734, 353.384216);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // AK crouched not aiming
                                                0.663249, -0.02976, 0.080051, -11.131746, 358.302734, 353.384216);
                        }       }       }
                        case 31: {
                                if (IsPlayerAiming(playerid)) {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // M4 standing aiming
                                                0.528249, -0.020266, 0.068052, -6.621746, 352.552642, 355.084289);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // M4 crouched aiming
                                                0.528249, -0.020266, 0.068052, -1.621746, 356.202667, 355.084289);
                                        }
                                } else {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // M4 standing not aiming
                                                0.503249, -0.02376, 0.065051, -11.131746, 357.302734, 354.484222);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // M4 crouched not aiming
                                                0.503249, -0.02376, 0.065051, -11.131746, 357.302734, 354.484222);
                        }       }       }
			case 34: {
				if (IsPlayerAiming(playerid)) {
					/*if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
						SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // Sniper standing aiming
						0.528249, -0.020266, 0.068052, -6.621746, 352.552642, 355.084289);
					} else {
						SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // Sniper crouched aiming
						0.528249, -0.020266, 0.068052, -1.621746, 356.202667, 355.084289);
					}*/
					return 1;
				} else {
					if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
						SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // Sniper standing not aiming
						0.658248, -0.03276, 0.133051, -11.631746, 355.302673, 353.584259);
					} else {
						SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // Sniper crouched not aiming
						0.658248, -0.03276, 0.133051, -11.631746, 355.302673, 353.584259);
			}	}	}
                        case 29: {
                                if (IsPlayerAiming(playerid)) {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // MP5 standing aiming
                                                0.298249, -0.02776, 0.158052, -11.631746, 359.302673, 357.584259);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // MP5 crouched aiming
                                                0.298249, -0.02776, 0.158052, 8.368253, 358.302673, 352.584259);
                                        }
                                } else {
                                        if (GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DUCK) {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // MP5 standing not aiming
                                                0.293249, -0.027759, 0.195051, -12.131746, 354.302734, 352.484222);
                                        } else {
                                                SetPlayerAttachedObject(playerid, 0, GetPVarInt(playerid, "color"), 6, // MP5 crouched not aiming
                                                0.293249, -0.027759, 0.195051, -12.131746, 354.302734, 352.484222);
        }       }       }       }       }
        return 1;
}
Reply
#3

pawn Код:
CMD:lasercol(playerid, params[])
{
    if(isnull(params)) return SendClientMessage(playerid, C_GREY, "USAGE: /lasercol [color]");

    if(!strcmp(params, "red", true)) SetPVarInt(playerid, "color", 19080);
    else if(!strcmp(params, "blue", true)) SetPVarInt(playerid, "color", 18643);
    else if(!strcmp(params, "pink", true)) SetPVarInt(playerid, "color", 19081);
    else if(!strcmp(params, "orange", true)) SetPVarInt(playerid, "color", 19082);
    else if(!strcmp(params, "green", true)) SetPVarInt(playerid, "color", 19083);
    else if(!strcmp(params, "yellow", true)) SetPVarInt(playerid, "color", 19084);
    else SendClientMessage(playerid, C_VIOLET, "Color not available!");
    return 1;
}
1. Changed false to true because otherwise 'YELLOW' would be invalid (true for 'ignorecase' in strcmp).
2. strcmp returns 0 when it matches, so I added a ! before strcmp().
3. No need to use sscanf. sscanf is for SPLITTING strings with MULTIPLE parameters. Waste of memory and CPU.
4. sscanf returns 1 if the input is invalid, so your code would NEVER work because you basically said 'if sscanf is invalid, process input'.
Reply
#4

Does It matter if it's:
pawn Код:
if(!strcmp(params, "red", true))
or:
pawn Код:
if(strcmp(params, "red", false))
But thanks, the code worked.
Reply
#5

Check out strcmp on the wiki, it's that simple

If correct, strcmp checks if the strings are NOT the same, therefore you must include a ! in front of it to check if they ARE the same. I have no idea about the true/false thing, considering that is the ignore case (whether or not it can be RED, ReD, reD, etcetra is allowed when true).
Reply
#6

Quote:
Originally Posted by Dan.
Посмотреть сообщение
Does It matter if it's:
pawn Код:
if(!strcmp(params, "red", true))
or:
pawn Код:
if(strcmp(params, "red", false))
.
Yes it does. ! checks if strcmp is FALSE, strcmp returns FALSE if the strings MATCH, which is what you want. The true is so if a player typed 'RED' or 'Red' it will still work (case insensitive).
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)