Knife Blink

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Post Reply
User avatar
kerasseN
Membru, skill 0
Membru, skill 0
Posts: 53
Joined: 04 Feb 2020, 00:00
Detinator Steam: Nu
Fond eXtream: 0
Has thanked: 1 time

13 Jan 2021, 01:54

Code: Select all

#include <amxmodx>
#include <fakemeta>
#include <zp_apocalypse>
#include <colorchat>
#include <chr_engine>

// HUD messages
const Float:HUD_EVENT_X = -1.0
const Float:HUD_EVENT_Y = 0.17
const Float:HUD_INFECT_X = 0.05
const Float:HUD_INFECT_Y = 0.45
const Float:HUD_SPECT_X = -1.0
const Float:HUD_SPECT_Y = 0.8
const Float:HUD_STATS_X = 0.02
const Float:HUD_STATS_Y = 0.9

#pragma tabsize 0

#define MIN_DISTANCE 50
#define MAX_ROUND 1 // de aici modifici de cate ori sa foloseasca pe runda.

new const g_item_name[] = { "Knife Blink" }
const g_item_cost = 20
const g_iMaxDistance = 400;

new Float:g_fSpeed = 1000.0;
new Float:g_fDelay = 1.0;

new g_iMaxPlayers;
new g_iEnemy[33];
new g_iInBlink[33];
new Float:g_fLastSlash[33];
new g_iCanceled[33];
new g_iSlash[33];
new g_iBlinks[33];
new g_itemid_blink;

new Limita[33]

public plugin_init(){
   
   register_plugin("[ZP]Knife Blink", "v1.3", "ExtreamCS");
   
   g_iMaxPlayers = get_maxplayers();
   
   g_itemid_blink = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_ZOMBIE);
   
   register_forward(FM_TraceLine, "FW_TraceLine_Post", 5);
   register_forward(FM_PlayerPreThink, "FW_PlayerPreThink");
   
   register_event("HLTV", "EVENT_round_start", "a", "1=0", "2=0")
}

public FW_TraceLine_Post(Float:start[3], Float:end[3], conditions, id, trace){
   
   if (!CHECK_ValidPlayer(id))
      return FMRES_IGNORED;
   
   new iWeaponID = get_user_weapon(id);
   
   if ( iWeaponID != CSW_KNIFE ){
      
      OP_Cancel(id);
      return FMRES_IGNORED;
   }
   
   new enemy = g_iEnemy[id];
   
   if (!enemy){
      
      enemy = get_tr2(trace, TR_pHit);
      
      if ( !CHECK_ValidPlayer(enemy) || zp_get_user_zombie(enemy) ){
         
         OP_Cancel(id);
         return FMRES_IGNORED;
      }
      
      g_iEnemy[id] = enemy;
   }
   
   return FMRES_IGNORED;
}

public FW_PlayerPreThink(id){
   
   if (!CHECK_ValidPlayer(id))
      return FMRES_IGNORED;
   
   new iWeaponID = get_user_weapon(id);
   
   if ( iWeaponID != CSW_KNIFE || !zp_get_user_zombie(id) ){
      
      OP_Cancel(id);
      return FMRES_IGNORED;
   }
   
   if ( g_iBlinks[id] == 0 )
      return FMRES_IGNORED;
   
   new button = pev(id,pev_button);
   
   if ( !(button & IN_ATTACK) && !(button & IN_ATTACK2) ){
      
      OP_Cancel(id)
      return FMRES_IGNORED;
   }
   
   if (g_iSlash[id])
      g_iSlash[id] = 0;
   
   OP_NearEnemy(id);
   
   if( g_iInBlink[id] ){
      
      OP_SetBlink(id);
      OP_Blink(id);
      g_iCanceled[id] = 0;
   }

   return FMRES_IGNORED;
}

// Player buys our upgrade, add one blink
public zp_extra_item_selected(player, itemid)
{
	if(Limita[player] == MAX_ROUND)
	{
		ColorChat(player, NORMAL, "^x04[ZP] You cannot use more than ( 5 ) times per round of this item.", MAX_ROUND)	//aici iti pui tu mesajul cum vrei
		return
	}
   if (itemid == g_itemid_blink){
      new name[32]
      get_user_name(player, name, 31)
	Limita[player]++;
      g_iBlinks[player] += 5;

         set_hudmessage(255, 0, 0, HUD_SPECT_X, HUD_SPECT_Y, 1, 0.0, 5.0, 1.0, 1.0, -1)
         show_hudmessage(0, "%s bought a Knife Blinks!!", name)
      ColorChat(player, NORMAL, "^x04[ZP]^x01 You have now [^x04%d^x01] Knife ^x04Blinks^x01", g_iBlinks[player]);
   }
}

