Ich möchte mal kurz sagen, dass das so schlecht gelöst ist, omg 
Hier, mal deins zusammengefasst und verbessert mit mehr Funktionen:
#include <a_samp>
static bool:tazed[MAX_PLAYERS];
public OnFilterScriptInit() return print("Script Loaded (c) by Kaliber");
GetName(playerid) {
new name[24];
GetPlayerName(playerid,name,24);
return name;
}
public OnPlayerGiveDamage(playerid, damagedid, Float: amount, weaponid)
{
if(GetPlayerWeapon(playerid) != 23 || tazed[damagedid]) return 1;
new string[128];
TogglePlayerControllable(damagedid,0);
ApplyAnimation(damagedid,"CRACK","crckdeth2",4.1,1,1,1,1,1);
SetTimerEx("Tazered", 15000, 0, "d",damagedid);
tazed[damagedid] = true;
format(string, sizeof string, "* %s hat %s mit einem Stromschocker getroffen.",GetName(playerid),GetName(damagedid));
RangeSend(playerid, 30.0, string);
GameTextForPlayer(damagedid, "~r~Geschockt", 5000, 3);
return 1;
}
RangeSend(playerid, Float:range, txt[]) {
new i,Float:Q[3];
GetPlayerPos(playerid,Q[0],Q[1],Q[2]);
for(; i<MAX_PLAYERS; i++) {
if(!IsPlayerInRangeOfPoint(i,range,Q[0],Q[1],Q[2])) continue;
SendClientMessage(i,0xC2A2DAAA,txt);
}
return 1;
}
forward Tazered(playerid);
public Tazered(playerid) {
TogglePlayerControllable(playerid,1);
tazed[playerid] = false;
ClearAnimations(playerid);
return 1;
}
Das ist 1000x besser als das was du da gemacht hast zudem ist bei dir die Variable "tazetimer[MAX_PLAYERS]" total Sinnlos 
Schau dir an, wie ich das gemacht habe und lerne bitte etwas daraus 
mfg. 
//Edit: Rechtschreibung im Code...