Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

Золотой дигл и НЕ-граната

Статус пользователя Lena1978
сообщение 15.7.2015, 14:10
Сообщение #1
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Когда игрок купил золотой дигл (у которого урон в 2 раза выше) взял НЕ-гранату, бросил. То урон от гранаты тоже в 2 раза выше.
Бесит что гранатой убивает с 1го раза и отнимает по 120-150 НР.
Как сделать чтобы дигл не увеличивал урон гранаты?

Код:

#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>

#define is_valid_player(%1) (1 <= %1 <= 32)

new DEAGLE_V_MODEL[] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[] = "models/p_golden_deagle.mdl"
new DEAGLE_W_MODEL[] = "models/w_golden_deagle.mdl"

#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_rgpPlayerItems_CWeaponBox 34
#define m_pNext 42
#define m_iId 43
#define m_rgpPlayerItems_CBasePlayer 367

new cvar_dmgmultiplier
new bool:g_HasDg[33], bool:g_bHasGA[33]
new g_hasZoom[33]
new cvar_cost

#define WK 3344

public plugin_precache()
{
precache_model(DEAGLE_V_MODEL);
precache_model(DEAGLE_P_MODEL);
precache_model(DEAGLE_W_MODEL);
precache_sound("weapons/zoom.wav");
}

public plugin_init()
{
cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "2");
cvar_cost = register_cvar("goldendeagle_cost", "3000");

register_concmd("amx_goldendg", "give_deagle", ADMIN_LEVEL_H);

register_plugin("Golden Deagle", "1.6", "AlejandroSk")
register_event("DeathMsg", "Death", "a")
register_event("WeapPickup","checkModel","b","1=19")
register_event("CurWeapon","checkWeapon","be","1=1")

RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
register_forward(FM_SetModel, "fw_SetModel")
RegisterHam ( Ham_Item_AttachToPlayer, "weapon_deagle", "fw_Item_AttachToPlayer" )
register_event ( "HLTV", "ev_RoundStart", "a", "1=0", "2=0" )

register_clcmd("say /goldendeagle", "CmdBuyDg")

register_forward(FM_CmdStart, "fw_CmdStart")
}

public ev_RoundStart ()
{
new iPlayers[32], iNum
get_players ( iPlayers, iNum )

for ( --iNum; iNum >= 0; --iNum )
g_bHasGA[iPlayers[iNum]] = false
}
/*
public plugin_natives ()
register_native ( "buy_deagle", "native_buy_deagle" )

public native_buy_deagle ( plugin_id, num_params )
{
new id = get_param ( 1 )

if ( !is_user_connected ( id ) )
return false

givedeagle(id)
return true
}
*/
public client_connect(id)
{
g_HasDg[id] = false
g_bHasGA[id] = false
}

public client_disconnect(id)
{
g_HasDg[id] = false
g_bHasGA[id] = false
}

public Death()
{
g_HasDg[read_data(2)] = false
g_bHasGA[read_data(2)] = false
}


public fw_SetModel ( ent, model[] )
{
if ( pev_valid ( ent ) != 2 )
return FMRES_IGNORED

if ( strlen ( model ) < 8 )
return FMRES_IGNORED

if ( model[7] != 'w' || model[8] != '_' )
return FMRES_IGNORED

static sClassName[32]
pev ( ent, pev_classname, sClassName, charsmax ( sClassName ) )

if ( !equal ( sClassName, "weaponbox" ) )
return FMRES_IGNORED

new id = pev ( ent, pev_owner )

if ( pev_valid ( id ) != 2 )
return FMRES_IGNORED

#define MAX_ITEM_TYPES 6

for (new i, iItem; i < MAX_ITEM_TYPES; i++)
{
iItem = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox + i, XO_WEAPON )

if ( pev_valid ( iItem ) == 2 && pev(iItem, pev_impulse) == WK )
{
g_HasDg[id] = false
engfunc ( EngFunc_SetModel, ent, DEAGLE_W_MODEL )
return FMRES_SUPERCEDE
}
}

return FMRES_IGNORED
}


public fw_Item_AttachToPlayer ( ent, id )
{
if ( pev_valid ( ent ) !=2 || !is_user_alive ( id ) )
return HAM_IGNORED

if ( pev ( ent, pev_impulse ) == WK )
g_HasDg[id] = true

return HAM_IGNORED
}

public checkModel(id)
{
if ( !g_HasDg[id] )
return PLUGIN_HANDLED

new szWeapID = read_data(2)

if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true )
{
set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
}
return PLUGIN_HANDLED
}

public CmdBuyDg(id)
{
if ( !is_user_alive(id))
{
//client_print(id,print_chat, "Что бы взять Golden Deagle вы должны быть живы!")
return PLUGIN_HANDLED
}

new money = cs_get_user_money(id)

if (money >= get_pcvar_num(cvar_cost))
{
cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
Player_DropWeapons ( id, 2 )
new iWeapon = give_item(id, "weapon_deagle")
set_pev(iWeapon, pev_impulse, WK)

give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 70)
g_HasDg[id] = true
}

else
{
client_print(id, print_chat, "Нет денег для покупки Golden Deagle")
}
return PLUGIN_HANDLED
}

public givedeagle(id)
{
Player_DropWeapons ( id, 2 )
new iWeapon = give_item(id, "weapon_deagle")
set_pev(iWeapon, pev_impulse, WK)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 70)
g_HasDg[id] = true
}

public give_deagle(id)
{
givedeagle(id)
return PLUGIN_CONTINUE
}

public checkWeapon(id)
{
new plrClip, plrAmmo
new plrWeapId

plrWeapId = get_user_weapon(id, plrClip , plrAmmo)

if (plrWeapId == CSW_DEAGLE && g_HasDg[id])
checkModel(id)
else
return PLUGIN_CONTINUE

return PLUGIN_HANDLED
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDg[attacker] )
{
SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
}
}

public fw_CmdStart( id, uc_handle, seed )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED

if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
{
new szClip, szAmmo
new szWeapID = get_user_weapon( id, szClip, szAmmo )

if( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && !g_hasZoom[id] == true)
{
g_hasZoom[id] = true
cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.40, 2.40, 0, 100 )
}

