new inflictor = create_entity("info_target");
entity_set_string(inflictor, EV_SZ_classname, "rocket");
/*entity_set_edict(inflictor, EV_ENT_owner, attacker);
entity_set_edict(inflictor, EV_ENT_enemy, victim);*/
ExecuteHam(Ham_TakeDamage, victim, inflictor, attacker, fDamage, bits);
entity_set_int(inflictor, EV_INT_flags, FL_KILLME);
Tylko wtedy jeśli ktoś od tego zginie, to nie będzie się to liczyć do ranku. Oczywiście wtedy nazwa broni w logach będzie taka "rocket", a jeśli chcesz, żeby w sprite był wyswietlany inny obrazek niż czaszka, to wystarczy zrobić coś takiego
register_message(get_user_msgid("DeathMsg"), "MessageDeathMsg");
public MessageDeathMsg(msgID, msgDest, msgEnt) {
new szTmp[32];
get_msg_arg_string(4, szTmp, 31);
new weapon;
if(TrieGetCell(gCustomWeapons, szTmp, weapon)) {
replace(szTmp, 31, "rocket", "knife");
// i tu można wszystkie nazwy podawać kolejno w ten sam sposób co wyżej
}
if(weapon)
set_msg_arg_string(4, szTmp);
}
Widać też, że jest tu użyte drzewo, czyli trzeba też tak jakby rejestrować każdą nową nazwę, czyli robimy mniej więcej coś takiego
new Trie:gCustomWeapons;
new giLastCustomWeaponId = CSW_P90;
gCustomWeapons = TrieCreate();
public ZarejestrujNowaBron(const szName[]) {
new CustomWeapon;
if(TrieGetCell(gCustomWeapons, szName, CustomWeapon))
return CustomWeapon;
TrieSetCell(gCustomWeapons, szName, ++giLastCustomWeaponId);
return giLastCustomWeaponId;
}
Jeszcze podam tylko w jaki sposób najlepiej wyciągać nazwę "broni"
register_event("DeathMsg", "SmiercPost", "a");
public SmiercPost() {
new weaponname[32];
read_data(4, weaponname, 31);
new weapon;
TrieGetCell(gCustomWeapons, weaponname, weapon);
if(!weapon) {
if(equal(weaponname, "grenade")) {
format(weaponname, 31, "weapon_he%s", weaponname);
}
else if(!equal(weaponname, "weapon_", 7))
format(weaponname, 31, "weapon_%s", weaponname);
weapon = get_weaponid(weaponname);
}
}