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 Myślę że komuś się przyda