Русское сообщество по скриптингу

Golden AK-47: проблемы с уроном

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Golden AK-47: проблемы с уроном

Сообщение webarx » 02 авг 2016, 08:50

Проблемы с уроном по ботам
Запускаю сервер урон идет как задано в плагине, перезагружаю или перезапускаю сервер опять урон становиться как у стандартного оружия.

Вот сам плагин:

Код: Выделить всё
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <hamsandwich>
#include <war3ft_natives>
  
new const g_item_name[] = {"Золотой AK-47 ZOOM"}
#define is_valid_player(%1) (1 <= %1 <= 32)
  
new AK_V_MODEL[] = "models/wl/v_gold_ak47.mdl"
new AK_P_MODEL[] = "models/wl/p_gold_ak47.mdl"
new AK_W_MODEL[] = "models/wl/w_gold_ak47.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_HasAk[33], bool:g_bHasGA[33]
new 
g_hasZoom[33]
new 
cvar_cost

new g_itemid_ak47;
//Переменные
new iCvarItemCost,iCvarOnOffItem;
  
#define WK 1111
  
public plugin_precache()
{
   
precache_model(AK_V_MODEL);
   
precache_model(AK_P_MODEL);
   
precache_model(AK_W_MODEL);
   
precache_sound("weapons/zoom.wav");
}  
  
public 
plugin_init()
{
    
cvar_dmgmultiplier register_cvar("goldenak_dmg_multiplier""5")
    
iCvarItemCost register_cvar("wc3_ak47_cost""4000");
    
iCvarOnOffItem register_cvar("wc3_ak47_on_off""1");
    
g_itemid_ak47 wc3_register_extra_item(g_item_name,
       
get_pcvar_num(iCvarItemCost),iCvarOnOffItem,1);
    
       
register_plugin("Golden AK-47""1.5""AlejandroSk_Mod"
       
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_ak47""fw_Item_AttachToPlayer" )
       
register_event "HLTV""ev_RoundStart""a""1=0""2=0" )
 
       
register_clcmd("say /goldenak""CmdBuyAk")
       
register_forward(FM_CmdStart"fw_CmdStart")
}

[
color=#FF0000]/* ========= START OF REGISTER HAM TO SUPPORT BOTS FUNC ========= */
new g_register
public client_putinserver(id)
{
    if(
is_user_bot(id) && !g_register)
    {
        
g_register 1
        set_task
(0.1"ham_register"id)
    }
}

public 
ham_register(id)
{
    
RegisterHamFromEntity(Ham_TakeDamageid"fw_TakeDamage")    
    
RegisterHamFromEntity(Ham_TraceAttackid"fw_TraceAttack"1)
}

/* ======== END OF REGISTER HAM TO SUPPORT BOTS FUNC ============= */[/color]
  
public 
ev_RoundStart ()
{
   new 
iPlayers[32], iNum
   get_players 
iPlayersiNum )
  
   for ( --
iNumiNum >= 0; --iNum )
      
g_bHasGA[iPlayers[iNum]] = false
}
 
public 
client_connect(id)
{
   
g_HasAk[id] = false
   g_bHasGA
[id] = false
}
  
public 
client_disconnect(id)
{
   
g_HasAk[id] = false
   g_bHasGA
[id] = false
}
  
public 
Death()
{
   
g_HasAk[read_data(2)] = false
   g_bHasGA
[read_data(2)] = false
}
  
public 
fw_SetModel entmodel[] )
{
   if ( 
pev_valid ent ) != )
      return 
FMRES_IGNORED
  
   
if ( strlen model ) < )
      return 
FMRES_IGNORED
  
   
if ( model[7] != 'w' || model[8] != '_' )
      return 
FMRES_IGNORED
  
   
static sClassName[32]
   
pev entpev_classnamesClassNamecharsmax sClassName ) )
     
   if ( !
equal sClassName"weaponbox" ) )
      return 
FMRES_IGNORED
  
   
new id pev entpev_owner )
  
   if ( 
pev_valid id ) != )
      return 
FMRES_IGNORED
  
   
#define MAX_ITEM_TYPES 6
     
   
for (new iiItemMAX_ITEM_TYPESi++)
   {
      
iItem get_pdata_cbase entm_rgpPlayerItems_CWeaponBox iXO_WEAPON )
        
      if ( 
pev_valid iItem ) == && pev(iItempev_impulse) == WK )
      {
         
g_HasAk[id] = false
         engfunc 
EngFunc_SetModelentAK_W_MODEL )
         return 
FMRES_SUPERCEDE
      
}
   }
  
   return 
FMRES_IGNORED
}
  
public 
fw_Item_AttachToPlayer entid )
{
   if ( 
pev_valid ent ) !=|| !is_user_alive id ) )
      return 
HAM_IGNORED
  
   
if ( pev entpev_impulse ) == WK )
      
g_HasAk[id] = true
  
   
return HAM_IGNORED
}
  
public 
checkModel(id)
{
   if ( !
g_HasAk[id] )
      return 
PLUGIN_HANDLED
     
   
new szWeapID read_data(2)
     
   if ( 
szWeapID == CSW_AK47 && g_HasAk[id] == true )
   {
      
set_pev(idpev_viewmodel2AK_V_MODEL)
      
set_pev(idpev_weaponmodel2AK_P_MODEL)
   }
   return 
PLUGIN_HANDLED
}
 
