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

Помогите с плагином

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Помогите с плагином

Сообщение tERoR » 05 июл 2010, 00:43

Вот,собственно,сделал екстра пушку,у которой должны быть свои звуки выстрела,перезарядки и тд
Все прописал-но не работает.Звук стандартный от М249 остается(М249 взят за основу этой пушки)
Может кто нибудь мне поможет в этом...Заранее спасибо.Ниже код плагина

Код: Выделить всё
#include <amxmodx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <cstrike>
#include <zombieplague>

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

new AK_V_MODEL[64] = "models/teror-zombie/md/v_hk23.mdl"
new AK_P_MODEL[64] = "models/teror-zombie/md/p_hk23.mdl"

/* Pcvars */
new cvar_dmgmultiplier, cvar_goldbullets,  cvar_custommodel, cvar_uclip

// Item ID
new g_itemid

new bool:g_HasAk[33]

new g_hasZoom[ 33 ]
new bullets[ 33 ]

// Sprite
new m_spriteTexture

new const g_sound_buyarmor[] = { "items/tr_kevlar.wav" }
const Wep_ak47 = ((1<<CSW_M249))
const g_armor_amount = 250
const g_armor_limit = 999

new const hk23_sounds[][] =
{
        "weapons/hk23-1.wav",
        "weapons/hk23-1.wav",
        "weapons/hk23_draw.wav",
        "weapons/hk23_foley1.wav",
        "weapons/hk23_foley2.wav",
        "weapons/hk23_foley3.wav",
        "weapons/hk23_clipin.wav",
        "weapons/hk23_clipout.wav"

}

new const oldhk23_sounds[][] =
{
    "weapons/m249-1.wav",
    "weapons/m249-2.wav",
    "weapons/m249-boxin.wav",
    "weapons/m249-boxout.wav",
    "weapons/m249-chain.wav",
    "weapons/m249-coverdown.wav",
    "weapons/m249-coverup.wav",
    "weapons/m249-coverup.wav"
}

public plugin_init()
{
   
   /* CVARS */
   cvar_dmgmultiplier = register_cvar("zp_goldenak_dmg_multiplier", "5")
   cvar_custommodel = register_cvar("zp_goldenak_custom_model", "1")
   cvar_goldbullets = register_cvar("zp_goldenak_gold_bullets", "0")
   cvar_uclip = register_cvar("zp_goldenak_unlimited_clip", "0")
   
   register_plugin("[ZP] Extra: Golden Ak 47", "1.1", "AlejandroSk")
   g_itemid = zp_register_extra_item("Пулемет [HK23] + Armor ", 25, ZP_TEAM_HUMAN)
   register_event("DeathMsg", "Death", "a")
   register_event("WeapPickup","checkModel","b","1=19")
   register_event("CurWeapon","checkWeapon","be","1=1")
   register_event("CurWeapon", "make_tracer", "be", "1=1", "3>0")
   RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
   register_forward( FM_CmdStart, "fw_CmdStart" )
   RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
        register_forward(FM_EmitSound, "fw_EmitSound");
   
}

public client_connect(id)
{
   g_HasAk[id] = false
}

public client_disconnect(id)
{
   g_HasAk[id] = false
}

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

public fwHamPlayerSpawnPost(id)
{
   g_HasAk[id] = false
}

public plugin_precache()
{
    for(new i = 0; i < sizeof hk23_sounds; i++)
        precache_sound(hk23_sounds[i])
   precache_model(AK_V_MODEL)
   precache_model(AK_P_MODEL)

   m_spriteTexture = precache_model("sprites/dot.spr")
   precache_sound("weapons/zoom.wav")
}

public zp_user_infected_post(id)
{
   if (zp_get_user_zombie(id))
   {
      g_HasAk[id] = false
   }
}

public checkModel(id)
{
   if ( zp_get_user_zombie(id) )
      return PLUGIN_HANDLED
   
   new szWeapID = read_data(2)
   
   if ( szWeapID == CSW_M249 && g_HasAk[id] == true && get_pcvar_num(cvar_custommodel) )
   {
      set_pev(id, pev_viewmodel2, AK_V_MODEL)
      set_pev(id, pev_weaponmodel2, AK_P_MODEL)
   }
   return PLUGIN_HANDLED
}