else if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && g_hasZoom[id])
{
g_hasZoom[ id ] = false
cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )

}
}
return PLUGIN_HANDLED
}

Player_DropWeapons(const iPlayer, const iSlot)
{
new szWeaponName[32], iItem = get_pdata_cbase(iPlayer, m_rgpPlayerItems_CBasePlayer + iSlot, XO_PLAYER);

while (pev_valid(iItem) == 2)
{
pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName));
engclient_cmd(iPlayer, "drop", szWeaponName);

iItem = get_pdata_cbase(iItem, m_pNext, XO_WEAPON);
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fullserver
сообщение 15.7.2015, 20:34
Сообщение #2


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
  
#define is_valid_player(%1) (1 <= %1 <= 32)

#define DMG_GRENADE (1 << 24)
  
new DEAGLE_V_MODEL[] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[] = "models/p_golden_deagle.mdl"
new DEAGLE_W_MODEL[] = "models/w_golden_deagle.mdl"
  
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_rgpPlayerItems_CWeaponBox 34
#define m_pNext 42
#define m_iId 43
#define m_rgpPlayerItems_CBasePlayer 367
  
new cvar_dmgmultiplier
new bool:g_HasDg[33], bool:g_bHasGA[33]
new g_hasZoom[33]
new cvar_cost
  
#define WK 3344
  
public plugin_precache()
{
   precache_model(DEAGLE_V_MODEL);
   precache_model(DEAGLE_P_MODEL);
   precache_model(DEAGLE_W_MODEL);
   precache_sound("weapons/zoom.wav");

  
public plugin_init()
{
   cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "2");
   cvar_cost = register_cvar("goldendeagle_cost", "3000");
    
   register_concmd("amx_goldendg", "give_deagle", ADMIN_LEVEL_H);
  
   register_plugin("Golden Deagle", "1.6", "AlejandroSk")
   register_event("DeathMsg", "Death", "a")
   register_event("WeapPickup","checkModel","b","1=19")
   register_event("CurWeapon","checkWeapon","be","1=1")
  
   RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
   register_forward(FM_SetModel, "fw_SetModel")
   RegisterHam ( Ham_Item_AttachToPlayer, "weapon_deagle", "fw_Item_AttachToPlayer" )
   register_event ( "HLTV", "ev_RoundStart", "a", "1=0", "2=0" )
 
   register_clcmd("say /goldendeagle", "CmdBuyDg")
 
   register_forward(FM_CmdStart, "fw_CmdStart")
}
  
public ev_RoundStart ()
{
   new iPlayers[32], iNum
   get_players ( iPlayers, iNum )
  
   for ( --iNum; iNum >= 0; --iNum )
      g_bHasGA[iPlayers[iNum]] = false
}
/*
public plugin_natives ()
   register_native ( "buy_deagle", "native_buy_deagle" )
  
public native_buy_deagle ( plugin_id, num_params )
{
   new id = get_param ( 1 )
  
   if ( !is_user_connected ( id ) )
      return false
        
   givedeagle(id)
   return true
}
*/
public client_connect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
  
public client_disconnect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
  
public Death()
{
   g_HasDg[read_data(2)] = false
   g_bHasGA[read_data(2)] = false
}
  
  
public fw_SetModel ( ent, model[] )
{
   if ( pev_valid ( ent ) != 2 )
      return FMRES_IGNORED
  
   if ( strlen ( model ) < 8 )
      return FMRES_IGNORED
  
   if ( model[7] != 'w' || model[8] != '_' )
      return FMRES_IGNORED
  
   static sClassName[32]
   pev ( ent, pev_classname, sClassName, charsmax ( sClassName ) )
     
   if ( !equal ( sClassName, "weaponbox" ) )
      return FMRES_IGNORED
  
   new id = pev ( ent, pev_owner )
  
   if ( pev_valid ( id ) != 2 )
      return FMRES_IGNORED
  
   #define MAX_ITEM_TYPES 6
     
   for (new i, iItem; i < MAX_ITEM_TYPES; i++)
   {
      iItem = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox + i, XO_WEAPON )
        
      if ( pev_valid ( iItem ) == 2 && pev(iItem, pev_impulse) == WK )
      {
         g_HasDg[id] = false
         engfunc ( EngFunc_SetModel, ent, DEAGLE_W_MODEL )
         return FMRES_SUPERCEDE
      }
   }
  
   return FMRES_IGNORED
}
  
  
public fw_Item_AttachToPlayer ( ent, id )
{
   if ( pev_valid ( ent ) !=2 || !is_user_alive ( id ) )
      return HAM_IGNORED
  
   if ( pev ( ent, pev_impulse ) == WK )
      g_HasDg[id] = true
  
   return HAM_IGNORED
}
  
public checkModel(id)
{
   if ( !g_HasDg[id] )
      return PLUGIN_HANDLED
     
   new szWeapID = read_data(2)
     
   if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true )
   {
      set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
      set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
   }
   return PLUGIN_HANDLED
}
 
public CmdBuyDg(id)
{
   if ( !is_user_alive(id))
   {
      //client_print(id,print_chat, "Что бы взять Golden Deagle вы должны быть живы!")
      return PLUGIN_HANDLED
   }
    
   new money = cs_get_user_money(id)
    
   if (money >= get_pcvar_num(cvar_cost))
   {
      cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
      Player_DropWeapons ( id, 2 )
      new iWeapon = give_item(id, "weapon_deagle")
      set_pev(iWeapon, pev_impulse, WK)
       
      give_item(id, "weapon_deagle")
      cs_set_user_bpammo(id, CSW_DEAGLE, 70)
      g_HasDg[id] = true
   }
    
   else
   {
      client_print(id, print_chat, "Нет денег для покупки Golden Deagle")
   }
   return PLUGIN_HANDLED
}
 
public givedeagle(id)
{
   Player_DropWeapons ( id, 2 )
   new iWeapon = give_item(id, "weapon_deagle")
   set_pev(iWeapon, pev_impulse, WK)
   give_item(id, "weapon_deagle")
   cs_set_user_bpammo(id, CSW_DEAGLE, 70)
   g_HasDg[id] = true
}
  
