Ok więc zaczynamy szukając :
#include <csx>Dodajemy pod:
#include <hamsandwich>
Pod tabelą expa diablo dajemy(przykład):
new class_weapons[9] = {
(1<<CSW_KNIFE), // NONE
(1<<CSW_P90)|(1<<CSW_USP)|(1<<CSW_KNIFE), // Mag
(1<<CSW_XM1014)|(1<<CSW_DEAGLE)|(1<<CSW_KNIFE), // Mnich
(1<<CSW_MP5NAVY)|(1<<CSW_KNIFE), // Paladyn
(1<<CSW_USP)|(1<<CSW_KNIFE), // Zabojca
(1<<CSW_AWP)|(1<<CSW_KNIFE), // Nekromanta
(1<<CSW_AUG)|(1<<CSW_KNIFE), // Barbarzynca
(1<<CSW_DEAGLE)|(1<<CSW_KNIFE), // Ninja
(1<<CSW_M3)|(1<<CSW_KNIFE) // Lowca
}[9] - tu zmieniamy tylko dziewiątkę jeżeli mamy więcej lub mniej klas...zliczamy je a następnie wpisuje razem z klasą NONE.
Jeżeli chcemy bronie dla nowej klasy to zaczynamy w ten sposób że za ostatnim (1<<CSW_KNIFE) dajemy przecinek. Wygląda to tak:
new class_weapons[10] = {
(1<<CSW_KNIFE), // NONE
(1<<CSW_P90)|(1<<CSW_USP)|(1<<CSW_KNIFE), // Mag
(1<<CSW_XM1014)|(1<<CSW_DEAGLE)|(1<<CSW_KNIFE), // Mnich
(1<<CSW_MP5NAVY)|(1<<CSW_KNIFE), // Paladyn
(1<<CSW_USP)|(1<<CSW_KNIFE), // Zabojca
(1<<CSW_AWP)|(1<<CSW_KNIFE), // Nekromanta
(1<<CSW_AUG)|(1<<CSW_KNIFE), // Barbarzynca
(1<<CSW_DEAGLE)|(1<<CSW_KNIFE), // Ninja
(1<<CSW_M3)|(1<<CSW_KNIFE), // Lowca
(1<<CSW_GLOCK18)|(1<<CSW_KNIFE) // TwojKlasa
}W tym przypadku ostatnia klasa dostanie glocka...Mam mniej klas co zrobić ? Bardzo podobnie sobie z tym radzimy , mianowicie za przedostatnim (1<<CSW_KNIFE) usuwamy przecnik przedostatnią linijkę całą kasujemy.Przykład:
new class_weapons[9] = {
(1<<CSW_KNIFE), // NONE
(1<<CSW_P90)|(1<<CSW_USP)|(1<<CSW_KNIFE), // Mag
(1<<CSW_XM1014)|(1<<CSW_DEAGLE)|(1<<CSW_KNIFE), // Mnich
(1<<CSW_MP5NAVY)|(1<<CSW_KNIFE), // Paladyn
(1<<CSW_USP)|(1<<CSW_KNIFE), // Zabojca
(1<<CSW_AWP)|(1<<CSW_KNIFE), // Nekromanta
(1<<CSW_AUG)|(1<<CSW_KNIFE), // Barbarzynca
(1<<CSW_DEAGLE)|(1<<CSW_KNIFE), // Ninja
(1<<CSW_M3)|(1<<CSW_KNIFE) // Lowca
}Jeżeli to już mamy dogodnie ustawione szukamy:public freeze_begin()
{
freeze_ended = false
}I dodajemy pod tym:stock ham_give_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wEnt = engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,weapon));
if(!pev_valid(wEnt)) return 0;
set_pev(wEnt,pev_spawnflags,SF_NORESPAWN);
dllfunc(DLLFunc_Spawn,wEnt);
if(!ExecuteHamB(Ham_AddPlayerItem,id,wEnt))
{
if(pev_valid(wEnt)) set_pev(wEnt,pev_flags,pev(wEnt,pev_flags) | FL_KILLME);
return 0;
}
ExecuteHamB(Ham_Item_AttachToPlayer,wEnt,id)
return 1;
}
stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wId = get_weaponid(weapon);
if(!wId) return 0;
new wEnt;
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0;
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
return 1;
}
new weapon_name[31][]={"none","weapon_p228","weapon_shield","weapon_scout",
"weapon_hegrenade","weapon_xm1014","weapon_c4","weapon_mac10","weapon_aug",
"weapon_smokegrenade","weapon_elite","weapon_fiveseven","weapon_ump45",
"weapon_sg550","weapon_galil","weapon_famas","weapon_usp","weapon_glock18",
"weapon_awp","weapon_mp5navy","weapon_m249","weapon_m3","weapon_m4a1",
"weapon_tmp","weapon_g3sg1","weapon_flashbang","weapon_deagle","weapon_sg552",
"weapon_ak47","weapon_knife","weapon_p90"}
public dawanie_i_branie_broni(i)
{
new weapons[32], num
get_user_weapons(i, weapons, num)
new weapon;
for( new n = 0; n < num; n++ )
{
weapon = weapons[n]
if( !(class_weapons[player_class[i]] & weapon) && weapon!=CSW_C4)
{
ham_strip_weapon(i,weapon_name[weapon])
}
}
for( new n=1;n<31;n++)
{
if(class_weapons[player_class[i]] & (1<<n))
{
ham_give_weapon(i,weapon_name[n])
}
}
}W public RoundStart() szukamy:
invisible_cast[i]=0
Dodajemy pod tym:
dawanie_i_branie_broni(i)
W select_class_menu znajdujemy:
give_knife(id)
I pod tym dodajemy:
if(is_user_alive(id)) dawanie_i_branie_broni(id)
To by było na tyle


Dodatki SourceMod