public 
CmdBuyAk(id)
{
   if ( !
is_user_alive(id))
   {
      
//client_print(id,print_chat, "Что бы взять Golden AK-47 вы должны быть живы!")
      
return PLUGIN_HANDLED
   
}
    
   new 
money cs_get_user_money(id)
    
   if (
money >= get_pcvar_num(cvar_cost))
   {
      
cs_set_user_money(idmoney get_pcvar_num(cvar_cost))
      
Player_DropWeapons id)
      new 
iWeapon give_item(id"weapon_ak47")
      
set_pev(iWeaponpev_impulseWK)
       
      
give_item(id"weapon_ak47")
      
cs_set_user_bpammo(idCSW_AK4790)
      
g_HasAk[id] = true
   
}
    
   else
   {
      
client_print(idprint_chat"Недостаточно денег. Цена $%d "get_pcvar_num(cvar_cost))
   }
   return 
PLUGIN_HANDLED
}

public 
wc3_extra_item_selected(iditemid)  
{  
    if (
itemid == g_itemid_ak47)  
    {  
        
giveak47(id);
    }  

 
public 
giveak47(id)
{
   
Player_DropWeapons id)
   new 
iWeapon give_item(id"weapon_ak47")
   
set_pev(iWeaponpev_impulseWK)
   
give_item(id"weapon_ak47")
   
cs_set_user_bpammo(idCSW_AK4790)
   
g_HasAk[id] = true
}
  
public 
give_ak47(idlevelcid)
{
   if(!
cmd_access(idlevelcid2))
      return 
PLUGIN_HANDLED
        
   
new arg[32]; read_argv(1arg31)
   new 
player cmd_target(idarg7)
   if(!
player)
   {
      
console_print(id"Give Golden AK-47 Failed")
      return 
PLUGIN_HANDLED
   
}
   
giveak47(player)
   return 
PLUGIN_CONTINUE
}  
  
public 
checkWeapon(id)
{
   new 
plrClipplrAmmo
   
new plrWeapId
     
   plrWeapId 
get_user_weapon(idplrClip plrAmmo)
     
   if (
plrWeapId == CSW_AK47 && g_HasAk[id])
      
checkModel(id)
   else
      return 
PLUGIN_CONTINUE
        
   
return PLUGIN_HANDLED
}
  
public 
fw_TakeDamage(victiminflictorattackerFloat:damage)
{
    if (
victim != attacker && is_user_connected(attacker))
    {
        if(
get_user_weapon(attacker) == CSW_AK47)
        {
            if(
g_HasAk[attacker])
                
SetHamParamFloat(4damage get_pcvar_float(cvar_dmgmultiplier))
        }
    }
}

public 
fw_TraceAttack(iEntiAttackerFloat:flDamageFloat:fDir[3], ptriDamageType)
{
    if(!
is_user_alive(iAttacker))
        return

    new 
g_currentweapon get_user_weapon(iAttacker)

    if(
g_currentweapon != CSW_AK47) return
    
    if(!
g_HasAk[iAttacker]) return

    static 
Float:flEnd[3]
    
get_tr2(ptrTR_vecEndPosflEnd)
}
 
public 
fw_CmdStartiduc_handleseed )
{
   if( !
is_user_aliveid ) ) 
      return 
PLUGIN_HANDLED
    
   
if( ( get_ucuc_handleUC_Buttons ) & IN_ATTACK2 ) && !( pevidpev_oldbuttons ) & IN_ATTACK2 ) )
   {
      new 
szClipszAmmo
      
new szWeapID get_user_weaponidszClipszAmmo )
       
      if( 
szWeapID == CSW_AK47 && g_HasAk[id] == true && !g_hasZoom[id] == true)
      {
         
g_hasZoom[id] = true
         cs_set_user_zoom
idCS_SET_AUGSG552_ZOOM)
         
emit_soundidCHAN_ITEM"weapons/zoom.wav"0.402.400100 )
      }
 
      else if ( 
szWeapID == CSW_AK47 && g_HasAk[id] == true && g_hasZoom[id])
      {
         
g_hasZoomid ] = false
         cs_set_user_zoom
idCS_RESET_ZOOM)
          
      }
   }
   return 
PLUGIN_HANDLED
}
 
Player_DropWeapons(const iPlayer, const iSlot)
{
   new 
szWeaponName[32], iItem get_pdata_cbase(iPlayerm_rgpPlayerItems_CBasePlayer iSlotXO_PLAYER);
  
   while (
pev_valid(iItem) == 2)
   {
      
pev(iItempev_classnameszWeaponNamecharsmax(szWeaponName));
      
engclient_cmd(iPlayer"drop"szWeaponName);
  
      
iItem get_pdata_cbase(iItemm_pNextXO_WEAPON);
   }

Красным пометил где задается ботам урон.
Все перепробовал, отключал все плагины, все равно так же.
Помогите разобраться, заранее большое спасибо!

Название темы скорректировано // Subb98
Аватара пользователя
webarx
 
Сообщения: 48
Зарегистрирован: 21 ноя 2012, 14:59
Благодарил (а): 12 раз.
Поблагодарили: 2 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 9