public give_deagle(id)
{
   givedeagle(id)
   return PLUGIN_CONTINUE

  
public checkWeapon(id)
{
   new plrClip, plrAmmo
   new plrWeapId
     
   plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
     
   if (plrWeapId == CSW_DEAGLE && g_HasDg[id])
      checkModel(id)
   else
      return PLUGIN_CONTINUE
        
   return PLUGIN_HANDLED
}
  
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, int bitsDamageType)
{
   if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDg[attacker] && !(bitsDamageType & DMG_GRENADE))
   {
      SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
   }
}
 
public fw_CmdStart( id, uc_handle, seed )
{
   if( !is_user_alive( id ) )
      return PLUGIN_HANDLED
    
   if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
   {
      new szClip, szAmmo
      new szWeapID = get_user_weapon( id, szClip, szAmmo )
       
      if( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && !g_hasZoom[id] == true)
      {
         g_hasZoom[id] = true
         cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
         emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.40, 2.40, 0, 100 )
      }
 
      else if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && g_hasZoom[id])
      {
         g_hasZoom[ id ] = false
         cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
          
      }
   }
   return PLUGIN_HANDLED
}
 
Player_DropWeapons(const iPlayer, const iSlot)
{
   new szWeaponName[32], iItem = get_pdata_cbase(iPlayer, m_rgpPlayerItems_CBasePlayer + iSlot, XO_PLAYER);
  
   while (pev_valid(iItem) == 2)
   {
      pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName));
      engclient_cmd(iPlayer, "drop", szWeaponName);
  
      iItem = get_pdata_cbase(iItem, m_pNext, XO_WEAPON);
   }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 15.7.2015, 22:12
Сообщение #3
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Fullserver

Спасибо. Ура!
А ещё, можно запретить поднимать щит, когда у игрока есть голден дигл.

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 15.7.2015, 22:15
Сообщение #4


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
   
#define is_valid_player(%1) (1 <= %1 <= 32)
 
#define DMG_GRENADE  (1 << 24)
   
new DEAGLE_V_MODEL[] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[] = "models/p_golden_deagle.mdl"
new DEAGLE_W_MODEL[] = "models/w_golden_deagle.mdl"
   
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_rgpPlayerItems_CWeaponBox 34
#define m_pNext 42
#define m_iId 43
#define m_rgpPlayerItems_CBasePlayer 367
   
new cvar_dmgmultiplier
new bool:g_HasDg[33], bool:g_bHasGA[33]
new g_hasZoom[33]
new cvar_cost
   
#define WK 3344
   
public plugin_precache()
{
   precache_model(DEAGLE_V_MODEL);
   precache_model(DEAGLE_P_MODEL);
   precache_model(DEAGLE_W_MODEL);
   precache_sound("weapons/zoom.wav");

   
public plugin_init()
{
   cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "2");
   cvar_cost = register_cvar("goldendeagle_cost", "3000");
     
   register_concmd("amx_goldendg", "give_deagle", ADMIN_LEVEL_H);
   
   register_plugin("Golden Deagle", "1.6", "AlejandroSk")
   register_event("DeathMsg", "Death", "a")
   register_event("WeapPickup","checkModel","b","1=19")
   register_event("CurWeapon","checkWeapon","be","1=1")
   
   RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
RegisterHam(Ham_Touch, "weapon_shield", "TouchWeapon")
   register_forward(FM_SetModel, "fw_SetModel")
   RegisterHam ( Ham_Item_AttachToPlayer, "weapon_deagle", "fw_Item_AttachToPlayer" )
   register_event ( "HLTV", "ev_RoundStart", "a", "1=0", "2=0" )
  
   register_clcmd("say /goldendeagle", "CmdBuyDg")
  
   register_forward(FM_CmdStart, "fw_CmdStart")
}
   
public ev_RoundStart ()
{
   new iPlayers[32], iNum
   get_players ( iPlayers, iNum )
   
   for ( --iNum; iNum >= 0; --iNum )
      g_bHasGA[iPlayers[iNum]] = false
}
/*
public plugin_natives ()
   register_native ( "buy_deagle", "native_buy_deagle" )
   
public native_buy_deagle ( plugin_id, num_params )
{
   new id = get_param ( 1 )
   
   if ( !is_user_connected ( id ) )
      return false
         
   givedeagle(id)
   return true
}
*/

public TouchWeapon(weapon, id)
{
if(!is_user_connected(id))
return HAM_IGNORED

if(g_HasDg[id])
return HAM_SUPERCEDE

return HAM_IGNORED
}

public client_connect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
   
public client_disconnect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
   
public Death()
{
   g_HasDg[read_data(2)] = false
   g_bHasGA[read_data(2)] = false
}
   
   
public fw_SetModel ( ent, model[] )
{
   if ( pev_valid ( ent ) != 2 )
      return FMRES_IGNORED
   
   if ( strlen ( model ) < 8 )
      return FMRES_IGNORED
   
   if ( model[7] != 'w' || model[8] != '_' )
      return FMRES_IGNORED
   
   static sClassName[32]
   pev ( ent, pev_classname, sClassName, charsmax ( sClassName ) )
      
   if ( !equal ( sClassName, "weaponbox" ) )
      return FMRES_IGNORED
   
   new id = pev ( ent, pev_owner )
   
   if ( pev_valid ( id ) != 2 )
      return FMRES_IGNORED
   
   #define MAX_ITEM_TYPES 6
      
   for (new i, iItem; i < MAX_ITEM_TYPES; i++)
   {
      iItem = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox + i, XO_WEAPON )
         
      if ( pev_valid ( iItem ) == 2 && pev(iItem, pev_impulse) == WK )
      {
         g_HasDg[id] = false
         engfunc ( EngFunc_SetModel, ent, DEAGLE_W_MODEL )
         return FMRES_SUPERCEDE
      }
   }
   
   return FMRES_IGNORED
}
   
   
public fw_Item_AttachToPlayer ( ent, id )
{
   if ( pev_valid ( ent ) !=2 || !is_user_alive ( id ) )
      return HAM_IGNORED
   
   if ( pev ( ent, pev_impulse ) == WK )
      g_HasDg[id] = true
   
   return HAM_IGNORED
}
   
