Counter-Strike 1.6
CS1.BG | DUST2 NOSHTA GARMI [RANKED PLAY] #1
45.144.155.113:27015
de_dust2
Играчи: 30/32
de_dust2
Counter-Strike 1.6
Cs-PlovdiV.com - Aim Attack 93.123.16.4:27022 aim_aztec Играчи: 0/16

Weapon doesn't go away after spawn

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
erra1881
Извън линия
Потребител
Потребител
Мнения: 28
Регистриран на: 14 Юни 2021, 14:11
Се отблагодари: 2 пъти

Weapon doesn't go away after spawn

Мнение от erra1881 » 01 Ное 2021, 08:01

hello, in this code, after the opponent approves, we spawn mutually, but the weapon does not disappear in the knife duel.
Knife fires like AWP when I press q

Код за потвърждение: Избери целия код

#define PLUGINNAME      "Automatic knife duel"
#define VERSION         "0.3"
#define AUTHOR          "JGHG"
 
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
 
#define DEBUG
 
#if defined DEBUG
#include <amxmisc>
#endif // defined DEBUG
 
#define MENUSELECT1                             0
#define MENUSELECT2                             1
#define TASKID_CHALLENGING              2348923
#define TASKID_BOTTHINK                 3242321
#define DECIDESECONDS                   10
#define ALLOWED_WEAPONS                 2
#define KNIFESLASHES                    3 // the nr of slashes within a short amount of time until a challenge starts...
// Globals below
new g_allowedWeapons[ALLOWED_WEAPONS] = {CSW_KNIFE, CSW_C4}
new g_MAXPLAYERS
new bool:g_challenging = false
new bool:g_knifeArena = false
new bool:g_noChallengingForAWhile = false
new g_challengemenu
new g_challenger
new g_challenged
new g_challenges[33]
 
new Float:g_vKnifeOrigin[2][3];
new const g_szSpawnClassname[] = "info_player_deathmatch";
 
enum _:max_cvars {
        
        CVAR_COUNT = 0,
        CVAR_TIMER,
        CVAR_MAXDISTANCE,
        CVAR_ANNOUNCE,
        CVAR_RESET
};
new g_Pcvar[max_cvars];
 
new g_iFwdSpawn;
new g_iMaxPlayers;
 
public plugin_modules()
{
        require_module("fakemeta")
        require_module("fun")
}
 
public plugin_precache()
{
        g_iFwdSpawn = register_forward(FM_Spawn,"fwd_Spawn",1);
}
 
public fwd_Spawn(ent)
{
        if(!pev_valid(ent))
                return FMRES_IGNORED;
        
        static szClassname[32];
        pev(ent,pev_classname,szClassname,sizeof szClassname - 1);
        
        if(equal(szClassname,g_szSpawnClassname))
        {
                if(vec_null(g_vKnifeOrigin[0]))
                {
                        pev(ent,pev_origin,g_vKnifeOrigin[0]);
                }
                else if(!vec_null(g_vKnifeOrigin[0]) && vec_null(g_vKnifeOrigin[1]))
                {
                        static Float:vTmp[3];
                        pev(ent,pev_origin,vTmp);
                        
                        if((300.0 <= vector_distance(g_vKnifeOrigin[0],vTmp) < 600.0))
                                g_vKnifeOrigin[1] = vTmp;
                }
        }
        return FMRES_IGNORED;
}
        