// Reset blinks for all players on newround
public EVENT_round_start()
{
   for (new id; id <= 32; id++) {
		g_iBlinks[id] = 0;
		Limita[id] = 0
	}
}
public client_disconnect(id)	Limita[id] = 0

public OP_NearEnemy(id){
   
   new enemy = g_iEnemy[id];
   new Float:time = get_gametime();
   
   if (!enemy || g_fLastSlash[id]+g_fDelay>time){
      
      g_iInBlink[id] = 0;
      return;
   }
   
   new origin[3], origin_enemy[3];
   
   get_user_origin(id, origin, 0);
   get_user_origin(enemy, origin_enemy, 0);
   
   new distance = get_distance(origin, origin_enemy);
   
   if ( MIN_DISTANCE<=distance<=g_iMaxDistance){
      
      g_iInBlink[id] = 1;
      return;
      
   }else if (MIN_DISTANCE>distance && g_iInBlink[id])
   {
      OP_Slash(id);
   }
   OP_Cancel(id);
}

public OP_Blink(id){
   
   new Float:new_velocity[3];
   new enemy = g_iEnemy[id];
   new Float:origin_enemy[3];
   
   pev(enemy, pev_origin, origin_enemy);
   entity_set_aim(id, origin_enemy);
   
   get_speed_vector2(id, enemy, g_fSpeed, new_velocity)
   set_pev(id, pev_velocity, new_velocity);
}

public OP_Cancel(id){
   
   g_iInBlink[id] = 0;
   g_iEnemy[id] = 0;
   if (!g_iCanceled[id]){
      
      OP_SetBlink(id);
      g_iCanceled[id] = 1;
   }
}

public OP_Slash(id){
   
   set_pev(id, pev_velocity, {0.0,0.0,0.0});      // stop player's blink
   
   new weaponID = get_user_weapon(id, _, _);
   
   if(weaponID == CSW_KNIFE){
      
      new weapon[32]
      
      get_weaponname(weaponID,weapon,31)
      
      new ent = fm_find_ent_by_owner(-1,weapon,id)
      
      if(ent){
         
         set_pdata_float(ent,46, 0.0);
         set_pdata_float(ent,47, 0.0);
         g_iSlash[id] = 5;
         g_fLastSlash[id] = get_gametime();
         g_iBlinks[id] -= 1;
         new name[32];
         get_user_name(id,name,31)
         ColorChat(0, GREY, "^x04[ZP]^x01 ^x03%s^x01 just used a ^x04Knife Blink!^x01 [ ^x04%d^x01 remaining ] ", name, g_iBlinks[id]);
      }
   }  
}

public OP_SetBlink(id){
   
   new blink = g_iInBlink[id];
   
   if (blink>1)
      return;
   
   if (blink)
      g_iInBlink[id] += 1;
}

public CHECK_ValidPlayer(id){
   
   if (1<=id<=g_iMaxPlayers && is_user_alive(id))
      return 1;
   
   return 0;
}

// from fakemeta_util.inc
stock fm_find_ent_by_owner(index, const classname[], owner, jghgtype = 0) {
   new strtype[11] = "classname", ent = index;
   switch (jghgtype) {
      case 1: strtype = "target";
      case 2: strtype = "targetname";
   }

   while ((ent = engfunc(EngFunc_FindEntityByString, ent, strtype, classname)) && pev(ent, pev_owner) != owner) {}

   return ent;
}
Am acest plugin, ati putea sa faceti ca "^x04[ZP]^x01 ^x03%s^x01 just used a ^x04Knife Blink!^x01 [ ^x04%d^x01 remaining ] " sa fie vazut doar de cel care foloseste knife blink si sa nu fie mesaj global, face spam in chat si e naspa..
RoyalServer
User avatar
kidd0x
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 1054
Joined: 06 Oct 2018, 14:41
Detinator Steam: Da
SteamID: /id/kidd0x/
Reputatie: Utilizator neserios (tepar!)
Fond eXtream: 0
Location: Constangeles
Discord: kidd0x
Has thanked: 172 times
Been thanked: 81 times

13 Jan 2021, 10:18

Code: Select all

ColorChat(0, GREY, "^x04[ZP]^x01 ^x03%s^x01 just used a ^x04Knife Blink!^x01 [ ^x04%d^x01 remaining ] ", name, g_iBlinks[id]);
->

Code: Select all

ColorChat(1, GREY, "^x04[ZP]^x01 ^x03%s^x01 just used a ^x04Knife Blink!^x01 [ ^x04%d^x01 remaining ] ", name, g_iBlinks[id]);
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: Bing [Bot] and 39 guests