public checkModel(id)
{
   if ( !g_HasDg[id] )
      return PLUGIN_HANDLED
      
   new szWeapID = read_data(2)
      
   if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true )
   {
      set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
      set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
   }
   return PLUGIN_HANDLED
}
  
public CmdBuyDg(id)
{
   if ( !is_user_alive(id))
   {
      //client_print(id,print_chat, "Что бы взять Golden Deagle вы должны быть живы!")
      return PLUGIN_HANDLED
   }
     
   new money = cs_get_user_money(id)
     
   if (money >= get_pcvar_num(cvar_cost))
   {
      cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
      Player_DropWeapons ( id, 2 )
      new iWeapon = give_item(id, "weapon_deagle")
      set_pev(iWeapon, pev_impulse, WK)
        
      give_item(id, "weapon_deagle")
      cs_set_user_bpammo(id, CSW_DEAGLE, 70)
      g_HasDg[id] = true
   }
     
   else
   {
      client_print(id, print_chat, "Нет денег для покупки Golden Deagle")
   }
   return PLUGIN_HANDLED
}
  
public givedeagle(id)
{
   Player_DropWeapons ( id, 2 )
   new iWeapon = give_item(id, "weapon_deagle")
   set_pev(iWeapon, pev_impulse, WK)
   give_item(id, "weapon_deagle")
   cs_set_user_bpammo(id, CSW_DEAGLE, 70)
   g_HasDg[id] = true
}
   
public give_deagle(id)
{
   givedeagle(id)
   return PLUGIN_CONTINUE

   
public checkWeapon(id)
{
   new plrClip, plrAmmo
   new plrWeapId
      
   plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
      
   if (plrWeapId == CSW_DEAGLE && g_HasDg[id])
      checkModel(id)
   else
      return PLUGIN_CONTINUE
         
   return PLUGIN_HANDLED
}
   
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, int bitsDamageType)
{
   if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDg[attacker] && !(bitsDamageType & DMG_GRENADE))
   {
      SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
   }
}
  
public fw_CmdStart( id, uc_handle, seed )
{
   if( !is_user_alive( id ) )
      return PLUGIN_HANDLED
     
   if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
   {
      new szClip, szAmmo
      new szWeapID = get_user_weapon( id, szClip, szAmmo )
        
      if( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && !g_hasZoom[id] == true)
      {
         g_hasZoom[id] = true
         cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
         emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.40, 2.40, 0, 100 )
      }
  
      else if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && g_hasZoom[id])
      {
         g_hasZoom[ id ] = false
         cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
           
      }
   }
   return PLUGIN_HANDLED
}
  
Player_DropWeapons(const iPlayer, const iSlot)
{
   new szWeaponName[32], iItem = get_pdata_cbase(iPlayer, m_rgpPlayerItems_CBasePlayer + iSlot, XO_PLAYER);
   
   while (pev_valid(iItem) == 2)
   {
      pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName));
      engclient_cmd(iPlayer, "drop", szWeaponName);
   
      iItem = get_pdata_cbase(iItem, m_pNext, XO_WEAPON);
   }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 15.7.2015, 22:27
Сообщение #5
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Вот эта ты даешь!
Пишешь код за 4 минуты ))
МОНСТР. Спасибо.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 16.7.2015, 13:19
Сообщение #6
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

после модификации не компилится
goldendeagle.sma(259) : error 001: expected token: ")", but found "-identifier-"
goldendeagle.sma(259) : error 017: undefined symbol "bitsDamageType"
goldendeagle.sma(261) : error 010: invalid function or declaration
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 16.7.2015, 14:13
Сообщение #7


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

Lena1978, в исходнике замени функцию fw_TakeDamage на

Код:
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(attacker != inflictor || !is_valid_player(attacker) || victim == attacker
|| damage_type & DMG_HEGRENADE)
return HAM_IGNORED

if((get_user_weapon(attacker) == CSW_DEAGLE) && g_HasDg[attacker])
{
SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmultiplier))
return HAM_HANDLED
}
return HAM_IGNORED
}


Отредактировал: Fintok, - 16.7.2015, 14:17
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 16.7.2015, 14:39
Сообщение #8


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>

#define is_valid_player(%1) (1 <= %1 <= 32)

#define m_bitsDamageType 76

#define DMG_GRENADE (1<<24)

new DEAGLE_V_MODEL[] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[] = "models/p_golden_deagle.mdl"
new DEAGLE_W_MODEL[] = "models/w_golden_deagle.mdl"

#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_rgpPlayerItems_CWeaponBox 34
#define m_pNext 42
#define m_iId 43
#define m_rgpPlayerItems_CBasePlayer 367

new cvar_dmgmultiplier
new bool:g_HasDg[33], bool:g_bHasGA[33]
new g_hasZoom[33]
new cvar_cost

#define WK 3344

public plugin_precache()
{
precache_model(DEAGLE_V_MODEL);
precache_model(DEAGLE_P_MODEL);
precache_model(DEAGLE_W_MODEL);
precache_sound("weapons/zoom.wav");
}

public plugin_init()
{
cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "2");
cvar_cost = register_cvar("goldendeagle_cost", "3000");

register_concmd("amx_goldendg", "give_deagle", ADMIN_LEVEL_H);

register_plugin("Golden Deagle", "1.6", "AlejandroSk")
register_event("DeathMsg", "Death", "a")
register_event("WeapPickup","checkModel","b","1=19")
register_event("CurWeapon","checkWeapon","be","1=1")

RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
RegisterHam(Ham_Touch, "weapon_shield", "TouchWeapon")
register_forward(FM_SetModel, "fw_SetModel")
RegisterHam ( Ham_Item_AttachToPlayer, "weapon_deagle", "fw_Item_AttachToPlayer" )
register_event ( "HLTV", "ev_RoundStart", "a", "1=0", "2=0" )

register_clcmd("say /goldendeagle", "CmdBuyDg")

register_forward(FM_CmdStart, "fw_CmdStart")
}

