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

RSSKill_Assist - Duplicate Deathmsg


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

  • RSSy
This plugin shows 1 frag in assist form.
Plugin bug is when death by suicide is duplicated in deathmsg.
68747470733a2f2f69696c692e696f2f6a4a3861

PHP Code:

/* --------------------------------------------------------------------------
    Kill assist (for CS) v1.2b
      by Digi (a.k.a. Hunter-Digital)
        www.thehunters.ro
          -----------------------------------------------------------------

    Description:

      When a player gets killed, this plugin checks if another player, from the same team,
      did enough damage to the victim so that he could be an accomplice to the kill and
      the assister will also receive a frag
      (all of these are cvar controlled)


    CVars and default values:

      - amx_killassist_enable 0/1/2 (default: 1)
        Enable modes: 0 = Disable / 1 = Enable with DeathMsg / 2 = Enable with HUD message

      - amx_killassist_mindamage 1-9999 (default: 50)
        Minimum amount of damage to deal to be nominated for an assisted kill

      - amx_killassist_givefrags 0/1 (default: 1)
        Give or not give the assister frags

      - amx_killassist_givemoney 0-16000 (default: 300)
        Give or not give the assister some money, 0 disables, 1 or more sets how much money

      - amx_killassist_onlyalive 0/1 (default: 0)
        Only alive players can be of assistance in killing other players


    Credits and thanks:

      - ConnorMcLeod - for helping with quick name changing
      - arkshine - for helping with name squeeze
      - joaquimandrade - code improvements
      - anakin_cstrike - code improvements
      - Nextra - more code improvements
      - ajvn - some ideas
      - Dores - and more code improvements
      - frearmer - hud message sugestion


    Changelog:

      v1.2b - modified public variable to "killassist_version" and fixed deathmsg not showing when you suicide with worldspawn or an entity
      v1.2 - added no-name-changing support, prints HUD message, to activate, set enabled to 2
      v1.1b - simplified cvar checking using clamp()
      v1.1 - converted to CS only, new cvars: amx_killassist_onlyalive, amx_killassist_givemoney, enriched cvar handling, added team cache and fixed some bugs
      v1.0d - Removed useless stuff xD, added pcvar on amx_mode and used formatex()
      v1.0c - Some modifications and added g_bOnline
      v1.0b - Fixed admin name bug
      v1.0 - Release

        -------------------------------------------------------------- */

/* Feel free to modify these HUD message values */

#define HUD_colorR        255    // default: 255
#define HUD_colorG        155    // default: 155
#define HUD_colorB        0    // default: 0
#define HUD_posX            0.6    // default: 0.6
#define HUD_posY            0.2    // default: 0.2
#define HUD_fx            0    // default: 0
#define HUD_fxTime        0.0    // default: 0.0
#define HUD_holdTime        1.0    // default: 1.0
#define HUD_fadeInTime        0.3    // default: 0.3
#define HUD_fadeOutTime        2.0    // default: 2.0
#define HUD_channel        -1    // default: -1

/* -------------------------------------------------------------------------
    Nothing to edit below this point */

#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <engine>
#include <fun>

#define PLUGIN_TITLE        "Kill assist (for CS)"
#define PLUGIN_VERSION        "1.2b"
#define PLUGIN_AUTHOR        "Digi (www.thehunters.ro)"
#define PLUGIN_PUBLICVAR    "killassist_version"

#define MAXPLAYERS        32 + 1

#define TEAM_NONE            0
#define TEAM_TE            1
#define TEAM_CT            2
#define TEAM_SPEC            3

#define is_player(%1) (1 <= %1 <= g_iMaxPlayers)

new msgID_sayText
new msgID_deathMsg
new msgID_scoreInfo
new msgID_money

new pCVar_amxMode

new pCVar_enabled
new pCVar_minDamage
new pCVar_giveFrags
new pCVar_giveMoney
new pCVar_onlyAlive

new ch_pCVar_enabled
new ch_pCVar_minDamage
new ch_pCVar_giveFrags
new ch_pCVar_giveMoney
new ch_pCVar_onlyAlive

new g_szName[MAXPLAYERS][32]
new 
g_iTeam[MAXPLAYERS]
new 
g_iDamage[MAXPLAYERS][MAXPLAYERS]
new 
bool:g_bAlive[MAXPLAYERS] = {false, ...}
new 
bool:g_bOnline[MAXPLAYERS] = {false, ...}

new 
g_iLastAmxMode
new g_iMaxPlayers 0
new bool:g_bAmxModeExists false

