This was my indivudual freeze group method that "One that shall not be named" released to the public when he got his hands on 
edit: Cleaned up code to be neater and fixed some bugs
Code:
float mx, my, mz;
GET_CHAR_COORDINATES(pPlayer, &x, &y, &z);
GET_CHAR_COORDINATES(players[index].ped, &mx, &my, &mz);
REMOVE_ALL_CHAR_WEAPONS(players[index].ped);
WAIT(10);
GIVE_WEAPON_TO_CHAR(players[index].ped,WEAPON_ROCKET,AMMO_MAX,false);
GET_PLAYER_GROUP(GetPlayerIndex(), &Bgroup);
if(!DOES_GROUP_EXIST(Bgroup)){
CREATE_GROUP(0, Bgroup, true);
SET_GROUP_LEADER(Bgroup, pPlayer);
}
teleport_char(pPlayer, mx,my,mz);
SET_GROUP_MEMBER(Bgroup,players[index].ped);
SET_GROUP_FORMATION(Bgroup, 2);
WAIT(500);
REMOVE_CHAR_FROM_GROUP(players[index].ped);
WAIT(500);
teleport_char(pPlayer, x,y,z);
print("~g~Player Frozen");
Here's my protection thats untested but should work
Code:
Group Bgroup;
GET_PLAYER_GROUP(GetPlayerIndex(), &Bgroup);
if(DOES_GROUP_EXIST(Bgroup)){
if(!IS_GROUP_LEADER(pPlayer, Bgroup) REMOVE_GROUP(Bgroup);
}
//The next protection may work as a reverse freeze, freezing the person trying to freeze you >:-)
Group Bgroup;
float mx, my, mz;
GET_CHAR_COORDINATES(pPlayer, &x, &y, &z);
Ped ass; //Person trying to freeze you in which we shall reverse freeze
GET_PLAYER_GROUP(GetPlayerIndex(), &Bgroup);
if(DOES_GROUP_EXIST(Bgroup)){
if(!IS_GROUP_LEADER(pPlayer, Bgroup){
GET_GROUP_LEADER(Bgroup, &ass);
WAIT(10);
REMOVE_GROUP(Bgroup);
WAIT(10);
if(DOES_CHAR_EXIST(ass){
GET_CHAR_COORDINATES(ass, &mx, &my, &mz);
CREATE_GROUP(0, Bgroup, true);
SET_GROUP_LEADER(Bgroup, pPlayer);
SET_GROUP_MEMBER(Bgroup,ass);
SET_GROUP_FORMATION(Bgroup, 2);
teleport_char(pPlayer, mx,my,mz);
WAIT(700);
REMOVE_CHAR_FROM_GROUP(ass);
WAIT(300);
teleport_char(pPlayer, x,y,z);
}
}
}