Discord sunucumuz açılmıştır, hepinizi bekleriz

https://discord.gg/43gGDQe6tS

sprite duvar arkasından görünmeyi kaldırma

Eklenti sorunlarınız ve özel eklenti istekleriniz

Moderatör: Moderatörler


Konu Sahibi
ERRA
Mesajlar: 66
Kayıt: Prş Haz 25, 2020 11:06 pm

sprite duvar arkasından görünmeyi kaldırma

Mesaj gönderen ERRA »

Merhaba ekteki derlemede .spr yada sprite diye tanımlanan kafada çıkan o görsel duvar arkasındanda çıkıp rakibin yerini gösteriyor bunu kaldırma şansımız varmıdır rakibin kafasında yine çıksın komple kalksın istemiyorum fakat duvar arkasından gözükmesini engellemek istiyorum lütfen yardım edermisniz.

Kod: Tümünü seç

#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

//#define AES_EXP

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
    #include <colorchat>
#endif

#if defined AES_EXP
    #include <aes_main>
#endif

#define PLUGIN "Duels"
#define VERSION "0.75"
#define AUTHOR "Psycrow"

#define SOUND_DUEL_ACCEPTED         "next21_duels/duel_challenge_accepted.wav"
#define SOUND_DUEL_WIN                "next21_duels/win.wav"
#define SOUND_DUEL_LOSE                "next21_duels/lose.wav"

#define SPRITE_DUEL                    "sprites/next21_duels/duel.spr"

#define DUEL_SPRITE_DISTANCE        10.0
#define DUEL_WAITING_TIME            10.0

#define Player[%1][%2]        g_player_data[%1 - 1][%2]

enum _:Player_Properties
{
    PlrInServer,
    PlrIsAlive,
    PlrTeam,
    PlrDuelReady,
    PlrDuelWaiting,
    PlrDuelFrags,
    PlrDuelSprite,
    Float: PlrDeathReasonTime,
    Float: PlrDuelWaitingTime
}

new
g_player_data[32][Player_Properties], g_iMaxplayers, g_infoTarget,
g_forwardAddToFullPack, g_forwardCheckVisibility, g_iSpriteImpulse,
#if !defined AES_EXP
    g_cvMoney,
#endif
g_cvFrags, g_cvReward, g_cvLosing, g_cvCompensation, g_cvSounds, Float: g_cvSprite, Float: g_cvSpriteDist

public plugin_precache()
{        
    precache_sound(SOUND_DUEL_ACCEPTED)
    precache_sound(SOUND_DUEL_WIN)
    precache_sound(SOUND_DUEL_LOSE)
    
    precache_model(SPRITE_DUEL)
}

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_cvar("cv_duels_frags", "3")
    register_cvar("cv_duels_reward", "6000")
    register_cvar("cv_duels_losing", "3000")
    register_cvar("cv_duels_compensation", "3000")
    register_cvar("cv_duels_sounds", "1")
    register_cvar("cv_duels_sprite", "0.5")
    register_cvar("cv_duels_sprite_dist", "40.0")

    register_clcmd("say /duelo", "duel_check_players")
    register_clcmd("say_team /duel", "duel_check_players")
    
    register_clcmd("say /cikis", "unduel")
    register_clcmd("say_team /cikis", "unduel")
    
    register_logevent("fw_RoundStart", 2, "1=Round_Start")
    
    RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
    RegisterHam(Ham_Killed, "player", "fw_PlayerKilled", 1)
    RegisterHam(Ham_Player_PreThink, "player", "fw_PlayerPreThink")
    
    register_message(get_user_msgid("TeamInfo"), "fw_TeamInfo")
    
    g_iMaxplayers = get_maxplayers()
    g_infoTarget = engfunc(EngFunc_AllocString, "info_target")
    g_iSpriteImpulse = engfunc(EngFunc_AllocString, "next21_duelsprite")
    
    #if !defined AES_EXP
    register_cvar("cv_duels_maxmoney","16000")
    #endif
    
    register_dictionary("next21_duels.txt")
}

