Mine sisusse
Otsi siit
  • Rohkem valikuid...
Otsi tulemusi mis sisaldab...
Otsi tulemusi...

Plugina muutmine.

Soovitatud postitused

Kas keegi viitsiks all oleva plugina muuta ümer niimoodi, et seda saaks kasutada inimesed, kellel immunity on.

//#define engine

#include 
#include 
#include 
#if defined engine
#include 
#else
#include 
#endif

#define ADMIN_LEVEL_Q    ADMIN_LEVEL_C

//Used for Grab
new maxplayers
new grab[33]
new Float:grab_totaldis[33]
new grab_speed_cvar
new grab_enabled_cvar
new bool:has_grab[33]

//Used for Hook
new bool:hook[33]
new hook_to[33][3]
new hook_speed_cvar
new hook_enabled_cvar
new bool:has_hook[33]

//Used for Rope
new bool:rope[33]
new rope_to[33][3]
new Float:rope_totaldis[33]
new rope_speed_cvar
new rope_enabled_cvar
new bool:has_rope[33]

//Used for All
new beamsprite


/****************************
Register Commands and CVARs
****************************/

public plugin_init()
{
   register_plugin("Grab + Hook + Rope","1.0","GHW_Chronic")
   register_concmd("+grab","grab_on",ADMIN_LEVEL_Q," - Use: bind key +grab")
   register_concmd("-grab","grab_off")
   register_concmd("grab_toggle","grab_toggle",ADMIN_LEVEL_Q,"Toggles your grab on and off")
   register_concmd("+hook","hook_on",ADMIN_LEVEL_Q," - Use: bind key +hook")
   register_concmd("-hook","hook_off")
   register_concmd("hook_toggle","hook_toggle",ADMIN_LEVEL_Q,"Toggles your hook on and off")
   register_concmd("+rope","rope_on",ADMIN_LEVEL_Q," - Use: bind key +rope")
   register_concmd("-rope","rope_off")
   register_concmd("rope_toggle","rope_toggle",ADMIN_LEVEL_Q,"Toggles your rope on and off")

   register_concmd("amx_give_grab","cmd_givetake",ADMIN_LEVEL_Q,"Give a player the ability to grab ")
   register_concmd("amx_give_hook","cmd_givetake",ADMIN_LEVEL_Q,"Give a player the ability to hook ")
   register_concmd("amx_give_rope","cmd_givetake",ADMIN_LEVEL_Q,"Give a player the ability to rope ")

   register_concmd("amx_take_grab","cmd_givetake",ADMIN_LEVEL_Q,"Take a player's ability to grab ")
   register_concmd("amx_take_hook","cmd_givetake",ADMIN_LEVEL_Q,"Take a player's ability to hook ")
   register_concmd("amx_take_rope","cmd_givetake",ADMIN_LEVEL_Q,"Take a player's ability to rope ")

   register_concmd("amx_ghr_menu","menu_cmd",ADMIN_LEVEL_Q,"Shows a menu that allows you to turn on/off non-admin use of grab, hook, or rope")

   register_menucmd(register_menuid("ghr_menu"),(1
   grab_speed_cvar = register_cvar("grab_speed","5")
   grab_enabled_cvar = register_cvar("grab_enabled","0")

   hook_speed_cvar = register_cvar("hook_speed","5")
   hook_enabled_cvar = register_cvar("hook_enabled","0")

   rope_speed_cvar = register_cvar("rope_speed","5")
   rope_enabled_cvar = register_cvar("rope_enabled","0")

   maxplayers = get_maxplayers()

   //CVAR that is only used for tracking servers that use this plugin.
   register_cvar("GHW_GHW","1",FCVAR_SERVER)
}


/**********************************
Register beam sprite + Hook Sound
**********************************/

public plugin_precache()
{
   beamsprite = precache_model("sprites/dot.spr")
   precache_sound("weapons/xbow_hit2.wav")
   precache_sound("weapons/xbow_fire1.wav")
}


/*****************************
Reset VARs on client connect
*****************************/

public client_putinserver(id)
{
   has_grab[id]=false
   has_hook[id]=false
   has_rope[id]=false
}


/*****
Menu
*****/

public menu_cmd(id,level,cid)
{
   if(cmd_access(id,level,cid,1))
   {
       show_ghr(id)
       console_print(id,"[AMXX] Menu launched.")
   }
}

public show_ghr(id)
{
   static aaa[32]
   static bbb[32]
   static ccc[32]
   if(get_pcvar_num(grab_enabled_cvar)==0) format(aaa,31,"No")
   else format(aaa,31,"Yes")
   if(get_pcvar_num(hook_enabled_cvar)==0) format(bbb,31,"No")
   else format(bbb,31,"Yes")
   if(get_pcvar_num(rope_enabled_cvar)==0) format(ccc,31,"No")
   else format(ccc,31,"Yes")

   new menuBody[576]

   if(colored_menus())
   {
       new len = format(menuBody,575,"\bAllow Players To Use:^n^n")
       len += format(menuBody[len],575-len, "\w1. Grab\R\w%s^n",aaa)
       len += format(menuBody[len],575-len, "\w2. Hook\R\w%s^n",bbb)
       len += format(menuBody[len],575-len, "\w3. Rope\R\w%s^n",ccc)
       len += format(menuBody[len],575-len, "\r0. Exit")
   }
   else
   {
       new len = format(menuBody,575,"Allow Players To Use:^n^n")
       len += format(menuBody[len],575-len, "1. Grab\R%s^n",aaa)
       len += format(menuBody[len],575-len, "2. Hook\R%s^n",bbb)
       len += format(menuBody[len],575-len, "3. Rope\R%s^n",ccc)
       len += format(menuBody[len],575-len, "0. Exit")
   }
   show_menu(id,(1
   return PLUGIN_CONTINUE
}

public Pressedghr(id,key)
{
   switch(key)
   {
       case 0:
       {
           if(get_pcvar_num(grab_enabled_cvar)==0)
           {
               set_pcvar_num(grab_enabled_cvar,1)
               client_print(0,print_chat,"[AMXX] Admin has enabled Grab for all clients. Use: bind key +grab")
           }
           else
           {
               set_pcvar_num(grab_enabled_cvar,0)
               client_print(0,print_chat,"[AMXX] Admin has disabled Grab for all non-admins.")
           }
           show_ghr(id)
       }
       case 1:
       {
           if(get_pcvar_num(hook_enabled_cvar)==0)
           {
               set_pcvar_num(hook_enabled_cvar,1)
               client_print(0,print_chat,"[AMXX] Admin has enabled Hook for all clients. Use: bind key +hook")
           }
           else
           {
               set_pcvar_num(hook_enabled_cvar,0)
               client_print(0,print_chat,"[AMXX] Admin has disabled Hook for all non-admins.")
           }
           show_ghr(id)
       }
       case 2:
       {
           if(get_pcvar_num(rope_enabled_cvar)==0)
           {
               set_pcvar_num(rope_enabled_cvar,1)
               client_print(0,print_chat,"[AMXX] Admin has enabled Rope for all clients. Use: bind key +rope")
           }
           else
           {
               set_pcvar_num(rope_enabled_cvar,0)
               client_print(0,print_chat,"[AMXX] Admin has disabled Rope for all non-admins.")
           }
           show_ghr(id)
       }
   }
}


/****************
Handle Commands
****************/

public cmd_givetake(id,level,cid)
{
   if(!cmd_access(id,level,cid,2))
   {
       return PLUGIN_HANDLED
   }

   new arg1[32]
   read_argv(1,arg1,31)

   new target = cmd_target(id,arg1,9)
   if(!target)
   {
       return PLUGIN_HANDLED
   }

   new name[32]
   get_user_name(target,name,31)
   if(get_user_flags(target) & ADMIN_LEVEL_Q)
   {
       console_print(id,"[AMXX] Cannot give/take grab/hook/rope from admin %s.",name)
       return PLUGIN_HANDLED
   }

   new arg0[32]
   read_argv(0,arg0,31)
   if(containi(arg0,"give")!=-1)
   {
       if(containi(arg0,"grab")!=-1)
       {
           if(has_grab[target])
           {
               console_print(id,"[AMXX] %s already has grab",name)
           }
           else
           {
               has_grab[target]=true
               console_print(id,"[AMXX] %s has been given grab",name)
               client_print(target,print_chat,"[AMXX] An admin has given you grab. Use: bind key +grab")
           }
       }
       else if(containi(arg0,"hook")!=-1)
       {
           if(has_hook[target])
           {
               console_print(id,"[AMXX] %s already has hook",name)
           }
           else
           {
               has_hook[target]=true
               console_print(id,"[AMXX] %s has been given hook",name)
               client_print(target,print_chat,"[AMXX] An admin has given you hook. Use: bind key +hook")
           }
       }
       else if(containi(arg0,"rope")!=-1)
       {
           if(has_rope[target])
           {
               console_print(id,"[AMXX] %s already has rope",name)
           }
           else
           {
               has_rope[target]=true
               console_print(id,"[AMXX] %s has been given rope",name)
               client_print(target,print_chat,"[AMXX] An admin has given you hook. Use: bind key +rope")
           }
       }
   }
   if(containi(arg0,"take")!=-1)
   {
       if(containi(arg0,"grab")!=-1)
       {
           if(!has_grab[target])
           {
               console_print(id,"[AMXX] %s doesn't have grab",name)
           }
           else
           {
               has_grab[target]=false
               console_print(id,"[AMXX] %s's grab has been taken away.",name)
               client_print(target,print_chat,"[AMXX] An admin has taken your grab away.")
           }
       }
       if(containi(arg0,"hook")!=-1)
       {
           if(!has_hook[target])
           {
               console_print(id,"[AMXX] %s doesn't have hook",name)
           }
           else
           {
               has_hook[target]=false
               console_print(id,"[AMXX] %s's hook has been taken away.",name)
               client_print(target,print_chat,"[AMXX] An admin has taken your hook away.")
           }
       }
       if(containi(arg0,"rope")!=-1)
       {
           if(!has_rope[target])
           {
               console_print(id,"[AMXX] %s doesn't have rope",name)
           }
           else
           {
               has_rope[target]=false
               console_print(id,"[AMXX] %s's rope has been taken away.",name)
               client_print(target,print_chat,"[AMXX] An admin has taken your rope away.")
           }
       }
   }
   return PLUGIN_HANDLED
}


/*****
Grab
*****/

public grab_toggle(id,level,cid)
{
   if(grab[id]) grab_off(id)
   else grab_on(id,level,cid)
   return PLUGIN_HANDLED
}

public grab_on(id,level,cid)
{
   if(!has_grab[id] && !get_pcvar_num(grab_enabled_cvar) && !cmd_access(id,level,cid,1))
   {
       return PLUGIN_HANDLED
   }
   if(grab[id])
   {
       return PLUGIN_HANDLED
   }
   grab[id]=-1
   static target, trash
   target=0
   get_user_aiming(id,target,trash)
   if(target && is_valid_ent2(target) && target!=id)
   {
       if(target        {
           if(is_user_alive(target) && !(get_user_flags(target) & ADMIN_IMMUNITY))
           {
               client_print(id,print_chat,"[AMXX] Found Target")
               grabem(id,target)
           }
       }
       else if(get_solidity(target)!=4)
       {
           client_print(id,print_chat,"[AMXX] Found Target")
           grabem(id,target)
       }
   }
   else
   {
       client_print(id,print_chat,"[AMXX] Searching for Target")
       set_task(0.1,"grab_on2",id)
   }
   return PLUGIN_HANDLED
}

public grab_on2(id)
{
   if(is_user_connected(id))
   {
       static target, trash
       target=0
       get_user_aiming(id,target,trash)
       if(target && is_valid_ent2(target) && target!=id)
       {
           if(target            {
               if(is_user_alive(target) && !(get_user_flags(target) & ADMIN_IMMUNITY))
               {
                   client_print(id,print_chat,"[AMXX] Found Target")
                   grabem(id,target)
               }
           }
           else if(get_solidity(target)!=4)
           {
               client_print(id,print_chat,"[AMXX] Found Target")
               grabem(id,target)
           }
       }
       else
       {
           set_task(0.1,"grab_on2",id)
       }
   }
}

public grabem(id,target)
{
   grab[id]=target
   set_rendering2(target,kRenderFxGlowShell,255,0,0,kRenderTransAlpha,70)
   if(target    grab_totaldis[id] = 0.0
   set_task(0.1,"grab_prethink",id+1000,"",0,"b")
   grab_prethink(id+1000)
   emit_sound(id,CHAN_VOICE,"weapons/xbow_fire1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}

public grab_off(id)
{
   if(is_user_connected(id))
   {
       if(grab[id]==-1)
       {
           client_print(id,print_chat,"[AMXX] No Target Found")
           grab[id]=0
       }
       else if(grab[id])
       {
           client_print(id,print_chat,"[AMXX] Target Released")
           set_rendering2(grab[id])
           if(grab[id]            grab[id]=0
       }
   }
   return PLUGIN_HANDLED
}

public grab_prethink(id)
{
   id -= 1000
   if(!is_user_connected(id) && grab[id]>0)
   {
       set_rendering2(grab[id])
       if(grab[id]        grab[id]=0
   }
   if(!grab[id] || grab[id]==-1)
   {
       remove_task(id+1000)
       return PLUGIN_HANDLED
   }

   //Get Id's, target's, and Where Id is looking's origins
   static origin1[3]
   get_user_origin(id,origin1)
   static Float:origin2_F[3], origin2[3]
   get_origin(grab[id],origin2_F)
   origin2[0] = floatround(origin2_F[0])
   origin2[1] = floatround(origin2_F[1])
   origin2[2] = floatround(origin2_F[2])
   static origin3[3]
   get_user_origin(id,origin3,3)

   //Create red beam
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(1)        //TE_BEAMENTPOINT
   write_short(id)        // start entity
   write_coord(origin2[0])
   write_coord(origin2[1])
   write_coord(origin2[2])
   write_short(beamsprite)
   write_byte(1)        // framestart
   write_byte(1)        // framerate
   write_byte(1)        // life in 0.1's
   write_byte(5)        // width
   write_byte(0)        // noise
   write_byte(255)        // red
   write_byte(0)        // green
   write_byte(0)        // blue
   write_byte(200)        // brightness
   write_byte(0)        // speed
   message_end()

   //Convert to floats for calculation
   static Float:origin1_F[3]
   static Float:origin3_F[3]
   origin1_F[0] = float(origin1[0])
   origin1_F[1] = float(origin1[1])
   origin1_F[2] = float(origin1[2])
   origin3_F[0] = float(origin3[0])
   origin3_F[1] = float(origin3[1])
   origin3_F[2] = float(origin3[2])

   //Calculate target's new velocity
   static Float:distance[3]

   if(!grab_totaldis[id])
   {
       distance[0] = floatabs(origin1_F[0] - origin2_F[0])
       distance[1] = floatabs(origin1_F[1] - origin2_F[1])
       distance[2] = floatabs(origin1_F[2] - origin2_F[2])
       grab_totaldis[id] = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2])
   }
   distance[0] = origin3_F[0] - origin1_F[0]
   distance[1] = origin3_F[1] - origin1_F[1]
   distance[2] = origin3_F[2] - origin1_F[2]

   static Float:grab_totaldis2
   grab_totaldis2 = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2])

   static Float:que
   que = grab_totaldis[id] / grab_totaldis2

   static Float:origin4[3]
   origin4[0] = ( distance[0] * que ) + origin1_F[0]
   origin4[1] = ( distance[1] * que ) + origin1_F[1]
   origin4[2] = ( distance[2] * que ) + origin1_F[2]

   static Float:velocity[3]
   velocity[0] = (origin4[0] - origin2_F[0]) * (get_pcvar_float(grab_speed_cvar) / 1.666667)
   velocity[1] = (origin4[1] - origin2_F[1]) * (get_pcvar_float(grab_speed_cvar) / 1.666667)
   velocity[2] = (origin4[2] - origin2_F[2]) * (get_pcvar_float(grab_speed_cvar) / 1.666667)

   set_velo(grab[id],velocity)

   return PLUGIN_CONTINUE
}


/*****
Hook
*****/

public hook_toggle(id,level,cid)
{
   if(hook[id]) hook_off(id)
   else hook_on(id,level,cid)
   return PLUGIN_HANDLED
}

public hook_on(id,level,cid)
{
   if(!has_hook[id] && !get_pcvar_num(hook_enabled_cvar) && !cmd_access(id,level,cid,1))
   {
       return PLUGIN_HANDLED
   }
   if(hook[id])
   {
       return PLUGIN_HANDLED
   }
   set_user_gravity(id,0.0)
   set_task(0.1,"hook_prethink",id+10000,"",0,"b")
   hook[id]=true
   hook_to[id][0]=999999
   hook_prethink(id+10000)
   emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
   return PLUGIN_HANDLED
}

public hook_off(id)
{
   if(is_user_alive(id)) set_user_gravity(id)
   hook[id]=false
   return PLUGIN_HANDLED
}

public hook_prethink(id)
{
   id -= 10000
   if(!is_user_alive(id))
   {
       hook[id]=false
   }
   if(!hook[id])
   {
       remove_task(id+10000)
       return PLUGIN_HANDLED
   }

   //Get Id's origin
   static origin1[3]
   get_user_origin(id,origin1)

   if(hook_to[id][0]==999999)
   {
       static origin2[3]
       get_user_origin(id,origin2,3)
       hook_to[id][0]=origin2[0]
       hook_to[id][1]=origin2[1]
       hook_to[id][2]=origin2[2]
   }

   //Create blue beam
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(1)        //TE_BEAMENTPOINT
   write_short(id)        // start entity
   write_coord(hook_to[id][0])
   write_coord(hook_to[id][1])
   write_coord(hook_to[id][2])
   write_short(beamsprite)
   write_byte(1)        // framestart
   write_byte(1)        // framerate
   write_byte(2)        // life in 0.1's
   write_byte(5)        // width
   write_byte(0)        // noise
   write_byte(0)        // red
   write_byte(0)        // green
   write_byte(255)        // blue
   write_byte(200)        // brightness
   write_byte(0)        // speed
   message_end()

   //Calculate Velocity
   static Float:velocity[3]
   velocity[0] = (float(hook_to[id][0]) - float(origin1[0])) * 3.0
   velocity[1] = (float(hook_to[id][1]) - float(origin1[1])) * 3.0
   velocity[2] = (float(hook_to[id][2]) - float(origin1[2])) * 3.0

   static Float:y
   y = velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2]

   static Float:x
   x = (get_pcvar_float(hook_speed_cvar) * 120.0) / floatsqroot(y)

   velocity[0] *= x
   velocity[1] *= x
   velocity[2] *= x

   set_velo(id,velocity)

   return PLUGIN_CONTINUE
}


/*****
Rope
*****/

public rope_toggle(id,level,cid)
{
   if(rope[id]) rope_off(id)
   else rope_on(id,level,cid)
   return PLUGIN_HANDLED
}

public rope_on(id,level,cid)
{
   if(!has_rope[id] && !get_pcvar_num(rope_enabled_cvar) && !cmd_access(id,level,cid,1))
   {
       return PLUGIN_HANDLED
   }
   if(rope[id])
   {
       return PLUGIN_HANDLED
   }
   set_task(0.1,"rope_prethink",id+100000,"",0,"b")
   rope[id]=true
   rope_to[id][0]=999999
   rope_prethink(id+100000)
   emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
   return PLUGIN_HANDLED
}

public rope_off(id)
{
   rope[id]=false
   return PLUGIN_HANDLED
}

public rope_prethink(id)
{
   id -= 100000
   if(!is_user_alive(id))
   {
       rope[id]=false
   }
   if(!rope[id])
   {
       remove_task(id+100000)
       return PLUGIN_HANDLED
   }

   //Get Id's origin
   static origin1[3]
   get_user_origin(id,origin1)

   static Float:origin1_F[3]
   origin1_F[0] = float(origin1[0])
   origin1_F[1] = float(origin1[1])
   origin1_F[2] = float(origin1[2])

   //Check to see if this is the first time prethink is being run
   if(rope_to[id][0]==999999)
   {
       static origin2[3]
       get_user_origin(id,origin2,3)
       rope_to[id][0]=origin2[0]
       rope_to[id][1]=origin2[1]
       rope_to[id][2]=origin2[2]

       static Float:origin2_F[3]
       origin2_F[0] = float(origin2[0])
       origin2_F[1] = float(origin2[1])
       origin2_F[2] = float(origin2[2])

       static Float:distance[3]
       distance[0] = floatabs(origin1_F[0] - origin2_F[0])
       distance[1] = floatabs(origin1_F[1] - origin2_F[1])
       distance[2] = floatabs(origin1_F[2] - origin2_F[2])
       rope_totaldis[id] = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2])
   }

   //Create green beam
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(1)        //TE_BEAMENTPOINT
   write_short(id)        // start entity
   write_coord(rope_to[id][0])
   write_coord(rope_to[id][1])
   write_coord(rope_to[id][2])
   write_short(beamsprite)
   write_byte(1)        // framestart
   write_byte(1)        // framerate
   write_byte(1)        // life in 0.1's
   write_byte(5)        // width
   write_byte(0)        // noise
   write_byte(0)        // red
   write_byte(255)        // green
   write_byte(0)        // blue
   write_byte(200)        // brightness
   write_byte(0)        // speed
   message_end()

   //Calculate Velocity
   static Float:velocity[3]
   get_velo(id,velocity)

   static Float:velocity2[3]
   velocity2[0] = (rope_to[id][0] - origin1_F[0]) * 3.0
   velocity2[1] = (rope_to[id][1] - origin1_F[1]) * 3.0

   static Float:y
   y = velocity2[0]*velocity2[0] + velocity2[1]*velocity2[1]

   static Float:x
   x = (get_pcvar_float(rope_speed_cvar) * 20.0) / floatsqroot(y)

   velocity[0] += velocity2[0]*x
   velocity[1] += velocity2[1]*x

   if(rope_to[id][2] - origin1_F[2] >= rope_totaldis[id] && velocity[2]
   set_velo(id,velocity)

   return PLUGIN_CONTINUE
}

public get_origin(ent,Float:origin[3])
{
#if defined engine
   return entity_get_vector(id,EV_VEC_origin,origin)
#else
   return pev(ent,pev_origin,origin)
#endif
}

public set_velo(id,Float:velocity[3])
{
#if defined engine
   return set_user_velocity(id,velocity)
#else
   return set_pev(id,pev_velocity,velocity)
#endif
}

public get_velo(id,Float:velocity[3])
{
#if defined engine
   return get_user_velocity(id,velocity)
#else
   return pev(id,pev_velocity,velocity)
#endif
}

public is_valid_ent2(ent)
{
#if defined engine
   return is_valid_ent(ent)
#else
   return pev_valid(ent)
#endif
}

public get_solidity(ent)
{
#if defined engine
   return entity_get_int(ent,EV_INT_solid)
#else
   return pev(ent,pev_solid)
#endif
}

stock set_rendering2(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
#if defined engine
   return set_rendering(index,fx,r,g,b,render,amount)
#else
   set_pev(index, pev_renderfx, fx);
   new Float:RenderColor[3];
   RenderColor[0] = float(r);
   RenderColor[1] = float(g);
   RenderColor[2] = float(b);
   set_pev(index, pev_rendercolor, RenderColor);
   set_pev(index, pev_rendermode, render);
   set_pev(index, pev_renderamt, float(amount));
   return 1;
#endif
}

Jaga seda postitust


Postituse link
Share on other sites

Aga palun, arvan, et ADMIN_IMMUNITY on õige kui pole palun paranda viga.

//#define engine


#include 
#include 
#include 
#if defined engine
#include 
#else
#include 
#endif


#define ADMIN_LEVEL_Q    ADMIN_LEVEL_C


//Used for Grab
new maxplayers
new grab[33]
new Float:grab_totaldis[33]
new grab_speed_cvar
new grab_enabled_cvar
new bool:has_grab[33]


//Used for Hook
new bool:hook[33]
new hook_to[33][3]
new hook_speed_cvar
new hook_enabled_cvar
new bool:has_hook[33]


//Used for Rope
new bool:rope[33]
new rope_to[33][3]
new Float:rope_totaldis[33]
new rope_speed_cvar
new rope_enabled_cvar
new bool:has_rope[33]


//Used for All
new beamsprite




/****************************
Register Commands and CVARs
****************************/


public plugin_init()
{
   register_plugin("Grab + Hook + Rope","1.0","GHW_Chronic")
   register_concmd("+grab","grab_on",ADMIN_IMMUNITY," - Use: bind key +grab")
   register_concmd("-grab","grab_off")
   register_concmd("grab_toggle","grab_toggle",ADMIN_IMMUNITY,"Toggles your grab on and off")
   register_concmd("+hook","hook_on",ADMIN_IMMUNITY," - Use: bind key +hook")
   register_concmd("-hook","hook_off")
   register_concmd("hook_toggle","hook_toggle",ADMIN_IMMUNITY,"Toggles your hook on and off")
   register_concmd("+rope","rope_on",ADMIN_IMMUNITY," - Use: bind key +rope")
   register_concmd("-rope","rope_off")
   register_concmd("rope_toggle","rope_toggle",ADMIN_IMMUNITY,"Toggles your rope on and off")


   register_concmd("amx_give_grab","cmd_givetake",ADMIN_IMMUNITY,"Give a player the ability to grab ")
   register_concmd("amx_give_hook","cmd_givetake",ADMIN_IMMUNITY,"Give a player the ability to hook ")
   register_concmd("amx_give_rope","cmd_givetake",ADMIN_IMMUNITY,"Give a player the ability to rope ")


   register_concmd("amx_take_grab","cmd_givetake",ADMIN_IMMUNITY,"Take a player's ability to grab ")
   register_concmd("amx_take_hook","cmd_givetake",ADMIN_IMMUNITY,"Take a player's ability to hook ")
   register_concmd("amx_take_rope","cmd_givetake",ADMIN_IMMUNITY,"Take a player's ability to rope ")

Jaga seda postitust


Postituse link
Share on other sites

Proovi ksa töötab

 

//#define engine

#include 
#include 
#include 
#if defined engine
#include 
#else
#include 
#endif

#define ADMIN_LEVEL_A    ADMIN_LEVEL_A

//Used for Grab
new maxplayers
new grab[33]
new Float:grab_totaldis[33]
new grab_speed_cvar
new grab_enabled_cvar
new bool:has_grab[33]

//Used for Hook
new bool:hook[33]
new hook_to[33][3]
new hook_speed_cvar
new hook_enabled_cvar
new bool:has_hook[33]

//Used for Rope
new bool:rope[33]
new rope_to[33][3]
new Float:rope_totaldis[33]
new rope_speed_cvar
new rope_enabled_cvar
new bool:has_rope[33]

//Used for All
new beamsprite


/****************************
Register Commands and CVARs
****************************/

public plugin_init()
{
   register_plugin("Grab + Hook + Rope","1.0","GHW_Chronic")
   register_concmd("+grab","grab_on",ADMIN_LEVEL_A," - Use: bind key +grab")
   register_concmd("-grab","grab_off")
   register_concmd("grab_toggle","grab_toggle",ADMIN_LEVEL_A,"Toggles your grab on and off")
   register_concmd("+hook","hook_on",ADMIN_LEVEL_A," - Use: bind key +hook")
   register_concmd("-hook","hook_off")
   register_concmd("hook_toggle","hook_toggle",ADMIN_LEVEL_A,"Toggles your hook on and off")
   register_concmd("+rope","rope_on",ADMIN_LEVEL_A," - Use: bind key +rope")
   register_concmd("-rope","rope_off")
   register_concmd("rope_toggle","rope_toggle",ADMIN_LEVEL_A,"Toggles your rope on and off")

   register_concmd("amx_give_grab","cmd_givetake",ADMIN_LEVEL_A,"Give a player the ability to grab ")
   register_concmd("amx_give_hook","cmd_givetake",ADMIN_LEVEL_A,"Give a player the ability to hook ")
   register_concmd("amx_give_rope","cmd_givetake",ADMIN_LEVEL_A,"Give a player the ability to rope ")

   register_concmd("amx_take_grab","cmd_givetake",ADMIN_LEVEL_A,"Take a player's ability to grab ")
   register_concmd("amx_take_hook","cmd_givetake",ADMIN_LEVEL_A,"Take a player's ability to hook ")
   register_concmd("amx_take_rope","cmd_givetake",ADMIN_LEVEL_A,"Take a player's ability to rope ")

   register_concmd("amx_ghr_menu","menu_cmd",ADMIN_LEVEL_A,"Shows a menu that allows you to turn on/off non-admin use of grab, hook, or rope")

   register_menucmd(register_menuid("ghr_menu"),(1
   grab_speed_cvar = register_cvar("grab_speed","5")
   grab_enabled_cvar = register_cvar("grab_enabled","0")

   hook_speed_cvar = register_cvar("hook_speed","5")
   hook_enabled_cvar = register_cvar("hook_enabled","0")

   rope_speed_cvar = register_cvar("rope_speed","5")
   rope_enabled_cvar = register_cvar("rope_enabled","0")

   maxplayers = get_maxplayers()

   //CVAR that is only used for tracking servers that use this plugin.
   register_cvar("GHW_GHW","1",FCVAR_SERVER)
}


/**********************************
Register beam sprite + Hook Sound
**********************************/

public plugin_precache()
{
   beamsprite = precache_model("sprites/dot.spr")
   precache_sound("weapons/xbow_hit2.wav")
   precache_sound("weapons/xbow_fire1.wav")
}


/*****************************
Reset VARs on client connect
*****************************/

public client_putinserver(id)
{
   has_grab[id]=false
   has_hook[id]=false
   has_rope[id]=false
}


/*****
Menu
*****/

public menu_cmd(id,level,cid)
{
   if(cmd_access(id,level,cid,1))
   {
       show_ghr(id)
       console_print(id,"[AMXX] Menu launched.")
   }
}

public show_ghr(id)
{
   static aaa[32]
   static bbb[32]
   static ccc[32]
   if(get_pcvar_num(grab_enabled_cvar)==0) format(aaa,31,"No")
   else format(aaa,31,"Yes")
   if(get_pcvar_num(hook_enabled_cvar)==0) format(bbb,31,"No")
   else format(bbb,31,"Yes")
   if(get_pcvar_num(rope_enabled_cvar)==0) format(ccc,31,"No")
   else format(ccc,31,"Yes")

   new menuBody[576]

   if(colored_menus())
   {
       new len = format(menuBody,575,"\bAllow Players To Use:^n^n")
       len += format(menuBody[len],575-len, "\w1. Grab\R\w%s^n",aaa)
       len += format(menuBody[len],575-len, "\w2. Hook\R\w%s^n",bbb)
       len += format(menuBody[len],575-len, "\w3. Rope\R\w%s^n",ccc)
       len += format(menuBody[len],575-len, "\r0. Exit")
   }
   else
   {
       new len = format(menuBody,575,"Allow Players To Use:^n^n")
       len += format(menuBody[len],575-len, "1. Grab\R%s^n",aaa)
       len += format(menuBody[len],575-len, "2. Hook\R%s^n",bbb)
       len += format(menuBody[len],575-len, "3. Rope\R%s^n",ccc)
       len += format(menuBody[len],575-len, "0. Exit")
   }
   show_menu(id,(1
   return PLUGIN_CONTINUE
}

public Pressedghr(id,key)
{
   switch(key)
   {
       case 0:
       {
           if(get_pcvar_num(grab_enabled_cvar)==0)
           {
               set_pcvar_num(grab_enabled_cvar,1)
               client_print(0,print_chat,"[AMXX] Admin has enabled Grab for all clients. Use: bind key +grab")
           }
           else
           {
               set_pcvar_num(grab_enabled_cvar,0)
               client_print(0,print_chat,"[AMXX] Admin has disabled Grab for all non-admins.")
           }
           show_ghr(id)
       }
       case 1:
       {
           if(get_pcvar_num(hook_enabled_cvar)==0)
           {
               set_pcvar_num(hook_enabled_cvar,1)
               client_print(0,print_chat,"[AMXX] Admin has enabled Hook for all clients. Use: bind key +hook")
           }
           else
           {
               set_pcvar_num(hook_enabled_cvar,0)
               client_print(0,print_chat,"[AMXX] Admin has disabled Hook for all non-admins.")
           }
           show_ghr(id)
       }
       case 2:
       {
           if(get_pcvar_num(rope_enabled_cvar)==0)
           {
               set_pcvar_num(rope_enabled_cvar,1)
               client_print(0,print_chat,"[AMXX] Admin has enabled Rope for all clients. Use: bind key +rope")
           }
           else
           {
               set_pcvar_num(rope_enabled_cvar,0)
               client_print(0,print_chat,"[AMXX] Admin has disabled Rope for all non-admins.")
           }
           show_ghr(id)
       }
   }
}


/****************
Handle Commands
****************/

public cmd_givetake(id,level,cid)
{
   if(!cmd_access(id,level,cid,2))
   {
       return PLUGIN_HANDLED
   }

   new arg1[32]
   read_argv(1,arg1,31)

   new target = cmd_target(id,arg1,9)
   if(!target)
   {
       return PLUGIN_HANDLED
   }

   new name[32]
   get_user_name(target,name,31)
   if(get_user_flags(target) & ADMIN_LEVEL_Q)
   {
       console_print(id,"[AMXX] Cannot give/take grab/hook/rope from admin %s.",name)
       return PLUGIN_HANDLED
   }

   new arg0[32]
   read_argv(0,arg0,31)
   if(containi(arg0,"give")!=-1)
   {
       if(containi(arg0,"grab")!=-1)
       {
           if(has_grab[target])
           {
               console_print(id,"[AMXX] %s already has grab",name)
           }
           else
           {
               has_grab[target]=true
               console_print(id,"[AMXX] %s has been given grab",name)
               client_print(target,print_chat,"[AMXX] An admin has given you grab. Use: bind key +grab")
           }
       }
       else if(containi(arg0,"hook")!=-1)
       {
           if(has_hook[target])
           {
               console_print(id,"[AMXX] %s already has hook",name)
           }
           else
           {
               has_hook[target]=true
               console_print(id,"[AMXX] %s has been given hook",name)
               client_print(target,print_chat,"[AMXX] An admin has given you hook. Use: bind key +hook")
           }
       }
       else if(containi(arg0,"rope")!=-1)
       {
           if(has_rope[target])
           {
               console_print(id,"[AMXX] %s already has rope",name)
           }
           else
           {
               has_rope[target]=true
               console_print(id,"[AMXX] %s has been given rope",name)
               client_print(target,print_chat,"[AMXX] An admin has given you hook. Use: bind key +rope")
           }
       }
   }
   if(containi(arg0,"take")!=-1)
   {
       if(containi(arg0,"grab")!=-1)
       {
           if(!has_grab[target])
           {
               console_print(id,"[AMXX] %s doesn't have grab",name)
           }
           else
           {
               has_grab[target]=false
               console_print(id,"[AMXX] %s's grab has been taken away.",name)
               client_print(target,print_chat,"[AMXX] An admin has taken your grab away.")
           }
       }
       if(containi(arg0,"hook")!=-1)
       {
           if(!has_hook[target])
           {
               console_print(id,"[AMXX] %s doesn't have hook",name)
           }
           else
           {
               has_hook[target]=false
               console_print(id,"[AMXX] %s's hook has been taken away.",name)
               client_print(target,print_chat,"[AMXX] An admin has taken your hook away.")
           }
       }
       if(containi(arg0,"rope")!=-1)
       {
           if(!has_rope[target])
           {
               console_print(id,"[AMXX] %s doesn't have rope",name)
           }
           else
           {
               has_rope[target]=false
               console_print(id,"[AMXX] %s's rope has been taken away.",name)
               client_print(target,print_chat,"[AMXX] An admin has taken your rope away.")
           }
       }
   }
   return PLUGIN_HANDLED
}


/*****
Grab
*****/

public grab_toggle(id,level,cid)
{
   if(grab[id]) grab_off(id)
   else grab_on(id,level,cid)
   return PLUGIN_HANDLED
}

public grab_on(id,level,cid)
{
   if(!has_grab[id] && !get_pcvar_num(grab_enabled_cvar) && !cmd_access(id,level,cid,1))
   {
       return PLUGIN_HANDLED
   }
   if(grab[id])
   {
       return PLUGIN_HANDLED
   }
   grab[id]=-1
   static target, trash
   target=0
   get_user_aiming(id,target,trash)
   if(target && is_valid_ent2(target) && target!=id)
   {
       if(target        {
           if(is_user_alive(target) && !(get_user_flags(target) & ADMIN_IMMUNITY))
           {
               client_print(id,print_chat,"[AMXX] Found Target")
               grabem(id,target)
           }
       }
       else if(get_solidity(target)!=4)
       {
           client_print(id,print_chat,"[AMXX] Found Target")
           grabem(id,target)
       }
   }
   else
   {
       client_print(id,print_chat,"[AMXX] Searching for Target")
       set_task(0.1,"grab_on2",id)
   }
   return PLUGIN_HANDLED
}

public grab_on2(id)
{
   if(is_user_connected(id))
   {
       static target, trash
       target=0
       get_user_aiming(id,target,trash)
       if(target && is_valid_ent2(target) && target!=id)
       {
           if(target            {
               if(is_user_alive(target) && !(get_user_flags(target) & ADMIN_IMMUNITY))
               {
                   client_print(id,print_chat,"[AMXX] Found Target")
                   grabem(id,target)
               }
           }
           else if(get_solidity(target)!=4)
           {
               client_print(id,print_chat,"[AMXX] Found Target")
               grabem(id,target)
           }
       }
       else
       {
           set_task(0.1,"grab_on2",id)
       }
   }
}

public grabem(id,target)
{
   grab[id]=target
   set_rendering2(target,kRenderFxGlowShell,255,0,0,kRenderTransAlpha,70)
   if(target    grab_totaldis[id] = 0.0
   set_task(0.1,"grab_prethink",id+1000,"",0,"b")
   grab_prethink(id+1000)
   emit_sound(id,CHAN_VOICE,"weapons/xbow_fire1.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
}

public grab_off(id)
{
   if(is_user_connected(id))
   {
       if(grab[id]==-1)
       {
           client_print(id,print_chat,"[AMXX] No Target Found")
           grab[id]=0
       }
       else if(grab[id])
       {
           client_print(id,print_chat,"[AMXX] Target Released")
           set_rendering2(grab[id])
           if(grab[id]            grab[id]=0
       }
   }
   return PLUGIN_HANDLED
}

public grab_prethink(id)
{
   id -= 1000
   if(!is_user_connected(id) && grab[id]>0)
   {
       set_rendering2(grab[id])
       if(grab[id]        grab[id]=0
   }
   if(!grab[id] || grab[id]==-1)
   {
       remove_task(id+1000)
       return PLUGIN_HANDLED
   }

   //Get Id's, target's, and Where Id is looking's origins
   static origin1[3]
   get_user_origin(id,origin1)
   static Float:origin2_F[3], origin2[3]
   get_origin(grab[id],origin2_F)
   origin2[0] = floatround(origin2_F[0])
   origin2[1] = floatround(origin2_F[1])
   origin2[2] = floatround(origin2_F[2])
   static origin3[3]
   get_user_origin(id,origin3,3)

   //Create red beam
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(1)        //TE_BEAMENTPOINT
   write_short(id)        // start entity
   write_coord(origin2[0])
   write_coord(origin2[1])
   write_coord(origin2[2])
   write_short(beamsprite)
   write_byte(1)        // framestart
   write_byte(1)        // framerate
   write_byte(1)        // life in 0.1's
   write_byte(5)        // width
   write_byte(0)        // noise
   write_byte(255)        // red
   write_byte(0)        // green
   write_byte(0)        // blue
   write_byte(200)        // brightness
   write_byte(0)        // speed
   message_end()

   //Convert to floats for calculation
   static Float:origin1_F[3]
   static Float:origin3_F[3]
   origin1_F[0] = float(origin1[0])
   origin1_F[1] = float(origin1[1])
   origin1_F[2] = float(origin1[2])
   origin3_F[0] = float(origin3[0])
   origin3_F[1] = float(origin3[1])
   origin3_F[2] = float(origin3[2])

   //Calculate target's new velocity
   static Float:distance[3]

   if(!grab_totaldis[id])
   {
       distance[0] = floatabs(origin1_F[0] - origin2_F[0])
       distance[1] = floatabs(origin1_F[1] - origin2_F[1])
       distance[2] = floatabs(origin1_F[2] - origin2_F[2])
       grab_totaldis[id] = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2])
   }
   distance[0] = origin3_F[0] - origin1_F[0]
   distance[1] = origin3_F[1] - origin1_F[1]
   distance[2] = origin3_F[2] - origin1_F[2]

   static Float:grab_totaldis2
   grab_totaldis2 = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2])

   static Float:que
   que = grab_totaldis[id] / grab_totaldis2

   static Float:origin4[3]
   origin4[0] = ( distance[0] * que ) + origin1_F[0]
   origin4[1] = ( distance[1] * que ) + origin1_F[1]
   origin4[2] = ( distance[2] * que ) + origin1_F[2]

   static Float:velocity[3]
   velocity[0] = (origin4[0] - origin2_F[0]) * (get_pcvar_float(grab_speed_cvar) / 1.666667)
   velocity[1] = (origin4[1] - origin2_F[1]) * (get_pcvar_float(grab_speed_cvar) / 1.666667)
   velocity[2] = (origin4[2] - origin2_F[2]) * (get_pcvar_float(grab_speed_cvar) / 1.666667)

   set_velo(grab[id],velocity)

   return PLUGIN_CONTINUE
}


/*****
Hook
*****/

public hook_toggle(id,level,cid)
{
   if(hook[id]) hook_off(id)
   else hook_on(id,level,cid)
   return PLUGIN_HANDLED
}

public hook_on(id,level,cid)
{
   if(!has_hook[id] && !get_pcvar_num(hook_enabled_cvar) && !cmd_access(id,level,cid,1))
   {
       return PLUGIN_HANDLED
   }
   if(hook[id])
   {
       return PLUGIN_HANDLED
   }
   set_user_gravity(id,0.0)
   set_task(0.1,"hook_prethink",id+10000,"",0,"b")
   hook[id]=true
   hook_to[id][0]=999999
   hook_prethink(id+10000)
   emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
   return PLUGIN_HANDLED
}

public hook_off(id)
{
   if(is_user_alive(id)) set_user_gravity(id)
   hook[id]=false
   return PLUGIN_HANDLED
}

public hook_prethink(id)
{
   id -= 10000
   if(!is_user_alive(id))
   {
       hook[id]=false
   }
   if(!hook[id])
   {
       remove_task(id+10000)
       return PLUGIN_HANDLED
   }

   //Get Id's origin
   static origin1[3]
   get_user_origin(id,origin1)

   if(hook_to[id][0]==999999)
   {
       static origin2[3]
       get_user_origin(id,origin2,3)
       hook_to[id][0]=origin2[0]
       hook_to[id][1]=origin2[1]
       hook_to[id][2]=origin2[2]
   }

   //Create blue beam
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(1)        //TE_BEAMENTPOINT
   write_short(id)        // start entity
   write_coord(hook_to[id][0])
   write_coord(hook_to[id][1])
   write_coord(hook_to[id][2])
   write_short(beamsprite)
   write_byte(1)        // framestart
   write_byte(1)        // framerate
   write_byte(2)        // life in 0.1's
   write_byte(5)        // width
   write_byte(0)        // noise
   write_byte(0)        // red
   write_byte(0)        // green
   write_byte(255)        // blue
   write_byte(200)        // brightness
   write_byte(0)        // speed
   message_end()

   //Calculate Velocity
   static Float:velocity[3]
   velocity[0] = (float(hook_to[id][0]) - float(origin1[0])) * 3.0
   velocity[1] = (float(hook_to[id][1]) - float(origin1[1])) * 3.0
   velocity[2] = (float(hook_to[id][2]) - float(origin1[2])) * 3.0

   static Float:y
   y = velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2]

   static Float:x
   x = (get_pcvar_float(hook_speed_cvar) * 120.0) / floatsqroot(y)

   velocity[0] *= x
   velocity[1] *= x
   velocity[2] *= x

   set_velo(id,velocity)

   return PLUGIN_CONTINUE
}


/*****
Rope
*****/

public rope_toggle(id,level,cid)
{
   if(rope[id]) rope_off(id)
   else rope_on(id,level,cid)
   return PLUGIN_HANDLED
}

public rope_on(id,level,cid)
{
   if(!has_rope[id] && !get_pcvar_num(rope_enabled_cvar) && !cmd_access(id,level,cid,1))
   {
       return PLUGIN_HANDLED
   }
   if(rope[id])
   {
       return PLUGIN_HANDLED
   }
   set_task(0.1,"rope_prethink",id+100000,"",0,"b")
   rope[id]=true
   rope_to[id][0]=999999
   rope_prethink(id+100000)
   emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
   return PLUGIN_HANDLED
}

public rope_off(id)
{
   rope[id]=false
   return PLUGIN_HANDLED
}

public rope_prethink(id)
{
   id -= 100000
   if(!is_user_alive(id))
   {
       rope[id]=false
   }
   if(!rope[id])
   {
       remove_task(id+100000)
       return PLUGIN_HANDLED
   }

   //Get Id's origin
   static origin1[3]
   get_user_origin(id,origin1)

   static Float:origin1_F[3]
   origin1_F[0] = float(origin1[0])
   origin1_F[1] = float(origin1[1])
   origin1_F[2] = float(origin1[2])

   //Check to see if this is the first time prethink is being run
   if(rope_to[id][0]==999999)
   {
       static origin2[3]
       get_user_origin(id,origin2,3)
       rope_to[id][0]=origin2[0]
       rope_to[id][1]=origin2[1]
       rope_to[id][2]=origin2[2]

       static Float:origin2_F[3]
       origin2_F[0] = float(origin2[0])
       origin2_F[1] = float(origin2[1])
       origin2_F[2] = float(origin2[2])

       static Float:distance[3]
       distance[0] = floatabs(origin1_F[0] - origin2_F[0])
       distance[1] = floatabs(origin1_F[1] - origin2_F[1])
       distance[2] = floatabs(origin1_F[2] - origin2_F[2])
       rope_totaldis[id] = floatsqroot(distance[0]*distance[0] + distance[1]*distance[1] + distance[2]*distance[2])
   }

   //Create green beam
   message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte(1)        //TE_BEAMENTPOINT
   write_short(id)        // start entity
   write_coord(rope_to[id][0])
   write_coord(rope_to[id][1])
   write_coord(rope_to[id][2])
   write_short(beamsprite)
   write_byte(1)        // framestart
   write_byte(1)        // framerate
   write_byte(1)        // life in 0.1's
   write_byte(5)        // width
   write_byte(0)        // noise
   write_byte(0)        // red
   write_byte(255)        // green
   write_byte(0)        // blue
   write_byte(200)        // brightness
   write_byte(0)        // speed
   message_end()

   //Calculate Velocity
   static Float:velocity[3]
   get_velo(id,velocity)

   static Float:velocity2[3]
   velocity2[0] = (rope_to[id][0] - origin1_F[0]) * 3.0
   velocity2[1] = (rope_to[id][1] - origin1_F[1]) * 3.0

   static Float:y
   y = velocity2[0]*velocity2[0] + velocity2[1]*velocity2[1]

   static Float:x
   x = (get_pcvar_float(rope_speed_cvar) * 20.0) / floatsqroot(y)

   velocity[0] += velocity2[0]*x
   velocity[1] += velocity2[1]*x

   if(rope_to[id][2] - origin1_F[2] >= rope_totaldis[id] && velocity[2]
   set_velo(id,velocity)

   return PLUGIN_CONTINUE
}

public get_origin(ent,Float:origin[3])
{
#if defined engine
   return entity_get_vector(id,EV_VEC_origin,origin)
#else
   return pev(ent,pev_origin,origin)
#endif
}

public set_velo(id,Float:velocity[3])
{
#if defined engine
   return set_user_velocity(id,velocity)
#else
   return set_pev(id,pev_velocity,velocity)
#endif
}

public get_velo(id,Float:velocity[3])
{
#if defined engine
   return get_user_velocity(id,velocity)
#else
   return pev(id,pev_velocity,velocity)
#endif
}

public is_valid_ent2(ent)
{
#if defined engine
   return is_valid_ent(ent)
#else
   return pev_valid(ent)
#endif
}

public get_solidity(ent)
{
#if defined engine
   return entity_get_int(ent,EV_INT_solid)
#else
   return pev(ent,pev_solid)
#endif
}

stock set_rendering2(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
#if defined engine
   return set_rendering(index,fx,r,g,b,render,amount)
#else
   set_pev(index, pev_renderfx, fx);
   new Float:RenderColor[3];
   RenderColor[0] = float(r);
   RenderColor[1] = float(g);
   RenderColor[2] = float(b);
   set_pev(index, pev_rendercolor, RenderColor);
   set_pev(index, pev_rendermode, render);
   set_pev(index, pev_renderamt, float(amount));
   return 1;
#endif
}  

Jaga seda postitust


Postituse link
Share on other sites

#define ADMIN_LEVEL_Q ADMIN_IMMUNITY

 

Proovi nii, pole kindel kas töötab.

 

E//: CSREALLIFE oma peaks töötama.

 

 

E//: ADMIN_LEVEL_A = Flag M

Muudetud liikme chriss'i poolt

Jaga seda postitust


Postituse link
Share on other sites

Kommentaari lisamiseks loo konto või logi sisse

Kommenteerimiseks peate olema liige

Loo konto

Liituge meie kommuuni uue kontoga. See on lihtne!

Loo uus konto

Logi sisse

On juba konto? Logi sisse siit.

Logi sisse nüüd

×
×
  • Loo uus...

Oluline informatsioon

Selle veebisaidi paremaks muutmiseks oleme teie seadmesse paigutanud küpsised . Võite kohandada oma küpsiste seadeid , vastasel juhul eeldame, et te olete küpsiste kasutamisega nõus kui jätkate veebisaidil sirvimist.. Palun lugege läbi Kasutustingimused ja Privaatsuspoliitika.