public forward_emitsound(const PIRATE, const Onceuponatimetherewasaverysmall, noise[], const Float:turtlewhoateabiggerturtleand, const Float:afterthatthesmallturtlegot, const veryveryverybig, const theend) {
        if (g_noChallengingForAWhile || g_knifeArena || g_challenging || PIRATE < 1 || PIRATE > g_MAXPLAYERS || !is_user_alive(PIRATE) || !equal(noise, "weapons/knife_hitwall1.wav"))
                return FMRES_IGNORED
 
        new team = get_user_team(PIRATE), otherteam = 0, matchingOpponent = 0
        // Make sure exactly one person on each team is alive.
        for (new i = 1; i <= g_MAXPLAYERS; i++) {
                if (!is_user_connected(i) || !is_user_alive(i) || PIRATE == i)
                        continue
                if (get_user_team(i) == team) {
                        // No fun.
                        return FMRES_IGNORED
                }
                else {
                        if (++otherteam > 1) {
                                // No fun.
                                return FMRES_IGNORED
                        }
                        matchingOpponent = i
                }
        }
 
        if (matchingOpponent == 0)
                return FMRES_IGNORED
 
        if (++g_challenges[PIRATE] >= KNIFESLASHES) {
                Challenge(PIRATE, matchingOpponent)
                if (is_user_bot(matchingOpponent)) {
                        new Float:val = float(DECIDESECONDS)
                        if (val < 2.0)
                                val = 2.0
                        remove_task(TASKID_BOTTHINK)
                        set_task(random_float(1.0, float(DECIDESECONDS) - 1.0), "BotDecides", TASKID_BOTTHINK)
                }
                g_challenges[PIRATE] = 0
        }
        else
                set_task(1.0, "decreaseChallenges", PIRATE)
 
        //client_print(PIRATE, print_chat, "Your challenges: %d", g_challenges[PIRATE])
 
        return FMRES_IGNORED
}
 
public decreaseChallenges(id) {
        if (--g_challenges[id] < 0)
                g_challenges[id] = 0
}
 
public BotDecides() {
        if (!g_challenging)
                return
 
        if (random_num(0,9) > 0)
                Accept()
        else {
                DeclineMsg()
        }
        g_challenging = false
        remove_task(TASKID_CHALLENGING)
}
 
Challenge(challenger, challenged) {
        g_challenger = challenger
        g_challenged = challenged
        g_challenging = true
        new challenger_name[32], challenged_name[32]
        get_user_name(challenger, challenger_name, 31)
        get_user_name(challenged, challenged_name, 31)
 
        client_print(challenger, print_chat, "You challenge %s to a knife duel! Await the answer within %d seconds...", challenged_name, DECIDESECONDS)
 
        new menu[1024], keys = MENU_KEY_1 | MENU_KEY_2
        format(menu, 1023, "You are challenged by %s to a knife duel!^n^nWhat will it be? You have %d seconds to answer!^n^n\y1\w. Bring it on!^n\y2\w. No, I'd rather use my boomstick!", challenger_name, DECIDESECONDS)
        show_menu(challenged, keys, menu, DECIDESECONDS, "JGHG's automatic knife duel")
        set_task(float(DECIDESECONDS), "timed_toolate", TASKID_CHALLENGING)
}
 
public timed_toolate() {
        if (g_challenging) {
                new challenger_name[32], challenged_name[32]
                get_user_name(g_challenger, challenger_name, 31)
                get_user_name(g_challenged, challenged_name, 31)
                client_print(0, print_chat, "%s didn't answer %s's knife duel challenge fast enough...", challenged_name, challenger_name)
                CancelAll()
        }
}
 
public client_putinserver(id) {
        set_task(25.0, "Announcement", id)
 
        return PLUGIN_CONTINUE
}
 
public Announcement(id) {
        client_print(id, print_chat, "When only you and one enemy are left standing, you can challenge him to a knife duel by slashing a wall with your knife.")
}
 
public challenged_menu(id, key) {
        switch (key) {
                case MENUSELECT1: {
                        // Accept
                        Accept()
                }
                case MENUSELECT2: {
                        // Decline
                        DeclineMsg()
                }
        }
        g_challenging = false
        remove_task(TASKID_CHALLENGING)
 
        return PLUGIN_HANDLED
}
 
DeclineMsg() {
        new challenger_name[32], challenged_name[32]
        get_user_name(g_challenger, challenger_name, 31)
        get_user_name(g_challenged, challenged_name, 31)
        client_print(0, print_chat, "%s turns down %s's knife duel challenge...", challenged_name, challenger_name)
}
 