public fw_RoundStart()
{
    g_cvFrags = get_cvar_num("cv_duels_frags")
    g_cvReward = get_cvar_num("cv_duels_reward")
    g_cvLosing = get_cvar_num("cv_duels_losing")
    g_cvCompensation = get_cvar_num("cv_duels_compensation")
    g_cvSounds = get_cvar_num("cv_duels_sounds")
    #if !defined AES_EXP
    g_cvMoney = get_cvar_num("cv_duels_maxmoney")
    #endif
    
    new Float: fSpriteScale = floatmax(0.0, get_cvar_float("cv_duels_sprite"))
        
    if (fSpriteScale > 0.0 && g_cvSprite == 0.0)
    {
        g_forwardAddToFullPack = register_forward(FM_AddToFullPack, "fw_AddToFullPack" , 1)
        g_forwardCheckVisibility = register_forward(FM_CheckVisibility, "fw_CheckVisibility")
        g_cvSpriteDist = get_cvar_float("cv_duels_sprite_dist")
    }
    else if (fSpriteScale == 0.0 && g_cvSprite > 0.0)
    {
        for (new i = 1; i <= g_iMaxplayers; i++)
        {
            if (!Player[i][PlrDuelSprite])
                continue
                
            engfunc(EngFunc_RemoveEntity, Player[i][PlrDuelSprite])
            Player[i][PlrDuelSprite] = 0
        }
                
        unregister_forward(FM_AddToFullPack, g_forwardAddToFullPack)
        unregister_forward(FM_CheckVisibility, g_forwardCheckVisibility)
    }
    else if (fSpriteScale != g_cvSprite)
    {
        for (new i = 1; i <= g_iMaxplayers; i++)
            if (Player[i][PlrDuelSprite])
                set_pev(Player[i][PlrDuelSprite], pev_scale, fSpriteScale)
    }
    
    g_cvSprite = fSpriteScale
}

public client_putinserver(id)
{
    Player[id][PlrInServer] = 1
    Player[id][PlrIsAlive] = 0
    Player[id][PlrTeam] = 0
}

public client_disconnected(id)
{
    Player[id][PlrInServer] = 0
    Player[id][PlrIsAlive] = 0
    Player[id][PlrTeam] = 0
    
    if (Player[id][PlrDuelReady] && Player[Player[id][PlrDuelReady]][PlrInServer])
    {
        remove_duel_sprite(id)
        remove_duel_sprite(Player[id][PlrDuelReady])
    
        if (is_user_connected(Player[id][PlrDuelReady]))
        {
            new playerName[24]
            pev(id, pev_netname, playerName, 23)
            
            client_print_color(Player[id][PlrDuelReady], print_team_red, "^4[%s] ^3%L",
                PLUGIN, Player[id][PlrDuelReady], "DUEL_DISCONNECT", playerName)
            
            compensation(Player[id][PlrDuelReady], id)
        }
        else
        {
            Player[Player[id][PlrDuelWaiting]][PlrInServer] = 0
            Player[Player[id][PlrDuelReady]][PlrDuelReady] = 0
            Player[id][PlrDuelReady] = 0
        }
    }
    
    if (Player[id][PlrDuelWaiting] && Player[Player[id][PlrDuelWaiting]][PlrInServer])
    {    
        new victim = Player[id][PlrDuelWaiting], playerName[24]
        pev(id, pev_netname, playerName, 23)
        client_print_color(victim, print_team_red, "^4[%s] ^3%L",
            PLUGIN, victim, "DUEL_DISCONNECT_W", playerName)
                
        Player[id][PlrDuelWaiting] = 0
        Player[victim][PlrDuelWaiting] = 0
        
        Player[id][PlrDuelWaitingTime] = 0
        Player[victim][PlrDuelWaitingTime] = 0
    }
}

