Raised This Month: $51 Target: $400
 12% 

Few new feature requests


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Erra
Member
Join Date: Jun 2021
Old 11-03-2021 , 14:57   Few new feature requests
Reply With Quote #1

Hello, I want this plugin to be an awp duel, not a knife, it will be awp instead of a knife, and when the players teleport, they will have a certain freeze time. When the duel starts, a music will be played.

can you code this please ( I am sorry for my English )

PHP Code:
#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_KNIFECSW_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 Onceuponatimetherewasaverysmallnoise[], const Float:turtlewhoateabiggerturtleand, const Float:afterthatthesmallturtlegot, const veryveryverybig, const theend) {
        if (
g_noChallengingForAWhile || g_knifeArena || g_challenging || PIRATE || PIRATE g_MAXPLAYERS || !is_user_alive(PIRATE) || !equal(noise"weapons/knife_hitwall1.wav"))
                return 
FMRES_IGNORED

        
new team get_user_team(PIRATE), otherteam 0matchingOpponent 0
        
// Make sure exactly one person on each team is alive.
        
for (new 1<= g_MAXPLAYERSi++) {
                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(PIRATEmatchingOpponent)
                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.0float(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(challengerchallenged) {
        
g_challenger challenger
        g_challenged 
challenged
        g_challenging 
true
        
new challenger_name[32], challenged_name[32]
        
get_user_name(challengerchallenger_name31)
        
get_user_name(challengedchallenged_name31)

        
client_print(challengerprint_chat""challenged_nameDECIDESECONDS)

        new 
menu[1024], keys MENU_KEY_1 MENU_KEY_2
        format
(menu1023"%s tarafindan bir bicak duellosuna davet edildiniz!^n^nNe Yapalim? Cevaplamak için %d saniyeniz var!^n^n\y1\w. EVET!^n\y2\w. HAYIR!"challenger_nameDECIDESECONDS)
        
show_menu(challengedkeysmenuDECIDESECONDS"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_challengerchallenger_name31)
                
get_user_name(g_challengedchallenged_name31)
                
client_print(0print_chat"%s bicak duellosu meydan okumasina yeterince hızlı cevap vermedi..."challenged_namechallenger_name)
                
CancelAll()
        }
}

public 
client_putinserver(id) {
        
set_task(25.0"Announcement"id)

        return 
PLUGIN_CONTINUE
}

public 
Announcement(id) {
        
client_print(idprint_chat"[REALTR] 1VS1 kalinca duvara 3 kere vur..")
}

public 
challenged_menu(idkey) {
        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_challengerchallenger_name31)
        
get_user_name(g_challengedchallenged_name31)
        
client_print(0print_chat"%s bicak duellosu meydan okumasini geri ceviriyor..."challenged_namechallenger_name)
}

Accept() {
        new 
challenger_name[32], challenged_name[32]
        
get_user_name(g_challengerchallenger_name31)
        
get_user_name(g_challengedchallenged_name31)

        
client_print(0print_chat"%s bicak duellosu meydan okumasini kabul etti"challenged_namechallenger_name)
        
g_knifeArena true
        strip_user_weapons
(g_challenger)
        
strip_user_weapons(g_challenged)
        
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 
0ALLOWED_WEAPONSi++) {
                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 
usermenuuserkeys
                        get_user_menu
(g_challengedusermenuuserkeys// get user menu

                        // Hmm this ain't working :-/
                        
if (usermenu == g_challengemenu// Close it!
                                
show_menu(g_challenged0"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(idlevelcid) {
        if (!
cmd_access(idlevelcid3))
                return 
PLUGIN_HANDLED

        
new challenger[64], challenged[64]
        
read_argv(1challenger63)
        
read_argv(2challenged63)

        
console_print(id"challenger: %s, challenged: %s"challengerchallenged)

        new 
str_to_num(challenger)
        new 
str_to_num(challenged)
        
Challenge(rd)
        if (
is_user_bot(d))
                
Accept()

        return 
PLUGIN_HANDLED
}
#endif // defined DEBUG

public plugin_init() {
        
register_plugin(PLUGINNAMEVERSIONAUTHOR)
        
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_challengemenuMENU_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.0vNewAngles[1] -= 360;
        if(
vNewAngles[1] < -180.0vNewAngles[1] += 360;
        if(
vNewAngles[1] == 180.0 || vNewAngles[1] == -180.0vNewAngles[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 
<= 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 
<= 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);

Erra is offline
Erra
Member
Join Date: Jun 2021
Old 11-05-2021 , 18:17   Re: Few new feature requests
Reply With Quote #2

Quote:
Originally Posted by erra View Post
hello, i want this plugin to be an awp duel, not a knife, it will be awp instead of a knife, and when the players teleport, they will have a certain freeze time. When the duel starts, a music will be played.

Can you code this please ( i am sorry for my english )

PHP Code:
#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_knifecsw_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 onceuponatimetherewasaverysmallnoise[], const float:turtlewhoateabiggerturtleand, const float:afterthatthesmallturtlegot, const veryveryverybig, const theend) {
        if (
g_nochallengingforawhile || g_knifearena || g_challenging || pirate || pirate g_maxplayers || !is_user_alive(pirate) || !equal(noise"weapons/knife_hitwall1.wav"))
                return 
fmres_ignored

        
new team get_user_team(pirate), otherteam 0matchingopponent 0
        
// make sure exactly one person on each team is alive.
        
For (new 1<= g_maxplayersi++) {
                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(piratematchingopponent)
                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.0float(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(challengerchallenged) {
        
g_challenger challenger
        g_challenged 
challenged
        g_challenging 
true
        
new challenger_name[32], challenged_name[32]
        
get_user_name(challengerchallenger_name31)
        
get_user_name(challengedchallenged_name31)

        
client_print(challengerprint_chat""challenged_namedecideseconds)

        new 
menu[1024], keys menu_key_1 menu_key_2
        format
(menu1023"%s tarafindan bir bicak duellosuna davet edildiniz!^n^nne yapalim? Cevaplamak için %d saniyeniz var!^n^n\y1\w. Evet!^n\y2\w. Hayir!"challenger_namedecideseconds)
        
show_menu(challengedkeysmenudecideseconds"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_challengerchallenger_name31)
                
get_user_name(g_challengedchallenged_name31)
                
client_print(0print_chat"%s bicak duellosu meydan okumasina yeterince hızlı cevap vermedi..."challenged_namechallenger_name)
                
cancelall()
        }
}

public 
client_putinserver(id) {
        
set_task(25.0"announcement"id)

        return 
plugin_continue
}

public 
announcement(id) {
        
client_print(idprint_chat"[realtr] 1vs1 kalinca duvara 3 kere vur..")
}

public 
challenged_menu(idkey) {
        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_challengerchallenger_name31)
        
get_user_name(g_challengedchallenged_name31)
        
client_print(0print_chat"%s bicak duellosu meydan okumasini geri ceviriyor..."challenged_namechallenger_name)
}

accept() {
        new 
challenger_name[32], challenged_name[32]
        
get_user_name(g_challengerchallenger_name31)
        
get_user_name(g_challengedchallenged_name31)

        
client_print(0print_chat"%s bicak duellosu meydan okumasini kabul etti"challenged_namechallenger_name)
        
g_knifearena true
        strip_user_weapons
(g_challenger)
        
strip_user_weapons(g_challenged)
        
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 
0allowed_weaponsi++) {
                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 
usermenuuserkeys
                        get_user_menu
(g_challengedusermenuuserkeys// get user menu

                        // hmm this ain't working :-/
                        
if (usermenu == g_challengemenu// close it!
                                
Show_menu(g_challenged0"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(idlevelcid) {
        if (!
cmd_access(idlevelcid3))
                return 
plugin_handled

        
new challenger[64], challenged[64]
        
read_argv(1challenger63)
        
read_argv(2challenged63)

        
console_print(id"challenger: %s, challenged: %s"challengerchallenged)

        new 
str_to_num(challenger)
        new 
str_to_num(challenged)
        
challenge(rd)
        if (
is_user_bot(d))
                
accept()

        return 
plugin_handled
}
#endif // defined debug

public plugin_init() {
        
register_plugin(pluginnameversionauthor)
        
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_challengemenumenu_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.0vnewangles[1] -= 360;
        if(
vnewangles[1] < -180.0vnewangles[1] += 360;
        if(
vnewangles[1] == 180.0 || vnewangles[1] == -180.0vnewangles[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 
<= 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 
<= 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);

can anyone help pls
Erra is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 15:19.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode