1+) UTIL_Remove calls can be replaced in all games by 
    AcceptEntityInput( index, "Kill" ).

2+-) GetSlot and RemoveAmmo should still work fine with new offsets.

REMOVEAMMO
================================
I'll look into it, but as an alternative, in any game, you can remove ammo by utilizing the m_iAmmo (array of ammo per ammo type on player), and m_iClip1 / m_iClip2 (ammo inside weapon) netprops.

Example of removing all ammo:
Code:
new ammoTypeCount = GetEntPropArraySize(client, Prop_Send, "m_iAmmo")
for (new i = 0; i < ammoTypeCount; ++i)
{
    SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, i);
}

new weaponCount = GetEntPropArraySize(client, Prop_Send, "m_hMyWeapons")
for (new i = 0; i < weaponCount; ++i)
{
    new weapon = GetEntPropEnt(client, Prop_Send, "m_hMyWeapons", _, i);
    if (weapon == INVALID_ENT_REFERENCE)
        continue;
    SetEntProp(weapon, Prop_Send, "m_iClip1", 0);
    SetEntProp(weapon, Prop_Send, "m_iClip2", 0);
}

Or example to just remove all ammo for one weapon (using active weapon as example):
Code:
new weapon = GetEntPropEnt(client, Prop_Send, "m_hActiveWeapon");
if (weapon != INVALID_ENT_REFERENCE)
{
    new primaryAmmoType = GetEntProp(weapon, Prop_Send, "m_iPrimaryAmmoType");
    if (primaryAmmoType != -1)
        SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, primaryAmmoType);

    new secondaryAmmoType = GetEntProp(weapon, Prop_Send, "m_iSeconaryAmmoType");
    if (secondaryAmmoType != -1)
        SetEntProp(client, Prop_Send, "m_iAmmo", 0, _, secondaryAmmoType);

    SetEntProp(weapon, Prop_Send, "m_iClip1", 0);
    SetEntProp(weapon, Prop_Send, "m_iClip2", 0);
}

I hope this helps.
================================

3+) There is a new native in SM for CSWeaponDrop, CS_DropWeapon, 
    [url]http://docs.sourcemod.net/api/index.php?fastload=show&id=1013&[/url] 
    It should work in both CS:S and CS:GO.

4+) I'm not sure about EndMultiplayerGame. It might or might 
    not work with new offset.

5+)
Looking at the sdk, at least in CS:S, you should be able to force EndMultiplayerGame 
by creating a game_end entity (with CreateEntityByName) and then 
using AcceptEntityInput to fire the "EndGame" input. 
I have not tested this, but it looks like it is exactly what you want.

6)
For GetSlot, the only thing that comes to mind is maybe checking 
the ammo type (m_iPrimaryAmmoType, Prop_Send) on the weapon 
since each grenade type has their own.

From ZR:
#define AMMO_INDEX_HE 11
#define AMMO_INDEX_FLASH 12
#define AMMO_INDEX_SMOKE 13

    нужно понять, для чего сейчас конкретно используется getslot

    1) UTIL_FindGrenadeByName(client, const String:Grenade[], bool:drop = false, bool:remove = false);
        GET entity id
        DROP entity
        REMOVE entity
        <-- 1) UTIL_GiveExtraNade(client, bool:knife) {
            CHECK if player has hegrenade (before five another one)
        <-- 2) public _HeExplode(Handle:event, const String:name[], bool:dontBroadcast) {
            CHECK if player has hegrenade (before five another one)
        <-- 3) public _ItemPickup(Handle:event, const String:name[], bool:dontBroadcast)
            STORE entity id in g_ClientSlotEntHeGrenade
            STORE entity id in g_ClientSlotEntSmokeGrenade

        ---> 4) UTIL_RemoveClientDroppedWeapons(client, bool:disconnect = false)
            GET entity id in g_ClientSlotEntHeGrenade
            GET entity id in g_ClientSlotEntSmokeGrenade

    2) UTIL_UpdateFlashCounter(client);
        GET flash enitiy ids, STORE flash entity ids to g_ClientSlotEntFlashbang[]
        <-- 1) UTIL_FindGrenadeByName(client, const String:Grenade[], bool:drop = false, bool:remove = false) {
            NEVER (realy)
        <-- 2) public _FlashExplode(Handle:event, const String:name[], bool:dontBroadcast)
            RECALC (move to weaponfire?)
        <-- 3) public _ItemPickup(Handle:event, const String:name[], bool:dontBroadcast)
            RECALC

        ---> 4) UTIL_RemoveClientDroppedWeapons(client, bool:disconnect = false)
            GET entity id in g_ClientSlotEntFlashbang
    
    Итак нужно это гломально только для того, чтобы после смерти игрока убирать за ним предметы с пола.