public fw_PlayerSpawn(id)
{
    if (!is_user_alive(id))
        return HAM_IGNORED
        
    Player[id][PlrTeam] = get_pdata_int(id, 114, 5)
    Player[id][PlrIsAlive] = 1
    
    if (Player[id][PlrDuelSprite])
        set_pev(Player[id][PlrDuelSprite], pev_effects, 0)
    
    return HAM_IGNORED
}

public fw_PlayerKilled(victim, attacker)
{
    Player[victim][PlrIsAlive] = 0
    
    if (attacker && attacker != victim)
        set_flag_duel(attacker, victim)
        
    if (Player[victim][PlrDuelSprite])
        set_pev(Player[victim][PlrDuelSprite], pev_effects, EF_NODRAW)
}

public fw_PlayerPreThink(id)
{
    if(Player[id][PlrDuelWaiting] && Player[id][PlrDuelWaitingTime] <= get_gametime())
    {
        Player[id][PlrDuelWaitingTime] = 0
        Player[Player[id][PlrDuelWaiting]][PlrDuelWaitingTime] = 0
        
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_WAITING_TIME")
        client_print_color(Player[id][PlrDuelWaiting], print_team_red, "^4[%s] ^3%L",
            PLUGIN, Player[id][PlrDuelWaiting], "DUEL_WAITING_TIME")
        
        Player[Player[id][PlrDuelWaiting]][PlrDuelWaiting] = 0
        Player[id][PlrDuelWaiting] = 0
    }
}

public fw_TeamInfo()
{
    new id = get_msg_arg_int(1)
    
    new team[2]
    get_msg_arg_string(2, team, 1)
            
    switch (team[0])
    {
        case 'T': Player[id][PlrTeam] = 1
        case 'C': Player[id][PlrTeam] = 2
        case 'S': Player[id][PlrTeam] = 3
        default: Player[id][PlrTeam] = 0
    }
            
    new victim = Player[id][PlrDuelReady]
    if (victim)
    {
        if (Player[victim][PlrInServer])
        {
            if (Player[id][PlrTeam] == Player[victim][PlrTeam]
                || (Player[id][PlrTeam] != 1 && Player[id][PlrTeam] != 2))
            {
                remove_duel_sprite(id)
                remove_duel_sprite(victim)
            
                client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_TEAM")
                client_print_color(victim, print_team_red, "^4[%s] ^3%L", PLUGIN, victim, "DUEL_TEAM")
                
                if (Player[id][PlrDuelFrags] < Player[victim][PlrDuelFrags])
                    compensation(victim, id)
                else if (Player[id][PlrDuelFrags] > Player[victim][PlrDuelFrags])
                    compensation(id, victim)
                
                Player[id][PlrDuelFrags] = 0
                Player[victim][PlrDuelFrags] = 0
                
                Player[id][PlrDuelReady] = 0
                Player[victim][PlrDuelReady] = 0
            }        
        }
        
        victim = Player[id][PlrDuelWaiting]
        if (victim && Player[victim][PlrInServer])    
        {
            if (Player[id][PlrTeam] == Player[victim][PlrTeam]
                || (Player[id][PlrTeam] != 1 && Player[id][PlrTeam] != 2))
            {
                client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_TEAM")
                client_print_color(victim, print_team_red, "^4[%s] ^3%L", PLUGIN, victim, "DUEL_TEAM")
                
                Player[id][PlrDuelWaiting] = 0
                Player[victim][PlrDuelWaiting] = 0
                
                Player[id][PlrDuelWaitingTime] = 0
                Player[victim][PlrDuelWaitingTime] = 0
            }
        }
    }
}
    