public checkWeapon(id)
{
   new plrClip, plrAmmo, plrWeap[32]
   new plrWeapId
   
   plrWeapId = get_user_weapon(id, plrClip , plrAmmo)
   
   if (plrWeapId == CSW_M249 && g_HasAk[id])
   {
      checkModel(id)
   }
   else
   {
      return PLUGIN_CONTINUE
   }
   
   if (plrClip == 0 && get_pcvar_num(cvar_uclip))
   {
      // If the user is out of ammo..
      get_weaponname(plrWeapId, plrWeap, 31)
      // Get the name of their weapon
      give_item(id, plrWeap)
      engclient_cmd(id, plrWeap)
      engclient_cmd(id, plrWeap)
      engclient_cmd(id, plrWeap)
   }
   return PLUGIN_HANDLED
}



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

public fw_EmitSound(id, channel, const sound[])
{
    if(!is_user_alive(id) || zp_get_user_zombie(id))
        return PLUGIN_CONTINUE
       
    for(new i = 0; i < sizeof hk23_sounds; i++)
    {
        if(equal(sound, oldhk23_sounds[i]))
        {
            emit_sound(0, channel, hk23_sounds[i], 1.0, ATTN_NORM, 0, PITCH_NORM)
            return FMRES_SUPERCEDE
        }
    }
           
    return FMRES_IGNORED
}

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_M249 && g_HasAk[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.20, 2.40, 0, 100 )
      }
      
      else if ( szWeapID == CSW_M249 && g_HasAk[id] == true && g_hasZoom[id])
      {
         g_hasZoom[ id ] = false
         cs_set_user_zoom( id, CS_RESET_ZOOM, 0 )
         
      }
      
   }
   return PLUGIN_HANDLED
}


public make_tracer(id)
{
   if (get_pcvar_num(cvar_goldbullets))
   {
      new clip,ammo
      new wpnid = get_user_weapon(id,clip,ammo)
      new pteam[16]
      
      get_user_team(id, pteam, 15)
      
      if ((bullets[id] > clip) && (wpnid == CSW_M249) && g_HasAk[id])
      {
         new vec1[3], vec2[3]
         get_user_origin(id, vec1, 1) // origin; your camera point.
         get_user_origin(id, vec2, 4) // termina; where your bullet goes (4 is cs-only)
         
         
         //BEAMENTPOINTS
         message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
         write_byte (0)     //TE_BEAMENTPOINTS 0
         write_coord(vec1[0])
         write_coord(vec1[1])
         write_coord(vec1[2])
         write_coord(vec2[0])
         write_coord(vec2[1])
         write_coord(vec2[2])
         write_short( m_spriteTexture )
         write_byte(1) // framestart
         write_byte(5) // framerate
         write_byte(2) // life
         write_byte(10) // width
         write_byte(0) // noise
         write_byte( 255 )     // r, g, b
         write_byte( 215 )       // r, g, b
         write_byte( 0 )       // r, g, b
         write_byte(200) // brightness
         write_byte(150) // speed
         message_end()
      }
   
      bullets[id] = clip
   }
   
}

public zp_extra_item_selected(player, itemid)
{
   if ( itemid == g_itemid )
   {
      if ( user_has_weapon(player, CSW_M249) )
      {
         drop_prim(player)
      }
      
      give_item(player, "weapon_m249")
      client_print(player, print_chat, "Вы купили пулемет HK23 + броню")
      g_HasAk[player] = true;

                 set_pev(player, pev_armorvalue, float(min(pev(player, pev_armorvalue)+g_armor_amount, g_armor_limit)))
      engfunc(EngFunc_EmitSound, player, CHAN_BODY, g_sound_buyarmor, 1.0, ATTN_NORM, 0, PITCH_NORM)
   }
}

stock drop_prim(id)
{
   new weapons[32], num
   get_user_weapons(id, weapons, num)
   for (new i = 0; i < num; i++) {
      if (Wep_ak47 & (1<<weapons[i]))
      {
         static wname[32]
         get_weaponname(weapons[i], wname, sizeof wname - 1)
         engclient_cmd(id, "drop", wname)
      }
   }
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\ rtf1\ ansi\ deff0{\ fonttbl{\ f0\ fnil Tahoma;}}n\ viewkind4\ uc1\ pard\ lang1034\ f0\ fs16 n\ par }
*/