public ev_RoundStart ()
{
new iPlayers[32], iNum
get_players ( iPlayers, iNum )

for ( --iNum; iNum >= 0; --iNum )
g_bHasGA[iPlayers[iNum]] = false
}
/*
public plugin_natives ()
   register_native ( "buy_deagle", "native_buy_deagle" )

public native_buy_deagle ( plugin_id, num_params )
{
   new id = get_param ( 1 )
    
   if ( !is_user_connected ( id ) )
      return false
          
   givedeagle(id)
   return true
}
*/

public TouchWeapon(weapon, id)
{
if(!is_user_connected(id))
return HAM_IGNORED

if(g_HasDg[id])
return HAM_SUPERCEDE

return HAM_IGNORED
}

public client_connect(id)
{
g_HasDg[id] = false
g_bHasGA[id] = false
}

public client_disconnect(id)
{
g_HasDg[id] = false
g_bHasGA[id] = false
}

public Death()
{
g_HasDg[read_data(2)] = false
g_bHasGA[read_data(2)] = false
}

public fw_SetModel ( ent, model[] )
{
if ( pev_valid ( ent ) != 2 )
return FMRES_IGNORED

if ( strlen ( model ) < 8 )
return FMRES_IGNORED

if ( model[7] != 'w' || model[8] != '_' )
return FMRES_IGNORED

static sClassName[32]
pev ( ent, pev_classname, sClassName, charsmax ( sClassName ) )

if ( !equal ( sClassName, "weaponbox" ) )
return FMRES_IGNORED

new id = pev ( ent, pev_owner )

if ( pev_valid ( id ) != 2 )
return FMRES_IGNORED

#define MAX_ITEM_TYPES 6

for (new i, iItem; i < MAX_ITEM_TYPES; i++)
{
iItem = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox + i, XO_WEAPON )

if ( pev_valid ( iItem ) == 2 && pev(iItem, pev_impulse) == WK )
{
g_HasDg[id] = false
engfunc ( EngFunc_SetModel, ent, DEAGLE_W_MODEL )
return FMRES_SUPERCEDE
}
}

return FMRES_IGNORED
}

public fw_Item_AttachToPlayer ( ent, id )
{
if ( pev_valid ( ent ) !=2 || !is_user_alive ( id ) )
return HAM_IGNORED

if ( pev ( ent, pev_impulse ) == WK )
g_HasDg[id] = true

return HAM_IGNORED
}

public checkModel(id)
{
if ( !g_HasDg[id] )
return PLUGIN_HANDLED

new szWeapID = read_data(2)

if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true )
{
set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
}
return PLUGIN_HANDLED
}

public CmdBuyDg(id)
{
if ( !is_user_alive(id))
{
//client_print(id,print_chat, "Что бы взять Golden Deagle вы должны быть живы!")
return PLUGIN_HANDLED
}

new money = cs_get_user_money(id)

if (money >= get_pcvar_num(cvar_cost))
{
cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
Player_DropWeapons ( id, 2 )
new iWeapon = give_item(id, "weapon_deagle")
set_pev(iWeapon, pev_impulse, WK)

give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 70)
g_HasDg[id] = true
}

else
{
client_print(id, print_chat, "Нет денег для покупки Golden Deagle")
}
return PLUGIN_HANDLED
}

public givedeagle(id)
{
Player_DropWeapons ( id, 2 )
new iWeapon = give_item(id, "weapon_deagle")
set_pev(iWeapon, pev_impulse, WK)
give_item(id, "weapon_deagle")
cs_set_user_bpammo(id, CSW_DEAGLE, 70)
g_HasDg[id] = true
}

public give_deagle(id)
{
givedeagle(id)
return PLUGIN_CONTINUE
}

public checkWeapon(id)
{
new plrClip, plrAmmo
new plrWeapId

plrWeapId = get_user_weapon(id, plrClip , plrAmmo)

if (plrWeapId == CSW_DEAGLE && g_HasDg[id])
checkModel(id)
else
return PLUGIN_CONTINUE

return PLUGIN_HANDLED
}

public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDg[attacker] && !(m_bitsDamageType & DMG_GRENADE))
{
SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
}
}

public fw_CmdStart( id, uc_handle, seed )
{
if( !is_user_alive( id ) )
return PLUGIN_HANDLED

if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
{
new szClip, szAmmo
new szWeapID = get_user_weapon( id, szClip, szAmmo )

if( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && !g_hasZoom[id] == true)
{
g_hasZoom[id] = true
cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.40, 2.40, 0, 100 )
}

else if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && g_hasZoom[id])
{
g_hasZoom[ id ] = false
cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )

}
}
return PLUGIN_HANDLED
}

Player_DropWeapons(const iPlayer, const iSlot)
{
new szWeaponName[32], iItem = get_pdata_cbase(iPlayer, m_rgpPlayerItems_CBasePlayer + iSlot, XO_PLAYER);

while (pev_valid(iItem) == 2)
{
pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName));
engclient_cmd(iPlayer, "drop", szWeaponName);

iItem = get_pdata_cbase(iItem, m_pNext, XO_WEAPON);
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 16.7.2015, 17:26
Сообщение #9
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Работает, но криво.
Если покупаеш щит, а потом дигл - то щит выбрасуется - отлично!
Но...
Если покупаеш дигл, а потом щит - то щит покупается... А надо чтобы не покупался.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 16.7.2015, 17:41
Сообщение #10


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Lena1978, вы не говорили что либо про покупку щита.

Код
Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
 
#define is_valid_player(%1) (1 <= %1 <= 32)
 
#define m_bitsDamageType 76
 
#define DMG_GRENADE (1<<24)
 
new DEAGLE_V_MODEL[] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[] = "models/p_golden_deagle.mdl"
new DEAGLE_W_MODEL[] = "models/w_golden_deagle.mdl"
 
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_rgpPlayerItems_CWeaponBox 34
#define m_pNext 42
#define m_iId 43
#define m_rgpPlayerItems_CBasePlayer 367
 
new cvar_dmgmultiplier
new bool:g_HasDg[33], bool:g_bHasGA[33]
new g_hasZoom[33]
new cvar_cost
 
#define WK 3344
 