public fw_AddToFullPack(es_state, e, ent, host, hostflags, player)
{
    if (!ent || player || pev_valid(ent) != 2 || pev(ent, pev_impulse) != g_iSpriteImpulse)
        return FMRES_IGNORED
        
    if (Player[host][PlrDuelSprite] != ent)
    {
        set_es(es_state, ES_RenderMode, EF_NODRAW)
        return FMRES_IGNORED
    }
            
    static iEnemy; iEnemy = Player[host][PlrDuelReady]    
    if (!iEnemy || !Player[iEnemy][PlrIsAlive])
    {
        set_es(es_state, ES_RenderMode, EF_NODRAW)
        return FMRES_IGNORED
    }
                
    static Float: startPosition[3],
    Float: endPosition[3],
    Float: fVector[3],
    Float: fVectorNormal[3],
    Float: fView[3],
    Float: endCurPosition[3]
                
    pev(iEnemy, pev_origin, endPosition)
    endPosition[2] += g_cvSpriteDist
        
    pev(host, pev_origin, startPosition)
    pev(host, pev_view_ofs, fView)
    xs_vec_add(startPosition, fView, startPosition)
        
    xs_vec_sub(endPosition, startPosition, fVector)
    xs_vec_normalize(fVector, fVectorNormal)
        
    engfunc(EngFunc_TraceLine, startPosition, endPosition, IGNORE_MONSTERS, host, 0)
    get_tr2(0, TR_vecEndPos, endCurPosition)
        
    xs_vec_mul_scalar(fVectorNormal, -10.0, fVector)
    xs_vec_add(endCurPosition, fVector, endCurPosition)
        
    if (get_distance_f(startPosition, endCurPosition) - get_distance_f(endPosition, endCurPosition) < 100.0)
    {
        xs_vec_mul_scalar(fVectorNormal, floatmin(100.0, get_distance_f(startPosition, endCurPosition)), endCurPosition)
        xs_vec_add(startPosition, endCurPosition, endCurPosition)
            
        set_es(es_state, ES_Scale, get_distance_f(startPosition, endCurPosition) * 0.005 * g_cvSprite)
    }
    
    set_es(es_state, ES_Origin, endCurPosition)

    return FMRES_IGNORED
}

public fw_CheckVisibility(ent)
{
    if (pev(ent, pev_impulse) == g_iSpriteImpulse)
    {
        forward_return(FMV_CELL, 1)
        return FMRES_SUPERCEDE
    }
    
    return FMRES_IGNORED
}

public duel_check_players(id)
{
    if (Player[id][PlrDuelReady])
    {
        new player_name[24]
        pev(Player[id][PlrDuelReady], pev_netname, player_name, 23)
        
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_EXIST", player_name)
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_UNDUEL")
        return
    }
        
    if (Player[id][PlrDuelWaiting])
    {
        new player_name[24]
        pev(Player[id][PlrDuelWaiting], pev_netname, player_name, 23)
        
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_EXIST_W", player_name)
        return
    }
    
    if (!Player[id][PlrTeam] || Player[id][PlrTeam] == 3)
    {
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_WRONG_TEAM")
        return        
    }
    
    new menuName[64]
    format(menuName, 63, "\r%L", id, "DUEL_HEADNAME")
    
    new Players_Menu = menu_create(menuName, "duel_menu_handler")
    new s_Name[24], s_Player[4], iEnemyTeam = Player[id][PlrTeam] == 2 ? 1 : 2
        
    for(new i = 1; i <= g_iMaxplayers; i++)
    { 
        if (!Player[i][PlrInServer] || Player[i][PlrTeam] != iEnemyTeam || is_user_hltv(i))
            continue
        
        pev(i, pev_netname, s_Name, 23)
        num_to_str(i, s_Player, 3)
        
        if (Player[i][PlrDuelReady] || Player[i][PlrDuelWaiting])
            format(s_Name, 23, "\d%s", s_Name)
        
        menu_additem(Players_Menu, s_Name, s_Player, 0)
    }
    
    new sMenuProp[3][16]
    format(sMenuProp[0], 15, "%L", id, "MENU_NEXT")
    format(sMenuProp[1], 15, "%L", id, "MENU_BACK")
    format(sMenuProp[2], 15, "%L", id, "MENU_EXIT")
    
    menu_setprop(Players_Menu, MPROP_NEXTNAME, sMenuProp[0])
    menu_setprop(Players_Menu, MPROP_BACKNAME, sMenuProp[1])
    menu_setprop(Players_Menu, MPROP_EXITNAME, sMenuProp[2])
    
    menu_display(id, Players_Menu, 0)
}