Добавлено спустя 30 минут 18 секунд:
мне поможет хоть кто-нибудь??
подпись в ужасе убежала от меня
tERoR
 
Сообщения: 152
Зарегистрирован: 16 май 2010, 17:35
Откуда: Днепропетровск
Благодарил (а): 17 раз.
Поблагодарили: 6 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите с плагином

Сообщение SISA » 05 июл 2010, 01:24

Ооо, ты даже в точности скопировал выдачу армора, зум(багнутый) и все надписи. Хотя нет, у меня же надписи разноцветные... Надо так делать:

new text[100]
format(text,99,"^x04[ZP]^x01 Вы купили Пулемет ^x03[HK23]^x01 + ^x03[Броня]^x01 + ^x03[Zoom]^x01")
message_begin(MSG_ONE,get_user_msgid("SayText"),{0,0,0},id)
write_byte(id)
write_string(text)
message_end()

Дарю :ROFL:
Аватара пользователя
SISA
 
Сообщения: 284
Зарегистрирован: 28 ноя 2009, 01:46
Благодарил (а): 19 раз.
Поблагодарили: 126 раз.
Языки программирования: Counter-Strike 1.6
Counter-Strike: Source
Team Fortress II
Left 4 Dead

Re: Помогите с плагином

Сообщение tERoR » 05 июл 2010, 01:44

ухаха,помог ты очень сильно
тебе какая разница,какое название у пулемета?
плагин я взял с оленей,так что про баги им пиши
знаток епт :ban:
подпись в ужасе убежала от меня
tERoR
 
Сообщения: 152
Зарегистрирован: 16 май 2010, 17:35
Откуда: Днепропетровск
Благодарил (а): 17 раз.
Поблагодарили: 6 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите с плагином

Сообщение Slavvkko » 05 июл 2010, 10:23

[pawn]emit_sound(0channelhk23_sounds[i], 1.0ATTN_NORM0PITCH_NORM[/pawn]
Ид не может быть 0, это не тот случай где можно разослать звук всем. Он издается от Энтити.
Аватара пользователя
Slavvkko
 
Сообщения: 168
Зарегистрирован: 03 окт 2009, 17:58
Откуда: UA
Благодарил (а): 20 раз.
Поблагодарили: 57 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Помогите с плагином

Сообщение tERoR » 05 июл 2010, 12:45

я ставил вместо 0 id - все равно стандартные звуки издает
может я еще где то ошибку сделал?
подпись в ужасе убежала от меня
tERoR
 
Сообщения: 152
Зарегистрирован: 16 май 2010, 17:35
Откуда: Днепропетровск
Благодарил (а): 17 раз.
Поблагодарили: 6 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите с плагином

Сообщение Slavvkko » 05 июл 2010, 15:00

Ааа, FM_EmitSound не срабатывает на звуки оружия (кроме ножа). Нужно делать другим способом.
Аватара пользователя
Slavvkko
 
Сообщения: 168
Зарегистрирован: 03 окт 2009, 17:58
Откуда: UA
Благодарил (а): 20 раз.
Поблагодарили: 57 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Помогите с плагином

Сообщение tERoR » 10 авг 2010, 15:39

каким же??
подпись в ужасе убежала от меня
tERoR
 
Сообщения: 152
Зарегистрирован: 16 май 2010, 17:35
Откуда: Днепропетровск
Благодарил (а): 17 раз.
Поблагодарили: 6 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите с плагином

Сообщение Fedcomp » 10 авг 2010, 19:31

hamsandswitch?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Помогите с плагином

Сообщение tERoR » 10 авг 2010, 21:36

пробовал,но нужно еще заглушить стандартный звук
не знаю функции,может подскажеш?
подпись в ужасе убежала от меня
tERoR
 
Сообщения: 152
Зарегистрирован: 16 май 2010, 17:35
Откуда: Днепропетровск
Благодарил (а): 17 раз.
Поблагодарили: 6 раз.
Опыт программирования: Около 3 месяцев
Языки программирования: Counter-Strike 1.6

Re: Помогите с плагином

Сообщение Fedcomp » 10 авг 2010, 22:17

tERoR писал(а):пробовал,но нужно еще заглушить стандартный звук
не знаю функции,может подскажеш?

Если отлов звука есть то думаю его можно и заблокировать
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust


Вернуться в Скриптинг

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

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