SA-MP Forums Archive
[Tutorial] How to make a kickgun, for admins only - 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)
+---- Forum: Tutorials (https://sampforum.blast.hk/forumdisplay.php?fid=70)
+---- Thread: [Tutorial] How to make a kickgun, for admins only (/showthread.php?tid=361758)



How to make a kickgun, for admins only - UnknownGamer - 22.07.2012

Hello,

I've been asked to post this on here, Other people that can't get the Kickgun working.


This is the main script, that kicks "damageid" when you shoot them with the kickgun.
Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    if(GetPlayerWeapon(playerid) == 33 && kickgun[playerid] == 1) {
	SendClientMessage(damagedid,COLOR_RED, "You have been kicked by The Quake Industries Shotgun for AFK.");
	Kick(damagedid);
	
	}
	return 1;
}
This is the actual kickgun script, I just put this below some other command, using strcmp.

Код:
	if(strcmp(cmd, "/kickgun", true) ==0)
	{
	    if(PlayerInfo[playerid][pAdmin] >= 1337)
	    {
			if(kickgun[playerid] == 0)
			{
				if(PlayerInfo[playerid][pKGBullets] != 0)
				{
					SafeGivePlayerWeapon(playerid, 33, 10000);
 					SetPlayerSkillLevel(playerid, WEAPONSKILL_SAWNOFF_SHOTGUN, 1000);
					kickgun[playerid] = 1;
					
					format(string, sizeof(string), "* %s Takes out his kickgun.", sendername);
					ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
				}
				else
				{
				    SendClientMessage(playerid, COLOR_GREY,"* No charges in the kickgun!");
				    return 1;
				}
			}
			else
			{
			    ResetPlayerWeapons(playerid);
				SafeGivePlayerWeapon(playerid, 24, 10);
				AttachWeaponCorrectly(playerid, 23);
				kickgun[playerid] = 0;
				ClearAnimations(playerid);
				SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL_SILENCED, PlayerInfo[playerid][pSilenSkill]);
				format(string, sizeof(string), "* %s Puts his kickgun away.", sendername);
				ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
			}
		}
	    return 1;
	}
Hope you like.


Re: How to make a kickgun, for admins only - Kindred - 22.07.2012

Not a tutorial, don't post this here. Should be in something like "Useful snippets".

And I do not know what kind of people would use this, only people who like to shoot people and kick them for fun.


Re: How to make a kickgun, for admins only - newbienoob - 22.07.2012

Quote:

public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)

Why under OnPlayerGiveDamage?

Quote:

if(GetPlayerWeapon(playerid) == 33 && kickgun[playerid] == 1) {

What's that? What it should do? Oh wait! I got an error here.

Quote:

SendClientMessage(damagedid,COLOR_RED, "You have been kicked by The Quake Industries Shotgun for AFK.");

DAMN! wtf was that? Can you explain more? Oh i got another error here!

Quote:

if(PlayerInfo[playerid][pAdmin] >= 1337)

Damn, another error and can you tell me how to fix this?

Quote:

if(PlayerInfo[playerid][pKGBullets] != 0)
{
SafeGivePlayerWeapon(playerid, 33, 10000);

What it should do? Btw, I got a LOT of errors here.

Quote:

ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,CO LOR_CHAT5);

ProxDetector? I can't find it on sa-mp wiki. Where did you get it?

Quote:

AttachWeaponCorrectly(playerid, 23);

Hmm can you explain this?


Re: How to make a kickgun, for admins only - Djole1337 - 22.07.2012

This is pasted from the RP server lmao.


Re: How to make a kickgun, for admins only - Rob_Maate - 22.07.2012

Untested but better than OP

pawn Код:
#include <a_samp>
#include <zcmd>

#define KICK_GUN 38

new bool:HasKickGun[MAX_PLAYERS];

stock TogglePlayerKickGun(playerid, toggle)
{
    switch(toggle)
    {
        case 0:
        {
            new gun, ammo;
            new GunArray[13][2];
            for(new i=0; i<13; i++)
            {
                GetPlayerWeaponData(playerid, i, gun, ammo);
                GunArray[i][0] = gun;
                GunArray[i][1] = ammo;
            }
            ResetPlayerWeapons(playerid);
           
            for(new i=0; i<13; i++)
            {
                if(GunArray[i][0] != KICK_GUN)
                {
                    GivePlayerWeapon(playerid, GunArray[i][0], GunArray[i][0]);
                }
            }
            SendClientMessage(damagedid, 0xFFFFFFFF, ">> KickGun DISABLED");
            HasKickGun[playerid] = false;
        }
       
        case 1:
        {
            GivePlayerWeapon(playerid, KICK_GUN, 35525);
            SendClientMessage(damagedid, 0xFFFFFFFF, ">> KickGun ENABLED");
            HasKickGun[playerid] = true;
        }
    }
}

public OnPlayerConnect(playerid)
{
    HasKickGun[playerid] = false;
    return 1;
}

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)
{
    if(HasKickGun[playerid] && weaponid == KICK_GUN)
    {
        SendClientMessage(damagedid, 0xFFFFFFFF, ">> You were kicked by the kickgun");
        Kick(damagedid);
    }
    return 1;
}