public duel_menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
    
    if(!Player[id][PlrTeam] || Player[id][PlrTeam] == 3)
    {
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_WRONG_TEAM")
        return PLUGIN_HANDLED    
    }
    
    new sData[6], sName[64], iAccess, iCallback
    menu_item_getinfo(menu, item, iAccess, sData, charsmax(sData), sName, charsmax(sName), iCallback)
    
    new key = str_to_num(sData)
        
    if (!Player[key][PlrInServer] || Player[id][PlrTeam] == Player[key][PlrTeam] || !Player[key][PlrTeam] || Player[key][PlrTeam] == 3)
    {
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_ERROR_PLAYER")
        duel_check_players(id)
        return PLUGIN_HANDLED
    }
    
    if (Player[key][PlrDuelReady] || Player[key][PlrDuelWaiting])
    {
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_WARNING_PLAYER")
        duel_check_players(id)
        return PLUGIN_HANDLED
    }
    
    new enemyName[24]
    pev(key, pev_netname, enemyName, 23)
    
    client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_WAITING", enemyName)
    Player[key][PlrDuelWaiting] = id
    Player[id][PlrDuelWaiting] = key
    
    new Float: gameTime = get_gametime()
    Player[id][PlrDuelWaitingTime] = _:(gameTime + DUEL_WAITING_TIME)
    Player[key][PlrDuelWaitingTime] = _:(gameTime + DUEL_WAITING_TIME)
    
    menu_destroy(menu)
    
    new menuName[120], playerName[24]
    pev(id, pev_netname, playerName, 23)
    format(menuName, 119, "\r%L", key, "DUEL_CHALLENGE", playerName)
    
    new duel_Menu = menu_create(menuName, "duel_challenge_handler")
    
    new strMenuItem[64]
    format(strMenuItem, 63, "\w%L", key, "DUEL_AGREE")
    menu_additem(duel_Menu, strMenuItem, "1", 0)
    format(strMenuItem, 63, "\w%L", key, "DUEL_REFUSE")
    menu_additem(duel_Menu, strMenuItem, "2", 0)
    
    menu_setprop(duel_Menu, MPROP_EXIT, -1)
    menu_display(key, duel_Menu, 0)
    
    if(is_user_bot(key))
        duel_challenge_handler(key, duel_Menu, 0)
    
    return PLUGIN_CONTINUE
}

public duel_challenge_handler(id, menu, item)
{
    if (!is_user_connected(id))
        return PLUGIN_HANDLED
    
    new enemy = Player[id][PlrDuelWaiting]
    
    if (!enemy)
    {
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_WAITING_TIME")
        menu_destroy(menu)
        return PLUGIN_HANDLED
    }
    
    switch(item)
    {
        case 0:
        {
            new playerName[24], enemyName[24]
            pev(id, pev_netname, playerName, 23)
            pev(enemy, pev_netname, enemyName, 23)
            client_print_color(enemy, print_team_red, "^4[%s] ^3%L", PLUGIN, enemy, "DUEL_PLAYER_AGREE", playerName)
            client_print_color(enemy, print_team_red, "^4[%s] ^3%L", PLUGIN, enemy, "DUEL_RULE", g_cvFrags)
            client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_RULE", g_cvFrags)
            Player[enemy][PlrDuelReady] = id
            Player[id][PlrDuelReady] = enemy
            
            if (g_cvSounds)
            {
                client_cmd(enemy, "spk %s", SOUND_DUEL_ACCEPTED)
                client_cmd(id, "spk %s", SOUND_DUEL_ACCEPTED)
            }
            
            if (g_cvSprite > 0.0)
            {
                create_duel_sprite(id)
                create_duel_sprite(enemy)
            }
        }
        case 1:
        {
            new playerName[24]
            pev(id, pev_netname, playerName, 23)
            client_print_color(enemy, print_team_red, "^4[%s] ^3%L", PLUGIN, enemy, "DUEL_PLAYER_REFUSE", playerName)
        }
        default:
        {
            menu_destroy(menu)
            return PLUGIN_HANDLED
        }
    }
    
    Player[enemy][PlrDuelWaiting] = 0
    Player[id][PlrDuelWaiting] = 0
    
    Player[id][PlrDuelWaitingTime] = 0
    Player[enemy][PlrDuelWaitingTime] = 0
    
    menu_destroy(menu)
    return PLUGIN_HANDLED    
}