public plugin_init()
{
    
register_plugin(PLUGIN_TITLEPLUGIN_VERSIONPLUGIN_AUTHOR)
    
register_cvar(PLUGIN_PUBLICVARPLUGIN_VERSIONFCVAR_SERVER|FCVAR_SPONLY)

    
pCVar_enabled register_cvar("amx_killassist_enabled""2")
    
pCVar_minDamage register_cvar("amx_killassist_mindamage""50")
    
pCVar_giveFrags register_cvar("amx_killassist_givefrags""1")
    
pCVar_giveMoney register_cvar("amx_killassist_givemoney""300")
    
pCVar_onlyAlive register_cvar("amx_killassist_onlyalive""0")

    if(
cvar_exists("amx_mode"))
    {
        
pCVar_amxMode get_cvar_pointer("amx_mode")

        
g_bAmxModeExists true
    
}

    
msgID_money get_user_msgid("Money")
    
msgID_sayText get_user_msgid("SayText")
    
msgID_deathMsg get_user_msgid("DeathMsg")
    
msgID_scoreInfo get_user_msgid("ScoreInfo")

    
register_message(msgID_deathMsg"msg_deathMsg")

    
register_logevent("event_roundStart"2"1=Round_Start")

    
register_event("Damage""player_damage""be""2!0""3=0""4!0")
    
register_event("DeathMsg""player_die""ae")
    
register_event("TeamInfo""player_joinTeam""a")

    
RegisterHam(Ham_Spawn"player""player_spawn"1)

    
g_iMaxPlayers get_maxplayers()
}

public 
plugin_cfg() event_roundStart()

public 
event_roundStart()
{
    
ch_pCVar_enabled clamp(get_pcvar_num(pCVar_enabled), 02)
    
ch_pCVar_minDamage clamp(get_pcvar_num(pCVar_minDamage), 09999)
    
ch_pCVar_giveFrags clamp(get_pcvar_num(pCVar_giveFrags), 01)
    
ch_pCVar_giveMoney clamp(get_pcvar_num(pCVar_giveMoney), 016000)
    
ch_pCVar_onlyAlive clamp(get_pcvar_num(pCVar_onlyAlive), 01)
}

public 
client_putinserver(iPlayer)
{
    
g_bOnline[iPlayer] = true

    get_user_name
(iPlayerg_szName[iPlayer], 31)
}

public 
client_disconnect(iPlayer)
{
    
g_iTeam[iPlayer] = TEAM_NONE
    g_bAlive
[iPlayer] = false
    g_bOnline
[iPlayer] = false
}

public 
player_joinTeam()
{
    new 
iPlayerszTeam[2]

    
iPlayer read_data(1)
    
read_data(2szTeam1)

    switch(
szTeam[0])
    {
        case 
'T'g_iTeam[iPlayer] = TEAM_TE
        
case 'C'g_iTeam[iPlayer] = TEAM_CT
        
default: g_iTeam[iPlayer] = TEAM_SPEC // since you can't transfer yourself to unassigned team...
    
}

    return 
PLUGIN_CONTINUE
}

public 
player_spawn(iPlayer)
{
    if(!
is_user_alive(iPlayer))
        return 
HAM_IGNORED

    g_bAlive
[iPlayer] = true // he's alive !

    
new szName[32]

    
get_user_name(iPlayerszName31)

    if(!
equali(szNameg_szName[iPlayer])) // make sure he has his name !
    
{
        
set_msg_block(msgID_sayTextBLOCK_ONCE)
        
set_user_info(iPlayer"name"g_szName[iPlayer])
    }

    
// reset damage meters

    
for(new 1<= g_iMaxPlayersp++)
        
g_iDamage[iPlayer][p] = 0

    
return HAM_IGNORED
}

public 
player_damage(iVictim)
{
    if(!
ch_pCVar_enabled || !is_player(iVictim))
        return 
PLUGIN_CONTINUE

    
new iAttacker get_user_attacker(iVictim)

    if(!
is_player(iAttacker))
        return 
PLUGIN_CONTINUE

    g_iDamage
[iAttacker][iVictim] += read_data(2)

    return 
PLUGIN_CONTINUE
}