CMD:KickGun(playerid, params[])
{
    if(IsPlayerAdmin(playerid))
    {
        if(HasKickGun[playerid])
        {
            TogglePlayerKickGun(playerid, 0);
        }
        else
        {
            TogglePlayerKickGun(playerid, 1);
        }
    }
    else
    {
        SendClientMessage(damagedid, 0xFFFFFFFF, ">> No KickGun for you!");
    }
    return 1;
}



Re: How to make a kickgun, for admins only - Pinguinn - 22.07.2012

I am surprised you even call this a tutorial
Read this please


Re: How to make a kickgun, for admins only - XVlaDX - 06.05.2013

Quote:
Originally Posted by UnknownGamer
Посмотреть сообщение
Hello,

I've been asked to post this on here, Other people that can't get the Kickgun working.


This is the main script, that kicks "damageid" when you shoot them with the kickgun.
Код:
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
    if(GetPlayerWeapon(playerid) == 33 && kickgun[playerid] == 1) {
	SendClientMessage(damagedid,COLOR_RED, "You have been kicked by The Quake Industries Shotgun for AFK.");
	Kick(damagedid);
	
	}
	return 1;
}
This is the actual kickgun script, I just put this below some other command, using strcmp.

Код:
	if(strcmp(cmd, "/kickgun", true) ==0)
	{
	    if(PlayerInfo[playerid][pAdmin] >= 1337)
	    {
			if(kickgun[playerid] == 0)
			{
				if(PlayerInfo[playerid][pKGBullets] != 0)
				{
					SafeGivePlayerWeapon(playerid, 33, 10000);
 					SetPlayerSkillLevel(playerid, WEAPONSKILL_SAWNOFF_SHOTGUN, 1000);
					kickgun[playerid] = 1;
					
					format(string, sizeof(string), "* %s Takes out his kickgun.", sendername);
					ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
				}
				else
				{
				    SendClientMessage(playerid, COLOR_GREY,"* No charges in the kickgun!");
				    return 1;
				}
			}
			else
			{
			    ResetPlayerWeapons(playerid);
				SafeGivePlayerWeapon(playerid, 24, 10);
				AttachWeaponCorrectly(playerid, 23);
				kickgun[playerid] = 0;
				ClearAnimations(playerid);
				SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL_SILENCED, PlayerInfo[playerid][pSilenSkill]);
				format(string, sizeof(string), "* %s Puts his kickgun away.", sendername);
				ProxDetector(30.0, playerid, string, COLOR_CHAT1,COLOR_CHAT2,COLOR_CHAT3,COLOR_CHAT4,COLOR_CHAT5);
			}
		}
	    return 1;
	}
Hope you like.
This wouldn't work and would give a few errors especially since it was copied and pasted and needs to be set up correctly. Could have at least credited me in it.

So to fix a few errors:
Firstly, you haven't referenced kickgun nor KGBullets.
SetPlayerSkillLevel wouldn't even be required as it was specific to our game mode
I would go on, however I rather just post the new version I created since the only thing you changed was the weapon that you received when using the command and the Quake industry stuff.

So yeah, I'll repost the my version as either an include or a filsterscript either today or tomorrow.