public plugin_precache()
{
   precache_model(DEAGLE_V_MODEL);
   precache_model(DEAGLE_P_MODEL);
   precache_model(DEAGLE_W_MODEL);
   precache_sound("weapons/zoom.wav");
}
 
public plugin_init()
{
   cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "2");
   cvar_cost = register_cvar("goldendeagle_cost", "3000");
    
   register_concmd("amx_goldendg", "give_deagle", ADMIN_LEVEL_H);

   register_clcmd( "shield", "check" )
    
   register_plugin("Golden Deagle", "1.6", "AlejandroSk")
   register_event("DeathMsg", "Death", "a")
   register_event("WeapPickup","checkModel","b","1=19")
   register_event("CurWeapon","checkWeapon","be","1=1")
    
   RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
   RegisterHam(Ham_Touch, "weapon_shield", "TouchWeapon")
   register_forward(FM_SetModel, "fw_SetModel")
   RegisterHam ( Ham_Item_AttachToPlayer, "weapon_deagle", "fw_Item_AttachToPlayer" )
   register_event ( "HLTV", "ev_RoundStart", "a", "1=0", "2=0" )
    
   register_clcmd("say /goldendeagle", "CmdBuyDg")
    
   register_forward(FM_CmdStart, "fw_CmdStart")
}

public check(id){
   if(g_HasDg[id])
return PLUGIN_HANDLED
}
 
public ev_RoundStart ()
{
   new iPlayers[32], iNum
   get_players ( iPlayers, iNum )
    
   for ( --iNum; iNum >= 0; --iNum )
      g_bHasGA[iPlayers[iNum]] = false
}
/*
public plugin_natives ()
   register_native ( "buy_deagle", "native_buy_deagle" )
 
public native_buy_deagle ( plugin_id, num_params )
{
   new id = get_param ( 1 )
     
   if ( !is_user_connected ( id ) )
      return false
           
   givedeagle(id)
   return true
}
*/
 
public TouchWeapon(weapon, id)
{
   if(!is_user_connected(id))
      return HAM_IGNORED
    
   if(g_HasDg[id])
      return HAM_SUPERCEDE
    
   return HAM_IGNORED
}
 
public client_connect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
 
public client_disconnect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
 
public Death()
{
   g_HasDg[read_data(2)] = false
   g_bHasGA[read_data(2)] = false
}
 
public fw_SetModel ( ent, model[] )
{
   if ( pev_valid ( ent ) != 2 )
      return FMRES_IGNORED
    
   if ( strlen ( model ) < 8 )
      return FMRES_IGNORED
    
   if ( model[7] != 'w' || model[8] != '_' )
      return FMRES_IGNORED
    
   static sClassName[32]
   pev ( ent, pev_classname, sClassName, charsmax ( sClassName ) )
    
   if ( !equal ( sClassName, "weaponbox" ) )
      return FMRES_IGNORED
    
   new id = pev ( ent, pev_owner )
    
   if ( pev_valid ( id ) != 2 )
      return FMRES_IGNORED
    
   #define MAX_ITEM_TYPES 6
    
   for (new i, iItem; i < MAX_ITEM_TYPES; i++)
      {
      iItem = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox + i, XO_WEAPON )
    
      if ( pev_valid ( iItem ) == 2 && pev(iItem, pev_impulse) == WK )
         {
         g_HasDg[id] = false
         engfunc ( EngFunc_SetModel, ent, DEAGLE_W_MODEL )
         return FMRES_SUPERCEDE
         }
      }
    
   return FMRES_IGNORED
}
 
public fw_Item_AttachToPlayer ( ent, id )
{
   if ( pev_valid ( ent ) !=2 || !is_user_alive ( id ) )
      return HAM_IGNORED
    
   if ( pev ( ent, pev_impulse ) == WK )
      g_HasDg[id] = true
    
   return HAM_IGNORED
}
 
public checkModel(id)
{
   if ( !g_HasDg[id] )
      return PLUGIN_HANDLED
 
   new szWeapID = read_data(2)
    
   if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true )
      {
      set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
      set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
      }
   return PLUGIN_HANDLED
}
 
public CmdBuyDg(id)
{
   if ( !is_user_alive(id))
      {
      //client_print(id,print_chat, "Что бы взять Golden Deagle вы должны быть живы!")
      return PLUGIN_HANDLED
      }
    
   new money = cs_get_user_money(id)
    
   if (money >= get_pcvar_num(cvar_cost))
      {
      cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
      Player_DropWeapons ( id, 2 )
      new iWeapon = give_item(id, "weapon_deagle")
      set_pev(iWeapon, pev_impulse, WK)
       
      give_item(id, "weapon_deagle")
      cs_set_user_bpammo(id, CSW_DEAGLE, 70)
      g_HasDg[id] = true
      }
    
   else
      {
      client_print(id, print_chat, "Нет денег для покупки Golden Deagle")
      }
   return PLUGIN_HANDLED
}
 
public givedeagle(id)
{
   Player_DropWeapons ( id, 2 )
   new iWeapon = give_item(id, "weapon_deagle")
   set_pev(iWeapon, pev_impulse, WK)
   give_item(id, "weapon_deagle")
   cs_set_user_bpammo(id, CSW_DEAGLE, 70)
   g_HasDg[id] = true
}
 
public give_deagle(id)
{
   givedeagle(id)
   return PLUGIN_CONTINUE
}
 
public checkWeapon(id)
{
   new plrClip, plrAmmo
   new plrWeapId
    
   plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
    
   if (plrWeapId == CSW_DEAGLE && g_HasDg[id])
      checkModel(id)
   else
      return PLUGIN_CONTINUE
    
   return PLUGIN_HANDLED
}
 
public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDg[attacker] && !(m_bitsDamageType & DMG_GRENADE))
   {
   SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
   }
}
 
public fw_CmdStart( id, uc_handle, seed )
{
   if( !is_user_alive( id ) )
      return PLUGIN_HANDLED
 
   if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
      {
      new szClip, szAmmo
      new szWeapID = get_user_weapon( id, szClip, szAmmo )
       
      if( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && !g_hasZoom[id] == true)
         {
         g_hasZoom[id] = true
         cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
         emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.40, 2.40, 0, 100 )
         }
       
      else if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && g_hasZoom[id])
         {
         g_hasZoom[ id ] = false
         cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
 
         }
   }
   return PLUGIN_HANDLED
}
 