public 
player_die()
{
    if(!
ch_pCVar_enabled)
        return 
PLUGIN_CONTINUE

    
new iVictim read_data(2)
    new 
iKiller read_data(1)
    new 
iHS read_data(3)
    new 
szWeapon[24]
    
read_data(4szWeapon23)

    if(!
is_player(iVictim))
    {
        
do_deathmsg(iKilleriVictimiHSszWeapon)

        return 
PLUGIN_CONTINUE
    
}

    
g_bAlive[iVictim] = false

    
if(!is_player(iKiller))
    {
        
do_deathmsg(iKilleriVictimiHSszWeapon)

        return 
PLUGIN_CONTINUE
    
}

    new 
iKillerTeam g_iTeam[iKiller]

    if(
iKiller != iVictim && g_iTeam[iVictim] != iKillerTeam)
    {
        new 
iKiller2 0
        
new iDamage2 0

        
for(new 1<= g_iMaxPlayersp++)
        {
            if(
!= iKiller && g_bOnline[p] && (ch_pCVar_onlyAlive && g_bAlive[p] || !ch_pCVar_onlyAlive) && iKillerTeam == g_iTeam[p] && g_iDamage[p][iVictim] >= ch_pCVar_minDamage && g_iDamage[p][iVictim] > iDamage2)
            {
                
iKiller2 p
                iDamage2 
g_iDamage[p][iVictim]
            }

            
g_iDamage[p][iVictim] = 0
        
}

        if(
iKiller2 && iDamage2 ch_pCVar_minDamage)
        {
            if(
ch_pCVar_giveFrags)
            {
                new 
iFrags get_user_frags(iKiller2)+1

                set_user_frags
(iKiller2iFrags)

                
message_begin(MSG_ALLmsgID_scoreInfo)
                
write_byte(iKiller2)
                
write_short(iFrags)
                
write_short(get_user_deaths(iKiller2))
                
write_short(0)
                
write_short(iKillerTeam)
                
message_end()
            }

            if(
ch_pCVar_giveMoney)
            {
                new 
iMoney cs_get_user_money(iKiller2) + ch_pCVar_giveMoney

                
if(iMoney 16000)
                    
iMoney 16000

                cs_set_user_money
(iKiller2iMoney)

                if(
g_bAlive[iKiller2]) // no reason to send a money message when the player has no hud :}
                
{
                    
message_begin(MSG_ONE_UNRELIABLEmsgID_money_iKiller2)
                    
write_long(iMoney)
                    
write_byte(1)
                    
message_end()
                }
            }

            if(
ch_pCVar_enabled == 2)
            {
                new 
szName1[32], szName2[32], szName3[32], szMsg[128]

                
get_user_name(iKillerszName131)
                
get_user_name(iKiller2szName231)
                 
get_user_name(iVictimszName331)

                
formatex(szMsg63"%s killed %s assisted by %s"szName1szName3szName2)

                
set_hudmessage(HUD_colorRHUD_colorGHUD_colorBHUD_posXHUD_posYHUD_fxHUD_fxTimeHUD_holdTimeHUD_fadeInTimeHUD_fadeOutTimeHUD_channel)
                
show_hudmessage(0szMsg)
            }
            else
            {
                new 
szName1[32], iName1LenszName2[32], iName2LenszNames[32], szWeaponLong[32]

                
iName1Len get_user_name(iKillerszName131)
                
iName2Len get_user_name(iKiller2szName231)
 
                
g_szName[iKiller] = szName1

                
if(iName1Len 14)
                {
                    
formatex(szName1iName1Len"%s"szName1)
                    
formatex(szName228-iName1Len"%s"szName2)
                }
                else if(
iName2Len 14)
                {
                    
formatex(szName128-iName2Len"%s"szName1)
                    
formatex(szName2iName2Len"%s"szName2)
                }
                else
                {
                    
formatex(szName113"%s"szName1)
                    
formatex(szName213"%s"szName2)
                }

                
formatex(szNames31"%s + %s"szName1szName2)

                
set_msg_block(msgID_sayTextBLOCK_ONCE)
                
set_user_info(iKiller"name"szNames)

                if(
g_bAmxModeExists)
                {
                    
g_iLastAmxMode get_pcvar_num(pCVar_amxMode)

                    
set_pcvar_num(pCVar_amxMode0)
                }

                if(
equali(szWeapon"grenade"))
                    
szWeaponLong "weapon_hegrenade"
                
else
                    
formatex(szWeaponLong31"weapon_%s"szWeapon)

                new 
args[4]

                
args[0] = iVictim
                args
[1] = iKiller
                args
[2] = iHS
                args
[3] = get_weaponid(szWeaponLong)

                
set_task(0.1"player_diePost"0args4)
            }
        }
        else if(
ch_pCVar_enabled == 1)
            
do_deathmsg(iKilleriVictimiHSszWeapon)
    }
    else if(
ch_pCVar_enabled == 1)
        
do_deathmsg(iVictimiVictimiHSszWeapon)

    return 
PLUGIN_CONTINUE
}

public 
player_diePost(arg[])
{
    new 
szWeapon[24]
    new 
iKiller arg[1]

    
get_weaponname(arg[3], szWeapon23)
    
replace(szWeapon23"weapon_""")

    
do_deathmsg(iKillerarg[0], arg[2], szWeapon)

    
set_msg_block(msgID_sayTextBLOCK_ONCE)
    
set_user_info(iKiller"name"g_szName[iKiller])

    if(
g_bAmxModeExists)
        
set_pcvar_num(pCVar_amxModeg_iLastAmxMode)

    return 
PLUGIN_CONTINUE
}

public 
msg_deathMsg()
    return 
ch_pCVar_enabled == PLUGIN_HANDLED PLUGIN_CONTINUE

/* originally from messages_stocks.inc, but simplified */

stock do_deathmsg(iKilleriVictimiHS, const szWeapon[])
{
    
message_begin(MSG_ALLmsgID_deathMsg)
    
write_byte(iKiller)
    
write_byte(iVictim)
    
write_byte(iHS)
    
write_string(szWeapon)
    
message_end()
}

/* --------------------------------------------------------------------------
    EOF
        -------------------------------------------------------------- */ 

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ę...