04.08.2016, 14:40
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
#RESOLVIDO USEI OUTRO FS : https://sampforum.blast.hk/showthread.php?tid=604807
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; }