[Ajuda] FS Mudar de Arma dentro do Carro
#1

Galera estou tendo uns problemas com o seguinte FS publicado aqui no Forum SAMP: https://sampforum.blast.hk/showthread.php?tid=282753
Eu coloquei esse FS atй na GM bare entrei dentro do carro como passageiro tentei mudar de arma atirei e tal e nгo mudou a arma alguem sabe o porque desse bug? o fs compilou sem erros..
Cуdigo: http://pastebin.com/yYhjqFq3
Код:
// Drive-by Weapon Switch Filterscript v1.0 by Amit_B
#include "a_samp.inc"
#define isAcceptedDBWeapon(%1) ((%1 >= 22 && %1 <= 34) || %1 == 38)
new pweapon[MAX_PLAYERS] = {0,...};
public OnFilterScriptInit() return print("Drive-by Weapon Switch filterscript loaded"), 1;
public OnPlayerConnect(playerid) return pweapon[playerid] = 0, 1;
public OnPlayerStateChange(playerid,newstate,oldstate) return newstate == PLAYER_STATE_DRIVER || newstate == PLAYER_STATE_PASSENGER ? (pweapon[playerid] = GetPlayerWeapon(playerid),1) : 1;
public OnPlayerKeyStateChange(playerid,newkeys,oldkeys)
{
	if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER && (newkeys & 64 || newkeys & 256) && IsPlayerUsingDB(playerid))
	{
		new wd[13][2], w = pweapon[playerid], s = GetWeaponSlot(w), acceptedSlots[] = {2,3,4,5,6}, first = acceptedSlots[0], last = acceptedSlots[sizeof(acceptedSlots)-1];
		if(isAcceptedDBWeapon(w))
		{
			for(new i = 0; i < 13; i++) GetPlayerWeaponData(playerid,i,wd[i][0],wd[i][1]);
			new found = w;
			if(newkeys & 64) // next
			{
				for(new i = s + 1; i <= last && found == w; i++) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
				if(found == w) for(new i = first; i < s && found == w; i++) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
				if(found != w)
				{
					SetPlayerArmedWeapon(playerid,found);
					pweapon[playerid] = found;
				}
			}
			else if(newkeys & 256) // previous
			{
				for(new i = s - 1; i >= first && found == w; i--) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
				if(found == w) for(new i = last; i > s && found == w; i--) if(isAcceptedDBWeapon(wd[i][0])) found = wd[i][0];
				if(found != w)
				{
					SetPlayerArmedWeapon(playerid,found);
					pweapon[playerid] = found;
				}
			}
		}
	}
	return 1;
}
stock IsPlayerUsingDB(playerid,bool:withsomeone = false)
{
	if(GetPlayerState(playerid) != PLAYER_STATE_PASSENGER) return 0;
	new bool:hassomeone = false;
	if(withsomeone)
	{
		new v = GetPlayerVehicleID(playerid);
		for(new i = 0; i < MAX_PLAYERS && !hassomeone; i++) if(IsPlayerConnected(i) && IsPlayerInVehicle(i,v) && GetPlayerState(i) == PLAYER_STATE_DRIVER) hassomeone = true;
	}
    return GetPlayerCameraMode(playerid) == 55 && (!withsomeone || (withsomeone && hassomeone));
}
stock GetWeaponSlot(wid)
{
	switch(wid)
	{
		case 0, 1: return 0;
		case 2..9: return 1;
		case 22..24: return 2;
		case 25..27: return 3;
		case 28, 29, 32: return 4;
		case 30, 31: return 5;
		case 33, 34: return 6;
		case 35..38: return 7;
		case 16..19, 39: return 8;
		case 41..43: return 9;
		case 10..15: return 10;
		case 44..46: return 11;
		case 40: return 12;
		default: return -1;
	}
	return -1;
}
#RESOLVIDO USEI OUTRO FS : https://sampforum.blast.hk/showthread.php?tid=604807
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)