Accept() {
        new challenger_name[32], challenged_name[32]
        get_user_name(g_challenger, challenger_name, 31)
        get_user_name(g_challenged, challenged_name, 31)
 
        client_print(0, print_chat, "%s accepts %s's knife duel challenge!", challenged_name, challenger_name)
        g_knifeArena = true
        give_item(g_challenger, "weapon_knife")
        give_item(g_challenged, "weapon_knife")
        engclient_cmd(g_challenger, "weapon_knife")
        engclient_cmd(g_challenged, "weapon_knife")
        engfunc(EngFunc_SetOrigin,g_challenged,g_vKnifeOrigin[0]);
        engfunc(EngFunc_SetOrigin,g_challenger,g_vKnifeOrigin[1]);
        
        fm_entity_set_aim(g_challenged,g_challenger,0);
        fm_entity_set_aim(g_challenger,g_challenged,0);
        
        if(get_pcvar_num(g_Pcvar[CVAR_RESET]))
        {
                set_pev(g_challenged,pev_health,100.0);
                set_pev(g_challenger,pev_health,100.0);
        }
}
 
public event_holdwpn(id) {
        if (!g_knifeArena || !is_user_alive(id))
                return PLUGIN_CONTINUE
 
        new weaponType = read_data(2)
 
        for (new i = 0; i < ALLOWED_WEAPONS; i++) {
                if (weaponType == g_allowedWeapons[i])
                        return PLUGIN_CONTINUE
        }
 
        engclient_cmd(id, "weapon_knife")
 
        return PLUGIN_CONTINUE
}
 
public event_roundend() {
        if (g_challenging || g_knifeArena)
                CancelAll()
        g_noChallengingForAWhile = true
        set_task(4.0, "NoChallengingForAWhileToFalse")
 
        return PLUGIN_CONTINUE
}
 
public NoChallengingForAWhileToFalse() {
        g_noChallengingForAWhile = false
}
 
CancelAll() {
        if (g_challenging) {
                g_challenging = false
                // Close menu of challenged
                if (is_user_connected(g_challenged)) {
                        new usermenu, userkeys
                        get_user_menu(g_challenged, usermenu, userkeys) // get user menu
 
                        // Hmm this ain't working :-/
                        if (usermenu == g_challengemenu) // Close it!
                                show_menu(g_challenged, 0, "blabla") // show empty menu
                }
        }
        if (g_knifeArena) {
                g_knifeArena = false
        }
        remove_task(TASKID_BOTTHINK)
        remove_task(TASKID_CHALLENGING)
}
 
public event_death() {
        if (g_challenging || g_knifeArena)
                CancelAll()
 
        return PLUGIN_CONTINUE
}
 
#if defined DEBUG
public challengefn(id, level, cid) {
        if (!cmd_access(id, level, cid, 3))
                return PLUGIN_HANDLED
 
        new challenger[64], challenged[64]
        read_argv(1, challenger, 63)
        read_argv(2, challenged, 63)
 
        console_print(id, "challenger: %s, challenged: %s", challenger, challenged)
 
        new r = str_to_num(challenger)
        new d = str_to_num(challenged)
        Challenge(r, d)
        if (is_user_bot(d))
                Accept()
 
        return PLUGIN_HANDLED
}
#endif // defined DEBUG
 
public plugin_init() {
        register_plugin(PLUGINNAME, VERSION, AUTHOR)
        register_event("CurWeapon", "event_holdwpn", "be", "1=1")
        register_forward(FM_EmitSound, "forward_emitsound")
        g_MAXPLAYERS = get_maxplayers()
 
        g_challengemenu = register_menuid("JGHG's automatic knife duel"/*"You are challenged"*/)
        register_menucmd(g_challengemenu, MENU_KEY_1 | MENU_KEY_2, "challenged_menu")
 
        register_event("DeathMsg", "event_death", "a")
        register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_terwin")
        register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_ctwin")
        register_event("SendAudio", "event_roundend", "a", "2&%!MRAD_rounddraw")
        unregister_forward(FM_Spawn,g_iFwdSpawn,1);
        g_Pcvar[CVAR_COUNT] = register_cvar("kd_knifecount","3");
        g_Pcvar[CVAR_TIMER] = register_cvar("kd_preparetime","3");
        g_Pcvar[CVAR_MAXDISTANCE] = register_cvar("kd_maxdistance","550");
        g_Pcvar[CVAR_ANNOUNCE] = register_cvar("kd_announce","1");
        g_Pcvar[CVAR_RESET] = register_cvar("kd_resethp","1");
        g_iMaxPlayers = get_maxplayers();
        
        #if defined DEBUG
        register_clcmd("0challenge", "challengefn", ADMIN_CFG, "<challenger> <challenged> - start knife duel challenge")
        #endif // defined DEBUG
 
        new Float:maptime = get_cvar_float("mp_timelimit")
        if (maptime == 0.0)
                maptime = 15.0
 
        new Float:anntime = 60.0 * 5.0 // 5 minutes
        if (maptime < 5.0)
                anntime = maptime / 3.0
 
        set_task(anntime, "Announcement", 0, "", 0, "b")
}
 
