SA-MP Forums Archive
/duty command - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: /duty command (/showthread.php?tid=284817)



/duty command - ThamburaaN - 20.09.2011

i have made a duty command. but when i go off duty i need the weps i had before i went to duty. please help. thnks


Re: /duty command - Stigg - 20.09.2011

Can we see a snippet of your code ? We're not mind readers lolz.


Re: /duty command - Kingunit - 20.09.2011

Uhmm like Stigg said. Provide some code.


Re: /duty command - ThamburaaN - 21.09.2011

when i go back to off duty. i want wat skin i used before and weps
Code:
dcmd_onduty(playerid,params[])
{
    #pragma unused params
	if (AccInfo[playerid][Level] >= 1)
	{
	    if(AccInfo[playerid][OnDuty] == 0)
	    {
 			AccInfo[playerid][OnDuty] = 1;
 			SetPlayerHealth(playerid,100000);
 			SetPlayerSkin(playerid,294);
			GivePlayerWeapon(playerid,16,50000);
			GivePlayerWeapon(playerid,38,50000);
 			return SendClientMessage(playerid,green,"You are now in Duty Mode");
		}
		else
		{
			AccInfo[playerid][OnDuty] = 0;
			SetPlayerHealth(playerid,100);
 			return SendClientMessage(playerid,orange,"You are now Off Duty");
 			
		}
	}
	return ErrorMessages(playerid, 5);
}



Re: /duty command - mmrk - 21.09.2011

For skin you could do it with PVar's like this:

pawn Code:
dcmd_onduty(playerid,params[])
{
    #pragma unused params
    if (AccInfo[playerid][Level] >= 1)
    {
        if(AccInfo[playerid][OnDuty] == 0)
        {
            SetPVarInt(playerid, "Skin", GetPlayerSkin(playerid)); // added
           
            AccInfo[playerid][OnDuty] = 1;
            SetPlayerHealth(playerid,100000);
            SetPlayerSkin(playerid,294);
            GivePlayerWeapon(playerid,16,50000);
            GivePlayerWeapon(playerid,38,50000);
            return SendClientMessage(playerid,green,"You are now in Duty Mode");
        }
        else
        {
            SetPlayerSkin(playerid, GetPVarInt(playerid, "Skin")); // Added
           
            AccInfo[playerid][OnDuty] = 0;
            SetPlayerHealth(playerid,100);
            return SendClientMessage(playerid,orange,"You are now Off Duty");
           
        }
    }
    return ErrorMessages(playerid, 5);
}



Re: /duty command - grand.Theft.Otto - 21.09.2011

Like mmrk did, you can use PVar's. You can also use variables to store the player's last weapons/skin too. Here, try storing the weapons in a variable this time instead of PVars:

pawn Code:
// top of script

new WepBeforeDuty[MAX_PLAYERS];

// place this in your /onduty script BEFORE the player gets the minigun and other weapons

WepBeforeDuty[playerid] = GetPlayerWeapons(playerid);

// when the player types /onduty again (to go off duty)