Player_DropWeapons(const iPlayer, const iSlot)
{
   new szWeaponName[32], iItem = get_pdata_cbase(iPlayer, m_rgpPlayerItems_CBasePlayer + iSlot, XO_PLAYER);
    
   while (pev_valid(iItem) == 2)
   {
   pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName));
   engclient_cmd(iPlayer, "drop", szWeaponName);
 
   iItem = get_pdata_cbase(iItem, m_pNext, XO_WEAPON);
   }
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 16.7.2015, 19:37
Сообщение #11
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Спасибо. Попрбую
а что делать со строчками которые дал Финток

public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(attacker != inflictor || !is_valid_player(attacker) || victim == attacker
|| damage_type & DMG_HEGRENADE)
return HAM_IGNORED

if((get_user_weapon(attacker) == CSW_DEAGLE) && g_HasDg[attacker])
{
SetHamParamFloat(4, damage * get_pcvar_float(cvar_dmgmultiplier))
return HAM_HANDLED
}
return HAM_IGNORED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 16.7.2015, 20:09
Сообщение #12


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Lena1978, если последний вариант работает, то ничего с ними делать не нужно.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 16.7.2015, 21:51
Сообщение #13
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Цитата(Fullserver @ 16.7.2015, 22:05) *
Lena1978, если последний вариант работает, то ничего с ними делать не нужно.

Всё работает. СПАСИБО!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 17.7.2015, 15:21
Сообщение #14


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

Fullserver, мне вот интересно, и как же это будет работать?
Код:

#define m_bitsDamageType 76

#define DMG_GRENADE (1<<24)

!(m_bitsDamageType & DMG_GRENADE)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 17.7.2015, 22:15
Сообщение #15
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Цитата(Fintok @ 17.7.2015, 17:17) *
Fullserver, мне вот интересно, и как же это будет работать?
Код:

#define m_bitsDamageType 76

#define DMG_GRENADE (1<<24)

!(m_bitsDamageType & DMG_GRENADE)


А как надо правильно?
урон гранаты сложно измерить, а если скомпилить то оно работает
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 17.7.2015, 22:19
Сообщение #16


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Lena1978, так работает или нет?)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 17.7.2015, 22:29
Сообщение #17
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Цитата(Fullserver @ 17.7.2015, 23:14) *
Lena1978, так работает или нет?)


плагин компилится и работает
Перестатал ли урон гранаты умножаться на 2, я не знаю...
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 17.7.2015, 22:39
Сообщение #18


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Lena1978, так проверьте)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Lena1978
сообщение 17.7.2015, 22:44
Сообщение #19
Стаж: 17 лет

Сообщений: 318
Благодарностей: 37
Полезность: < 0

Цитата(Fullserver @ 18.7.2015, 0:34) *
Lena1978, так проверьте)

Надо время понаблюдать... напишу.
Финток намекнул что не получится так?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fullserver
сообщение 17.7.2015, 22:50
Сообщение #20


Иконка группы

Стаж: 11 лет

Сообщений: 5122
Благодарностей: 2100
Полезность: 1394

Действительно, ошибся.

Рабочий вариант
Код:
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
  
#define is_valid_player(%1) (1 <= %1 <= 32)
  
#define m_bitsDamageType 76
  
#define DMG_GRENADE (1<<24)
  
new DEAGLE_V_MODEL[] = "models/v_golden_deagle.mdl"
new DEAGLE_P_MODEL[] = "models/p_golden_deagle.mdl"
new DEAGLE_W_MODEL[] = "models/w_golden_deagle.mdl"
  
#define XO_WEAPON 4
#define XO_PLAYER 5
#define m_rgpPlayerItems_CWeaponBox 34
#define m_pNext 42
#define m_iId 43
#define m_rgpPlayerItems_CBasePlayer 367
  
new cvar_dmgmultiplier
new bool:g_HasDg[33], bool:g_bHasGA[33]
new g_hasZoom[33]
new cvar_cost
  
#define WK 3344
  
public plugin_precache()
{
   precache_model(DEAGLE_V_MODEL);
   precache_model(DEAGLE_P_MODEL);
   precache_model(DEAGLE_W_MODEL);
   precache_sound("weapons/zoom.wav");
}
  
public plugin_init()
{
   cvar_dmgmultiplier = register_cvar("goldendeagle_dmg_multiplier", "2");
   cvar_cost = register_cvar("goldendeagle_cost", "3000");
     
   register_concmd("amx_goldendg", "give_deagle", ADMIN_LEVEL_H);
 
   register_clcmd( "shield", "check" )
     
   register_plugin("Golden Deagle", "1.6", "AlejandroSk")
   register_event("DeathMsg", "Death", "a")
   register_event("WeapPickup","checkModel","b","1=19")
   register_event("CurWeapon","checkWeapon","be","1=1")
     
   RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
   RegisterHam(Ham_Touch, "weapon_shield", "TouchWeapon")
   register_forward(FM_SetModel, "fw_SetModel")
   RegisterHam ( Ham_Item_AttachToPlayer, "weapon_deagle", "fw_Item_AttachToPlayer" )
   register_event ( "HLTV", "ev_RoundStart", "a", "1=0", "2=0" )
     
   register_clcmd("say /goldendeagle", "CmdBuyDg")
     
   register_forward(FM_CmdStart, "fw_CmdStart")
}
 
public check(id){
   if(g_HasDg[id])
   return PLUGIN_HANDLED
}
  
public ev_RoundStart ()
{
   new iPlayers[32], iNum
   get_players ( iPlayers, iNum )
     
   for ( --iNum; iNum >= 0; --iNum )
      g_bHasGA[iPlayers[iNum]] = false
}
/*
public plugin_natives ()
   register_native ( "buy_deagle", "native_buy_deagle" )
  
public native_buy_deagle ( plugin_id, num_params )
{
   new id = get_param ( 1 )
      
   if ( !is_user_connected ( id ) )
      return false
            
   givedeagle(id)
   return true
}
*/
  