public unduel(id)
{
    new enemy = Player[id][PlrDuelReady]
    
    if(!enemy)
    {
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_NOEXIST")
        return
    }
    
    remove_duel_sprite(id)
    remove_duel_sprite(enemy)
    
    new playerName[24]
    pev(id, pev_netname, playerName, 23)
    client_print_color(enemy, print_team_red, "^4[%s] ^3%L", PLUGIN, enemy, "DUEL_BREAK", playerName)
    client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_BREAK_V")
    
    if(Player[id][PlrDuelFrags] < Player[enemy][PlrDuelFrags])
    {        
        if(g_cvLosing)
        {
            #if defined AES_EXP
            aes_add_player_exp(id, -g_cvLosing)
            client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_ARS_BREAK_FINE", g_cvLosing)
            #else
            new curMoney = cs_get_user_money(id)
            new money = curMoney - g_cvLosing < 0 ? curMoney : g_cvLosing
            cs_set_user_money(id, curMoney - money)
            client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_BREAK_FINE", money)
            #endif
        }
    }
    
    compensation(enemy, id)
}

set_flag_duel(attacker, victim)
{        
    if(Player[victim][PlrDuelReady] != attacker || Player[attacker][PlrDuelReady] != victim)
        return
    
    new attackerName[24], victimName[24]
    pev(victim, pev_netname, victimName, 23)
    pev(attacker, pev_netname, attackerName, 23)
    
    Player[attacker][PlrDuelFrags]++
    
    if(Player[attacker][PlrDuelFrags] == g_cvFrags)
    {
        remove_duel_sprite(attacker)
        remove_duel_sprite(victim)
    
        client_print_color(0, print_team_red, "^4[%s] ^3%L", PLUGIN, LANG_PLAYER, "DUEL_WIN",
            attackerName, victimName, attackerName, Player[attacker][PlrDuelFrags], Player[victim][PlrDuelFrags])
        
        if(g_cvReward)
        {
            #if defined AES_EXP
            aes_add_player_exp(attacker, g_cvReward)
            client_print_color(attacker, print_team_red, "^4[%s] ^3%L", PLUGIN, attacker, "DUEL_AES_REWARD", g_cvReward)
            #else
            new curMoney = cs_get_user_money(attacker)
            new money = curMoney + g_cvReward > g_cvMoney ? g_cvMoney - curMoney : g_cvReward
            cs_set_user_money(attacker, curMoney + money)
            client_print_color(attacker, print_team_red, "^4[%s] ^3%L", PLUGIN, attacker, "DUEL_REWARD", money)
            #endif
        }
        
        if(g_cvLosing)
        {
            #if defined AES_EXP
            aes_add_player_exp(victim, -g_cvLosing)
            client_print_color(victim, print_team_red, "^4[%s] ^3%L", PLUGIN, victim, "DUEL_AES_LOOSE", g_cvLosing)
            #else
            new curMoney = cs_get_user_money(victim)
            new money = curMoney - g_cvLosing < 0 ? curMoney : g_cvLosing
            cs_set_user_money(victim, curMoney - money)
            client_print_color(victim, print_team_red, "^4[%s] ^3%L", PLUGIN, victim, "DUEL_LOOSE", money)
            #endif
        }
        
        if(g_cvSounds)
        {
            client_cmd(attacker, "spk %s", SOUND_DUEL_WIN)
            client_cmd(victim, "spk %s", SOUND_DUEL_LOSE)
        }
        
        Player[attacker][PlrDuelFrags] = 0
        Player[victim][PlrDuelFrags] = 0
        Player[attacker][PlrDuelReady] = 0
        Player[victim][PlrDuelReady] = 0
        return
    }
    
    client_print_color(attacker, print_team_red, "^4[%s] ^3%L", PLUGIN, attacker, "DUEL_FRAG_A",
        g_cvFrags - Player[attacker][PlrDuelFrags])
        
    client_print_color(victim, print_team_red, "^4[%s] ^3%L", PLUGIN, victim, "DUEL_FRAG_V",
        g_cvFrags - Player[attacker][PlrDuelFrags])
}

