Добавляю в stock
shieldКод:
stock zl_weapon_check(const weapon_name[]) {
static const WeaponName[][] = {
"p228",
"scout",
"hegrenade",
"xm1014",
"mac10",
"aug",
"smokegrenade",
"elite",
"fiveseven",
"ump45",
"sg550",
"galil",
"famas",
"usp",
"glock18",
"awp",
"mp5navy",
"m249",
"m3",
"m4a1",
"tmp",
"g3sg1",
"flashbang",
"deagle",
"sg552",
"ak47",
"knife",
"shield",
"p90"
}
new i
for(i = 0; i < sizeof WeaponName; ++i) {
if(equal(weapon_name, WeaponName[i]))
return 1
}
return 0
} Сама функция выдачи из обьекта
Код:
public supply_touch(s, p) {
if(!pev_valid(s) || !is_user_alive(p))
return
if(ArraySize(szWeaponID) == 0) {
} else {
switch(random(1)) {
case 0: {
new i, id[20], name[256]
i = random(ArraySize(szWeaponID))
ArrayGetString(szWeaponID, i, id, 14)
ArrayGetString(szWeaponName, i, name, 14)
if(get_pcvar_num(fadeon))
screen_fade(p)
format(id, charsmax(id), "weapon_%s", id)
new iWeaponId = get_weaponid(id);
if (user_has_weapon(p, iWeaponId))
cs_set_user_bpammo(p, iWeaponId, cs_get_user_bpammo(p, iWeaponId) + 1)
else
ham_give_item(p, id)
client_cmd(p,"spk %s",box_sound)
zl_colorchat(p, "!n%L", LANG_PLAYER, "SUPPLY_WEAPON", name)
}
}
}
zl_remove_entity(s)
SupplyCount--
} При выдачи игра зависает наглухо...
+ ко всему етому удалось кое что узнатьОказываеться,сама проблема в
Код:
ham_give_item
Пишут на оленях
Цитата
Код:
// restore shield after all the other weapons are there
if(oldShield[id]) fm_give_item(id,"weapon_shield");// ham_give_item crashes
Вообщем нужно через
fm_give_itemПерестроить етот сток,ну или можно попробовать просто через
give_itemПодскажите пожалуйстаКод:
stock ham_give_item(id, weapon[] ) {
if (!is_user_alive(id) || pev_valid(id) != 2)
return 0
new wEnt = create_entity( weapon )
if(!pev_valid(wEnt))
return 0
new ItemSlot = ExecuteHamB(Ham_Item_ItemSlot, wEnt)
new iItem, szWeaponName[32]
iItem = get_pdata_cbase(id, 367 + ItemSlot, 5);
if (iItem > 0 && pev_valid(iItem) == 2) {
pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName))
engclient_cmd(id, "drop", szWeaponName)
}
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 )
engclient_cmd(id, weapon)
new AmmoIndex
AmmoIndex = get_pdata_int(get_pdata_cbase(id, 373, 5), 49, 4)
if (AmmoIndex > 10) {
set_pdata_int(id, 376 + AmmoIndex, 1, 5)
} else {
set_pdata_int(id, 376 + AmmoIndex, 100, 5)
}
return 1;
}