RSSy MYGO.pl Opublikowano Czerwiec 7, 2022 o 03:59 RSSy Udostępnij Opublikowano Czerwiec 7, 2022 o 03:59 Grenades sometimes don't do damage, is a known issue in such great plugin from V3x. Other plugins fail in make hegrenades multipliers successfully. looked to no avail, every plugin i have tried either doesn't work, doesn't do correct damage, messes with the scoreboard. If you know a hegrenade plugin that works with latest amx, let me know PLEASE. This version is modified to fix scoreboard points not counting due to fakedamage function, i believe. HTML Code: #include <amxmodx> #include <amxmisc> #include <fun> #include <cstrike> #include <engine> #define PLUGIN "Extra Damage Mod" #define VERSION "0.2" #define AUTHOR "v3x" #define ACCESS_LEVEL ADMIN_CFG #define MAXWEAPS 31 new cstrike; public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_concmd("sv_weapondamage", "ConCmd_WeapDmg", ACCESS_LEVEL, ": <weaponid> <damage>"); register_concmd("amx_weaponlist", "ConCmd_WeapList", 0, ": Lists weapon ids"); register_event("Damage", "Event_Damage", "b", "2>0"); cstrike = cstrike_running(); } new g_nWeapDmg[MAXWEAPS] = { 0, ... }; public Event_Damage( id ) { new iWeapID, iHitzone, iAttacker = get_user_attacker(id, iWeapID, iHitzone); if(!is_user_connected(id) || !is_user_connected(iAttacker)) return PLUGIN_CONTINUE; new dmgType = read_data(3); if(dmgType & DMG_BLAST) iWeapID = 4; extra_damage(iAttacker, id, g_nWeapDmg[iWeapID], iWeapID); return PLUGIN_CONTINUE; } public ConCmd_WeapDmg( id, lvl, cid ) { if(!cmd_access(id, lvl, cid, 3)) return PLUGIN_HANDLED; new arg1[16], arg2[8]; read_argv(1, arg1, 15); // Weapon ID read_argv(2, arg2, 7); // Damage amt new weapid = str_to_num(arg1); new damage = str_to_num(arg2); if(weapid > 0 && weapid < MAXWEAPS) { if(weapid == 2 || weapid == 6 || weapid == 9 || weapid == 25) { console_print(id, "[XtraDamageMod] Invalid weapon id: %i", weapid); server_print("[XtraDamageMod] Invalid weapon id: %i", weapid); return PLUGIN_HANDLED; } g_nWeapDmg[weapid] = damage; new weapname[33]; get_weaponname(weapid, weapname, 32); replace(weapname, 32, "weap_", ""); if(damage > 0) { console_print(id, "[XtraDamageMod] Added %i extra damage for %s", damage, weapname); } else if(damage <= 0) { console_print(id, "[XtraDamageMod] Removed extra damage for %s", damage, weapname); } } if(weapid == 0) { for(new i = 1; i < MAXWEAPS; i++) g_nWeapDmg[i] = damage; if(damage > 0) { console_print(id, "[XtraDamageMod] Added %i extra damage for all weapons", damage); } if(damage <= 0) { console_print(id, "[XtraDamageMod] Removed extra damage for all weapons"); } } return PLUGIN_HANDLED; } // Doesn't work well for clients.. public ConCmd_WeapList( id ) { new arg[8]; read_argv(1, arg, 7); new szWeapMsg[256], nLen, iPage = str_to_num(arg); nLen = format(szWeapMsg, 255, "[ExtraDamageMod] Weapon ID list %s", (iPage==2) ? "(con.):" : ":"); if(iPage == 0 || iPage == 1) { nLen += format(szWeapMsg[nLen], (255-nLen), "^n- P228: %i", CSW_P228); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Scout: %i", CSW_SCOUT); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- HE Grenade: %i", CSW_HEGRENADE); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- XM1014 (autoshotgun): %i", CSW_XM1014); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Mac10: %i", CSW_MAC10); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Aug: %i", CSW_AUG); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Elites: %i", CSW_ELITE); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Fiveseven: %i", CSW_FIVESEVEN); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- UMP45: %i", CSW_UMP45); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- SG550: %i", CSW_SG550); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Galil: %i", CSW_GALIL); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Famas: %i", CSW_FAMAS); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- USP: %i", CSW_USP); nLen += format(szWeapMsg[nLen], (255-nLen), "^n^nType 'amx_weaponlist 2' for more"); } else if(iPage == 2) { nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Glock18: %i", CSW_GLOCK18); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- AWP: %i", CSW_AWP); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- MP5NAVY: %i", CSW_MP5NAVY); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- M249 (Para): %i", CSW_M249); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- M3 (Pump): %i", CSW_M3); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- M4A1: %i", CSW_M4A1); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- TMP: %i", CSW_TMP); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- G3SG1: %i", CSW_G3SG1); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Deagle: %i", CSW_DEAGLE); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- SG552: %i", CSW_SG552); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- AK47: %i", CSW_AK47); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- Knife: %i", CSW_KNIFE); nLen += format(szWeapMsg[nLen], (255-nLen), "^n- P90: %i", CSW_P90); nLen += format(szWeapMsg[nLen], (255-nLen), "^n^nType 'amx_weaponlist 1' to go back"); } if(is_user_connected(id)) console_print(id, szWeapMsg); else server_print(szWeapMsg); return PLUGIN_HANDLED; } public extra_damage(attacker, victim, damage, weap) { if(!cstrike || !is_user_connected(attacker) || !is_user_connected(victim)) return; if(damage <= 0 || get_user_health(victim) <= 0 || get_user_godmode(victim)) return; new FFon = get_cvar_num("mp_friendlyfire"); new index, body, distance = 99999; get_user_aiming(attacker, index, body, distance); new weaponname[33]; get_weaponname(weap, weaponname, 32); replace(weaponname, 32, "weapon_", ""); new team[2]; team[0] = get_user_team(attacker); team[1] = get_user_team(victim); if(FFon && team[0] == team[1]) { new name[32]; get_user_name(attacker, name, 31); client_print(0, print_chat, "%s attacked a teammate", name); } if(get_user_health(victim) > damage) { fakedamage(victim, weaponname, float(damage), (weap == 4) ? DMG_BLAST : DMG_BULLET); new origin[3]; get_user_origin(victim, origin); message_begin(MSG_ONE, get_user_msgid("Damage"), {0,0,0}, victim); write_byte(0); // dmg_save write_byte(damage); // dmg_take write_long(0); // visibleDamageBits write_coord(origin[0]); // damageOrigin.x write_coord(origin[1]); // damageOrigin.y write_coord(origin[2]); // damageOrigin.z message_end(); } else { log_kill(attacker, victim, weaponname, (body == HIT_HEAD) ? 1 : 0); } } stock log_kill(killer, victim, weapon[],headshot) { new weapname[64]; if(containi(weapon, "nade") != -1) format(weapname, 63, "grenade"); else { format(weapname, 63, "%s", weapon); replace(weapname, 63, "weapon_", ""); } user_silentkill(victim) set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT) static msgid = 0 if (!msgid) { msgid = get_user_msgid("DeathMsg") } emessage_begin(MSG_ALL, msgid, {0,0,0}, 0) ewrite_byte(killer) ewrite_byte(victim) static mod_name[32] if (!mod_name[0]) { get_modname(mod_name, 31) } if (equal(mod_name, "cstrike") || equal(mod_name, "czero") || equal(mod_name, "csv15") || equal(mod_name, "cs13")) ewrite_byte(headshot) ewrite_string(weapname) emessage_end() if(get_user_team(killer) != get_user_team(victim)) { set_user_frags(killer, get_user_frags(killer) + 1); new money = cs_get_user_money(killer) + 300; if(money >= 2147483583) { cs_set_user_money(killer, 2147483583); } else { cs_set_user_money(killer, cs_get_user_money(killer) + 300, 1); } } if(get_user_team(killer)==get_user_team(victim)) set_user_frags(killer, get_user_frags(killer) - 1); message_begin(MSG_BROADCAST, get_user_msgid("ScoreInfo")); write_byte(killer); write_short(get_user_frags(killer)); write_short(cs_get_user_deaths(killer)); write_short(0); write_short(1); message_end(); new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10]; get_user_name(killer, kname, 31); get_user_team(killer, kteam, 9); get_user_authid(killer, kauthid, 31); get_user_name(victim, vname, 31); get_user_team(victim, vteam, 9); get_user_authid(victim, vauthid, 31); log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", kname, get_user_userid(killer), kauthid, kteam, vname, get_user_userid(victim), vauthid, vteam, weapname); return PLUGIN_CONTINUE; } Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi