Skocz do zawartości

Nowy szablon forum

mygo.pl

Stworzyliśmy dla Was nowy wygląd forum. Z pewnością znajdziesz rzeczy, które wg Ciebie mogą zostać zmienione - wspomnij o tym w specjalnym wątku.

Czytaj więcej

Jak założyć własną sieć

serwerów CS

Zastanawiasz się nad prowadzeniem własnej sieci serwerów? Przeczytaj podstawowe informacje, na które należy zwrócić uwagę, przy takim projekcie.

Czytaj więcej

Tworzymy spis sieci

dodaj swoją

Dodaj sieć do której należysz, pozwoli to na promocję i budowę ogólnopolskiej bazy sieci CS.

Czytaj więcej

RSS#99 request, Extra Damage Mod Grenade Fix


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
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

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...