public TouchWeapon(weapon, id)
{
   if(!is_user_connected(id))
      return HAM_IGNORED
     
   if(g_HasDg[id])
      return HAM_SUPERCEDE
     
   return HAM_IGNORED
}
  
public client_connect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
  
public client_disconnect(id)
{
   g_HasDg[id] = false
   g_bHasGA[id] = false
}
  
public Death()
{
   g_HasDg[read_data(2)] = false
   g_bHasGA[read_data(2)] = false
}
  
public fw_SetModel ( ent, model[] )
{
   if ( pev_valid ( ent ) != 2 )
      return FMRES_IGNORED
     
   if ( strlen ( model ) < 8 )
      return FMRES_IGNORED
     
   if ( model[7] != 'w' || model[8] != '_' )
      return FMRES_IGNORED
     
   static sClassName[32]
   pev ( ent, pev_classname, sClassName, charsmax ( sClassName ) )
     
   if ( !equal ( sClassName, "weaponbox" ) )
      return FMRES_IGNORED
     
   new id = pev ( ent, pev_owner )
     
   if ( pev_valid ( id ) != 2 )
      return FMRES_IGNORED
     
   #define MAX_ITEM_TYPES 6
     
   for (new i, iItem; i < MAX_ITEM_TYPES; i++)
      {
      iItem = get_pdata_cbase ( ent, m_rgpPlayerItems_CWeaponBox + i, XO_WEAPON )
     
      if ( pev_valid ( iItem ) == 2 && pev(iItem, pev_impulse) == WK )
         {
         g_HasDg[id] = false
         engfunc ( EngFunc_SetModel, ent, DEAGLE_W_MODEL )
         return FMRES_SUPERCEDE
         }
      }
     
   return FMRES_IGNORED
}
  
public fw_Item_AttachToPlayer ( ent, id )
{
   if ( pev_valid ( ent ) !=2 || !is_user_alive ( id ) )
      return HAM_IGNORED
     
   if ( pev ( ent, pev_impulse ) == WK )
      g_HasDg[id] = true
     
   return HAM_IGNORED
}
  
public checkModel(id)
{
   if ( !g_HasDg[id] )
      return PLUGIN_HANDLED
  
   new szWeapID = read_data(2)
     
   if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true )
      {
      set_pev(id, pev_viewmodel2, DEAGLE_V_MODEL)
      set_pev(id, pev_weaponmodel2, DEAGLE_P_MODEL)
      }
   return PLUGIN_HANDLED
}
  
public CmdBuyDg(id)
{
   if ( !is_user_alive(id))
      {
      //client_print(id,print_chat, "Что бы взять Golden Deagle вы должны быть живы!")
      return PLUGIN_HANDLED
      }
     
   new money = cs_get_user_money(id)
     
   if (money >= get_pcvar_num(cvar_cost))
      {
      cs_set_user_money(id, money - get_pcvar_num(cvar_cost))
      Player_DropWeapons ( id, 2 )
      new iWeapon = give_item(id, "weapon_deagle")
      set_pev(iWeapon, pev_impulse, WK)
        
      give_item(id, "weapon_deagle")
      cs_set_user_bpammo(id, CSW_DEAGLE, 70)
      g_HasDg[id] = true
      }
     
   else
      {
      client_print(id, print_chat, "Нет денег для покупки Golden Deagle")
      }
   return PLUGIN_HANDLED
}
  
public givedeagle(id)
{
   Player_DropWeapons ( id, 2 )
   new iWeapon = give_item(id, "weapon_deagle")
   set_pev(iWeapon, pev_impulse, WK)
   give_item(id, "weapon_deagle")
   cs_set_user_bpammo(id, CSW_DEAGLE, 70)
   g_HasDg[id] = true
}
  
public give_deagle(id)
{
   givedeagle(id)
   return PLUGIN_CONTINUE
}
  
public checkWeapon(id)
{
   new plrClip, plrAmmo
   new plrWeapId
     
   plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
     
   if (plrWeapId == CSW_DEAGLE && g_HasDg[id])
      checkModel(id)
   else
      return PLUGIN_CONTINUE
     
   return PLUGIN_HANDLED
}
  
public fw_TakeDamage(victim, inflictor, attacker, Float:damage)
{
if ( is_valid_player( attacker ) && get_user_weapon(attacker) == CSW_DEAGLE && g_HasDg[attacker] && !(get_pdata_int(victim, m_bitsDamageType) & DMG_GRENADE))
   {
   SetHamParamFloat(4, damage * get_pcvar_float( cvar_dmgmultiplier ) )
   }
}
  
public fw_CmdStart( id, uc_handle, seed )
{
   if( !is_user_alive( id ) )
      return PLUGIN_HANDLED
  
   if( ( get_uc( uc_handle, UC_Buttons ) & IN_ATTACK2 ) && !( pev( id, pev_oldbuttons ) & IN_ATTACK2 ) )
      {
      new szClip, szAmmo
      new szWeapID = get_user_weapon( id, szClip, szAmmo )
        
      if( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && !g_hasZoom[id] == true)
         {
         g_hasZoom[id] = true
         cs_set_user_zoom( id, CS_SET_AUGSG552_ZOOM, 0 )
         emit_sound( id, CHAN_ITEM, "weapons/zoom.wav", 0.40, 2.40, 0, 100 )
         }
        
      else if ( szWeapID == CSW_DEAGLE && g_HasDg[id] == true && g_hasZoom[id])
         {
         g_hasZoom[ id ] = false
         cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
  
         }
   }
   return PLUGIN_HANDLED
}
  
Player_DropWeapons(const iPlayer, const iSlot)
{
   new szWeaponName[32], iItem = get_pdata_cbase(iPlayer, m_rgpPlayerItems_CBasePlayer + iSlot, XO_PLAYER);
     
   while (pev_valid(iItem) == 2)
   {
   pev(iItem, pev_classname, szWeaponName, charsmax(szWeaponName));
   engclient_cmd(iPlayer, "drop", szWeaponName);
  
   iItem = get_pdata_cbase(iItem, m_pNext, XO_WEAPON);
   }
}


Либо можете использовать версию Fintok

Отредактировал: Fullserver, - 17.7.2015, 22:53
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: