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

RSSFew new feature requests


MYGO.pl
 Udostępnij

Rekomendowane odpowiedzi

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


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