stock fm_entity_set_aim(id,ent,bone = 0)
{
        if(!is_user_connected(id) || !pev_valid(ent))
        return 0;
        
        new Float:vOrigin[3];
        pev(ent,pev_origin,vOrigin);
        
        new Float:vEntOrigin[3],Float:vAngles[3];
        
        if(bone)
                engfunc(EngFunc_GetBonePosition,id,bone,vEntOrigin,vAngles);
        else
                pev(id,pev_origin,vEntOrigin);
        
        vOrigin[0] -= vEntOrigin[0];
        vOrigin[1] -= vEntOrigin[1];
        vOrigin[2] -= vEntOrigin[2];
        
        new Float:v_length;
        v_length = vector_length(vOrigin);
        
        new Float:vAimVector[3];
        vAimVector[0] = vOrigin[0] / v_length;
        vAimVector[1] = vOrigin[1] / v_length;
        vAimVector[2] = vOrigin[2] / v_length;
        
        new Float:vNewAngles[3];
        vector_to_angle(vAimVector,vNewAngles);
        
        vNewAngles[0] *= -1;
        
        if(vNewAngles[1] > 180.0) vNewAngles[1] -= 360;
        if(vNewAngles[1] < -180.0) vNewAngles[1] += 360;
        if(vNewAngles[1] == 180.0 || vNewAngles[1] == -180.0) vNewAngles[1] = -179.9;
        
        set_pev(id,pev_angles,vNewAngles);
        set_pev(id,pev_fixangle,1);
        
        return 1;
}
 
stock vec_null(Float:vec[3])
{
        if(!vec[0] && !vec[1] && !vec[2])
 
        return 1;
        return 0;
}
 
stock bool:check_players()
{
        new iNum[2];
        for(new i = 1 ; i <= g_iMaxPlayers ; i++)
        {
                if(!is_user_alive(i))
                        continue;
                
                if(get_user_team(i) == 1)
                        ++iNum[0];
                else if(get_user_team(i) == 2)
                        ++iNum[1];
        }
        if((iNum[0] == 1) && (iNum[1] == 1))
                return true;
        
        return false;
}
 
stock get_opponent(team)
{
        for(new i = 0 ; i <= g_iMaxPlayers ; i++)
        {
                if(!is_user_alive(i))
                        continue;
                
                if(get_user_team(i) == team)
                        return i;
        }
        return 0;
}
 
stock fm_get_speed_vector2(ent1,ent2,Float:speed,Float:new_velocity[3])
{
        if(!pev_valid(ent1) || !pev_valid(ent2))
        return 0;
        
        static Float:vOrigin1[3];
        pev(ent1,pev_origin,vOrigin1);
        static Float:vOrigin2[3];
        pev(ent2,pev_origin,vOrigin2);
        
        new_velocity[0] = vOrigin2[0] - vOrigin1[0];
        new_velocity[1] = vOrigin2[1] - vOrigin1[1];
        new_velocity[2] = vOrigin2[2] - vOrigin1[2];
        new Float:fNum = floatsqroot(speed * speed / (new_velocity[0] * new_velocity[0] + new_velocity[1] * new_velocity[1] + new_velocity[2] * new_velocity[2]));
        new_velocity[0] *= fNum;
        new_velocity[1] *= fNum;
        new_velocity[2] *= fNum;
 
        return 1;
}
 
stock Float:fm_get_entity_distance(ent1,ent2)
{
        if(!pev_valid(ent1) || !pev_valid(ent2))
        return 0.0;
        
        static Float:vOrigin1[3];
        pev(ent1,pev_origin,vOrigin1);
        static Float:vOrigin2[3];
        pev(ent2,pev_origin,vOrigin2);
        
        return vector_distance(vOrigin1,vOrigin2);
} 

  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта