server sided weapon system + anti cheat -
PaulDinam - 14.10.2012
the problem is after im getting weapons im still getting kicked and the varible doesn't changed to 1 like if im getting a camera
okay so this is my method:
new variables:
Code:
new
Brass[MAX_PLAYERS],
Golf[MAX_PLAYERS],
NiteStick[MAX_PLAYERS],
Knife[MAX_PLAYERS],
BaseBall[MAX_PLAYERS],
Shovel[MAX_PLAYERS],
Pool[MAX_PLAYERS],
Katana[MAX_PLAYERS],
ChainSaw[MAX_PLAYERS],
PurpleDil[MAX_PLAYERS],
SmallWhiteDil[MAX_PLAYERS],
LargeWhiteDil[MAX_PLAYERS],
SilverDil[MAX_PLAYERS],
Flowers[MAX_PLAYERS],
Cane[MAX_PLAYERS],
Grenade[MAX_PLAYERS],
TearGas[MAX_PLAYERS],
Molitov[MAX_PLAYERS],
Ninemm[MAX_PLAYERS],
Silenced9mm[MAX_PLAYERS],
DesertEagle[MAX_PLAYERS],
Shotgun[MAX_PLAYERS],
SawnOffShotgun[MAX_PLAYERS],
CombatShotgun[MAX_PLAYERS],
MicroSMG[MAX_PLAYERS],
SMG[MAX_PLAYERS],
AK47[MAX_PLAYERS],
M4[MAX_PLAYERS],
Tec9[MAX_PLAYERS],
CountryRifle[MAX_PLAYERS],
SniperRifle[MAX_PLAYERS],
Rocket[MAX_PLAYERS],
HeatSeakingRocket[MAX_PLAYERS],
FlameThrower[MAX_PLAYERS],
MiniGun[MAX_PLAYERS],
Satchel[MAX_PLAYERS],
Detonator[MAX_PLAYERS],
SprayCan[MAX_PLAYERS],
Fire[MAX_PLAYERS],
Camera[MAX_PLAYERS],
NightVision[MAX_PLAYERS],
ThermalVision[MAX_PLAYERS],
Parachute[MAX_PLAYERS];
on player connect they are 0.
i've set a timer to check the player weapons made a new method of giving weapons
forward GiveWeapon(playerid,wep,ammo);
Code:
public GiveWeapon(playerid,wep,ammo)
{
if(wep == 1) { Brass[playerid] = 1; }
if(wep == 2) { Golf[playerid] = 1; }
if(wep == 3) { NiteStick[playerid] = 1; }
if(wep == 4) { Knife[playerid] = 1; }
if(wep == 5) { BaseBall[playerid] = 1; }
if(wep == 6) { Shovel[playerid] = 1; }
if(wep == 7) { Pool[playerid] = 1; }
if(wep == 8) { Katana[playerid] = 1; }
if(wep == 9) { ChainSaw[playerid] = 1; }
if(wep == 10) { PurpleDil[playerid] = 1; }
if(wep == 11) { SmallWhiteDil[playerid] = 1; }
if(wep == 12) { LargeWhiteDil[playerid] = 1; }
if(wep == 13) { SilverDil[playerid] = 1; }
if(wep == 14) { Flowers[playerid] = 1; }
if(wep == 15) { Cane[playerid] = 1; }
if(wep == 16) { Grenade[playerid] = 1; }
if(wep == 17) { TearGas[playerid] = 1; }
if(wep == 18) { Molitov[playerid] = 1; }
if(wep == 22) { Ninemm[playerid] = 1; }
if(wep == 23) { Silenced9mm[playerid] = 1; }
if(wep == 25) { Shotgun[playerid] = 1; }
if(wep == 26) { SawnOffShotgun[playerid] = 1; }
if(wep == 27) { CombatShotgun[playerid] = 1; }
if(wep == 28) { MicroSMG[playerid] = 1; }
if(wep == 29) { SMG[playerid] = 1; }
if(wep == 30) { AK47[playerid] = 1; }
if(wep == 31) { M4[playerid] = 1; }
if(wep == 32) { Tec9[playerid] = 1; }
if(wep == 33) { CountryRifle[playerid] = 1; }
if(wep == 34) { SniperRifle[playerid] = 1; }
if(wep == 35) { Rocket[playerid] = 1; }
if(wep == 36) { HeatSeakingRocket[playerid] = 1; }
if(wep == 37) { FlameThrower[playerid] = 1; }
if(wep == 38) { MiniGun[playerid] = 1; }
if(wep == 39) { Satchel[playerid] = 1; }
if(wep == 40) { Detonator[playerid] = 1; }
if(wep == 41) { SprayCan[playerid] = 1; }
if(wep == 42) { Fire[playerid] = 1; }
if(wep == 43) { Camera[playerid] = 1; }
if(wep == 44) { NightVision[playerid] = 1; }
if(wep == 45) { ThermalVision[playerid] = 1; }
if(wep == 46) { Parachute[playerid] = 1; }
GivePlayerWeapon(playerid,wep,ammo);
}
Code:
forward CheckPlayerWeapons();
public CheckPlayerWeapons()
{
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Brass[i] == 0 && GetPlayerWeapon(i) == 1)
{
WeaponHackKick(i);
}
else if(Golf[i] == 0 && GetPlayerWeapon(i) == 2)
{
WeaponHackKick(i);
}
else if(NiteStick[i] == 0 && GetPlayerWeapon(i) == 3)
{
WeaponHackKick(i);
}
else if(Knife[i] == 0 && GetPlayerWeapon(i) == 4)
{
WeaponHackKick(i);
}
else if(BaseBall[i] == 0 && GetPlayerWeapon(i) == 5)
{
WeaponHackKick(i);
}
else if(Shovel[i] == 0 && GetPlayerWeapon(i) == 6)
{
WeaponHackKick(i);
}
else if(Pool[i] == 0 && GetPlayerWeapon(i) == 7)
{
WeaponHackKick(i);
}
else if(Katana[i] == 0 && GetPlayerWeapon(i) == 8)
{
WeaponHackKick(i);
}
else if(ChainSaw[i] == 0 && GetPlayerWeapon(i) == 9)
{
WeaponHackKick(i);
}
else if(PurpleDil[i] == 0 && GetPlayerWeapon(i) == 10)
{
WeaponHackKick(i);
}
else if(SmallWhiteDil[i] == 0 && GetPlayerWeapon(i) == 11)
{
WeaponHackKick(i);
}
else if(LargeWhiteDil[i] == 0 && GetPlayerWeapon(i) == 12)
{
WeaponHackKick(i);
}
else if(SilverDil[i] == 0 && GetPlayerWeapon(i) == 13)
{
WeaponHackKick(i);
}
else if(Flowers[i] == 0 && GetPlayerWeapon(i) == 14)
{
WeaponHackKick(i);
}
else if(Cane[i] == 0 && GetPlayerWeapon(i) == 15)
{
WeaponHackKick(i);
}
else if(Grenade[i] == 0 && GetPlayerWeapon(i) == 16)
{
WeaponHackKick(i);
}
else if(TearGas[i] == 0 && GetPlayerWeapon(i) == 17)
{
WeaponHackKick(i);
}
else if(Molitov[i] == 0 && GetPlayerWeapon(i) == 18)
{
WeaponHackKick(i);
}
else if(Ninemm[i] == 0 && GetPlayerWeapon(i) == 22)
{
WeaponHackKick(i);
}
else if(Silenced9mm[i] == 0 && GetPlayerWeapon(i) == 23)
{
WeaponHackKick(i);
}
else if(DesertEagle[i] == 0 && GetPlayerWeapon(i) == 24)
{
WeaponHackKick(i);
}
else if(Shotgun[i] == 0 && GetPlayerWeapon(i) == 25)
{
WeaponHackKick(i);
}
else if(SawnOffShotgun[i] == 0 && GetPlayerWeapon(i) == 26)
{
WeaponHackKick(i);
}
else if(CombatShotgun[i] == 0 && GetPlayerWeapon(i) == 27)
{
WeaponHackKick(i);
}
else if(MicroSMG[i] == 0 && GetPlayerWeapon(i) == 28)
{
WeaponHackKick(i);
}
else if(SMG[i] == 0 && GetPlayerWeapon(i) == 29)
{
WeaponHackKick(i);
}
else if(AK47[i] == 0 && GetPlayerWeapon(i) == 30)
{
WeaponHackKick(i);
}
else if(M4[i] == 0 && GetPlayerWeapon(i) == 31)
{
WeaponHackKick(i);
}
else if(Tec9[i] == 0 && GetPlayerWeapon(i) == 32)
{
WeaponHackKick(i);
}
else if(CountryRifle[i] == 0 && GetPlayerWeapon(i) == 33)
{
WeaponHackKick(i);
}
else if(SniperRifle[i] == 0 && GetPlayerWeapon(i) == 34)
{
WeaponHackKick(i);
}
else if(Rocket[i] == 0 && GetPlayerWeapon(i) == 35)
{
WeaponHackKick(i);
}
else if(HeatSeakingRocket[i] == 0 && GetPlayerWeapon(i) == 36)
{
WeaponHackKick(i);
}
else if(FlameThrower[i] == 0 && GetPlayerWeapon(i) == 37)
{
WeaponHackKick(i);
}
else if(MiniGun[i] == 0 && GetPlayerWeapon(i) == 38)
{
WeaponHackKick(i);
}
else if(Satchel[i] == 0 && GetPlayerWeapon(i) == 39)
{
WeaponHackKick(i);
}
else if(Detonator[i] == 0 && GetPlayerWeapon(i) == 40)
{
WeaponHackKick(i);
}
else if(SprayCan[i] == 0 && GetPlayerWeapon(i) == 41)
{
WeaponHackKick(i);
}
else if(Fire[i] == 0 && GetPlayerWeapon(i) == 42)
{
WeaponHackKick(i);
}
else if(Camera[i] == 0 && GetPlayerWeapon(i) == 43)
{
WeaponHackKick(i);
}
else if(NightVision[i] == 0 && GetPlayerWeapon(i) == 44)
{
WeaponHackKick(i);
}
else if(ThermalVision[i] == 0 && GetPlayerWeapon(i) == 45)
{
WeaponHackKick(i);
}
else if(Parachute[i] == 0 && GetPlayerWeapon(i) == 46)
{
WeaponHackKick(i);
}
}
}
return 1;
}
on playerconnect
Re: server sided weapon system + anti cheat - Emmet_ - 14.10.2012
You could try simplifying the code!
pawn Code:
new Weapons[MAX_PLAYERS][47];
stock GiveWeapon(playerid, wep, ammo)
{
Weapons[playerid][wep] = 1;
GivePlayerWeapon(playerid, wep, ammo);
return 1;
}
public OnPlayerConnect(playerid)
{
for (new i = 0; i < 47; i ++)
Weapons[playerid][i] = 0;
return 1;
}
forward CheckPlayerWeapons();
public CheckPlayerWeapons()
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if (GetPlayerWeapon(i) != 0 && !Weapons[i][GetPlayerWeapon(playerid))
{
WeaponHackKick(i);
}
}
return 1;
}
Are you sure you replaced all instances of GivePlayerWeapon in your script, with GiveWeapon?
Try the code above, let me know if it works.
Re: server sided weapon system + anti cheat -
PaulDinam - 14.10.2012
works! i love you man you just had a little error on checkplayerweapons but thank you!!
Re: server sided weapon system + anti cheat -
PaulDinam - 14.10.2012
but why im getting stuck after getting any weapon FREEZE
and i have a weird unknown weapon when im switching to it im getting kick
Re: server sided weapon system + anti cheat - Emmet_ - 14.10.2012
Unknown weapon? Corrupt files perhaps?
Re: server sided weapon system + anti cheat -
PaulDinam - 14.10.2012
k i fixed and i just added toggleplayercontrolable thank you man