compensation(const id, const victim)
{
    if(g_cvCompensation && Player[id][PlrDuelFrags] > Player[victim][PlrDuelFrags])
    {
        #if defined AES_EXP
        aes_add_player_exp(id, g_cvCompensation)
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_AES_COMPENSATION",
            g_cvCompensation)
        #else
        new curMoney = cs_get_user_money(id)
        new money = curMoney + g_cvCompensation > g_cvMoney ? g_cvMoney - curMoney : g_cvCompensation
        cs_set_user_money(id, curMoney + money)
        client_print_color(id, print_team_red, "^4[%s] ^3%L", PLUGIN, id, "DUEL_COMPENSATION", money)
        #endif
    }
    
    Player[id][PlrDuelFrags] = 0
    Player[victim][PlrDuelFrags] = 0
    Player[id][PlrDuelReady] = 0
    Player[victim][PlrDuelReady] = 0
}

create_duel_sprite(const iPlayerId)
{
    if (Player[iPlayerId][PlrDuelSprite])
        return 0
        
    new iSprite = engfunc(EngFunc_CreateNamedEntity, g_infoTarget)
            
    if (pev_valid(iSprite) != 2)
    {
        Player[iPlayerId][PlrDuelSprite] = 0
        server_print("[%s] ERROR: sprite duel entities are not initialized", PLUGIN)
        return 1
    }
    
    engfunc(EngFunc_SetSize, iSprite, Float: {-1.0, -1.0, -1.0} , Float: { 1.0, 1.0, 1.0 })
    engfunc(EngFunc_SetModel, iSprite, SPRITE_DUEL)
    engfunc(EngFunc_SetOrigin, iSprite, Float: {-8192.0, -8192.0, -8192.0})
    
    set_pev(iSprite, pev_effects, Player[iPlayerId][PlrIsAlive] ? 0 : EF_NODRAW)
    set_pev(iSprite, pev_renderfx, 0)
    set_pev(iSprite, pev_rendermode, kRenderTransAdd)
    set_pev(iSprite, pev_renderamt, 255.0)
    set_pev(iSprite, pev_rendercolor, Float: {255.0, 255.0, 255.0})
    set_pev(iSprite, pev_solid, SOLID_NOT)
    set_pev(iSprite, pev_movetype, MOVETYPE_PUSHSTEP)
    set_pev(iSprite, pev_impulse, g_iSpriteImpulse)
    set_pev(iSprite, pev_scale, g_cvSprite)
    
    Player[iPlayerId][PlrDuelSprite] = iSprite
    
    return 0
}

remove_duel_sprite(const iPlayerId)
{
    if (Player[iPlayerId][PlrDuelSprite])
    {
        engfunc(EngFunc_RemoveEntity, Player[iPlayerId][PlrDuelSprite])
        Player[iPlayerId][PlrDuelSprite] = 0
    } 

Link:
Linklerini gizle
Linki Kopyala
Kullanıcı avatarı

Jenessee
Mesajlar: 26
Kayıt: Pzt Oca 27, 2020 10:49 pm
İletişim:

sprite duvar arkasından görünmeyi kaldırma

Mesaj gönderen Jenessee »

dener misin
test2.sma
Bu mesaja eklenen dosyaları görüntülemek için gerekli izinlere sahip değilsiniz.

Link:
Linklerini gizle
Linki Kopyala
Cevapla