GivePlayerWeapon(playerid,WepBeforeDuty[playerid]);
The above should give you the weapons they had before (maybe the exact same ammo too but I don't know for sure).

All together, the /onduty command should look like this:
pawn Code:
dcmd_onduty(playerid,params[])
{
    #pragma unused params
    if (AccInfo[playerid][Level] >= 1)
    {
        if(AccInfo[playerid][OnDuty] == 0)
        {
            SetPVarInt(playerid, "Skin", GetPlayerSkin(playerid)); // added
           
            AccInfo[playerid][OnDuty] = 1;
            SetPlayerHealth(playerid,100000);
            SetPlayerSkin(playerid,294);
            WepBeforeDuty[playerid] = GetPlayerWeapons(playerid); // getting their weps BEFORE it sets to minigun
            GivePlayerWeapon(playerid,16,50000);
            GivePlayerWeapon(playerid,38,50000);
            return SendClientMessage(playerid,green,"You are now in Duty Mode");
        }
        else
        {
            SetPlayerSkin(playerid, GetPVarInt(playerid, "Skin")); // Added
            GivePlayerWeapon(playerid,WepBeforeDuty[playerid]); // giving the weapons back that we used above ^
            AccInfo[playerid][OnDuty] = 0;
            SetPlayerHealth(playerid,100);
            return SendClientMessage(playerid,orange,"You are now Off Duty");
           
        }
    }
    return ErrorMessages(playerid, 5);
}



Re: /duty command - ThamburaaN - 21.09.2011

getting errors
Code:
C:\Users\script\new script\filterscripts\newscript.pwn(6067) : error 017: undefined symbol "WepBeforeDuty"
C:\Users\script\new script\filterscripts\newscript.pwn(6067) : warning 215: expression has no effect
C:\Users\script\new script\filterscripts\newscript.pwn(6067) : error 001: expected token: ";", but found "]"
C:\Users\script\new script\filterscripts\newscript.pwn(6067) : error 029: invalid expression, assumed zero
C:\Users\script\new script\filterscripts\newscript.pwn(6067) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


4 Errors.



Re: /duty command - grand.Theft.Otto - 21.09.2011

Did you put :

new WepBeforeDuty[MAX_PLAYERS];

at the top of the script (under #include <a_samp>)


Re: /duty command - ThamburaaN - 22.09.2011

still getting this errors
Code:
C:\Users\script\new script\filterscripts\newscript.pwn(34) : error 010: invalid function or declaration
C:\Users\script\new script\filterscripts\newscript.pwn(6068) : error 017: undefined symbol "WepBeforeDuty"
C:\Users\script\new script\filterscripts\newscript.pwn(6068) : warning 215: expression has no effect
C:\Users\script\new script\filterscripts\newscript.pwn(6068) : error 001: expected token: ";", but found "]"
C:\Users\script\new script\filterscripts\newscript.pwn(6068) : error 029: invalid expression, assumed zero
C:\Users\script\new script\filterscripts\newscript.pwn(6068) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


5 Errors.



Re: /duty command - Davz*|*Criss - 22.09.2011

Hey ThamburaaN.

Here is /AdminDutyON and /AdminDutyOFF code:-

I have made by myself.

You must #include <zcmd>

Top of your fs.

pawn Code:

new AdminOnDuty[MAX_PLAYERS]


And here is the code:-

pawn Code:

pawn Code:
CMD:admindutyon(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    if(AdminOnDuty[playerid] == 1) return SendClientMessage(playerid,0xAA3333AA, "You're already on Adminstrator duty, Type /AdminDutyOff to OFF your duty!");
    else
    {
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
    new string[128];
    AdminOnDuty[playerid] = 1;
    format(string,sizeof(string), "Adminstrator %s is now on Admin duty.", pName);
    SendClientMessageToAll(0x33CCFFAA, string);
    }
    else
    {
    SendClientMessage(playerid, 0xAA3333AA, "You're not an adminstrator to use this cmd");
    }
    return 1;
}

CMD:admindutyoff(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    if(AdminOnDuty[playerid] == 0) return SendClientMessage(playerid,0xAA3333AA, "You're already off Adminstrator Duty, Type /AdminDutyOn to ON your duty!");
    else
    {
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
    new string[128];
    AdminOnDuty[playerid] = 0;
    format(string,sizeof(string), "Adminstrator %s is no longer on Adminstrator duty.", pName);
    SendClientMessageToAll(0x33CCFFAA, string);
    }
    else
    {
    SendClientMessage(playerid, 0xAA3333AA, "You're not an adminstrator to use this cmd");
    }
    return 1;
}

You must be /Rcon (Password) to use this command, or you can change it to your admin level fs.



Well i hope this works.


Thanks.