Заявка за преработка "Plasma Gun"

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
MickeyMouse
Извън линия
Потребител
Потребител
Мнения: 36
Регистриран на: 06 Фев 2018, 15:57

Заявка за преработка "Plasma Gun"

Мнение от MickeyMouse » 19 Фев 2018, 08:41

Здравейте, някой може ли да ми преработи (ако е възможно) този плъгин да бъде за "Respawn" мод.
Прикачени файлове
zp_extra_plasmagun.sma
(17.94 KiB) Свалено 101 пъти
zp_extra_plasmagun.sma
(17.94 KiB) Свалено 101 пъти

Аватар
DoPe ;]]
Извън линия
Потребител
Потребител
Мнения: 402
Регистриран на: 27 Фев 2017, 22:10
Обратна връзка:

Заявка за преработка "Plasma Gun"

Мнение от DoPe ;]] » 19 Фев 2018, 14:06

Код за потвърждение: Избери целия код

/* Plugin generated by AMXX-Studio */

#include < AmxModX >
#include < FakeMeta >
#include < HamSandwich >
#include < ZombiePlague >
#include < xs >
#include < cstrike >

#define PLUGIN       "PlasmaGun"
#define VERSION    "0.1"
#define AUTHOR       "Opo4uMapy [Edit by OciXCrom]"

//##########Cvars [Start]##########//

#define WEAPON_MULTI_DAMAGE      1.0   // Множитель урона (Работает если запущено ACTIVE_TRACCE_ATTACK_DAMAGE)
#define WEAPON_TIME_NEXT_ATTACK    0.15   // Время через сколько будет возможна след. аттака
#define WEAPON_TIME_RELOAD      3.19   // Время перезарядки
#define WEAPON__SPEED         0.15

#define WEAPON_BALL_SPEED      2000   // Скорость шара
#define WEAPON_BALL_DAMAGE      250.0   // Урон шара
#define WEAPON_BALL_RADIUS_EXPLODE   130.0   // Радиус взрыва шара
#define WEAPON_BALL_SIZE      random_float(random_float(0.1 , 0.2), random_float(0.3, 0.4)) // Размер шара

#define CLIP            45   // Патроны в обойме
#define AMMO            200   // Патроны в запасе
#define PRICE            16000    // Цена

//#define ACTIVE_SHOOT_DECALS         // Включить декали(дырки) от выстрелов
//#define ACTIVE_SHELL            // Включить/выключить гильзы
//#define ACTIVE_TRACCE_ATTACK_DAMAGE      // Включить урон с помощью трейс аттак

enum   // Отдача
{
   x = -5.0,
   y = 0.0,
   z = 0.0
}

//##########Cvars [End]##########//

#define WEAPON_NEW      "weapon_plasmagun"
#define WEAPON_REFERANCE   "weapon_m249"
#define CLASS_NAME_BALL      "EntBall"

#define STATEMENT_FALLBACK(%0,%1,%2)   public %0()<>{return %1;} public %0()<%2>{return %1;}

const m_iClip             =    51   // оффсет обоймы
const m_pPlayer          =    41    // оффсет для получение id игрока
const m_fInReload         =   54    // оффсет для получения перезарядки
const m_iShellLate          =    57    // оффсет гильз
const m_pActiveItem         =    373    // оффсет get_pdata_cbase
const m_flNextAttack          =    83    // оффсет для блкирования нажатие
const m_flEjectBrass           =    111    // оффсет для вылета гильз с задержкой
const m_szAnimExtention          =    492   // оффсет для установки анимации на игроке
const m_afButtonPressed       =    246     // оффсет для выстрела из пистолета
const m_flTimeWeaponIdle      =    48     // оффсет для анимации idle
const m_flNextPrimaryAttack       =    46    // оффсет для скорости ввыстрела первичной атаки
const m_flNextSecondaryAttack      =   47   // оффсет для скорости ввыстрела вторичной атаки
const m_rgpPlayerItems_CBasePlayer   =   367
const m_rgpPlayerItems_CWeaponBox    =    34
const m_iShotsFired         =   64
const m_pNext            =   42

const OFFSET_LINUX_WEAPONS           =   4    // оффсет для пушки
const OFFSET_LINUX             =       5    // оффсет для игрока

enum
{
   IDLE = 0,   // 1
   RELOAD,      // 2
   DRAW,      // 3
   SHOOT,      // 4
   SHOOT_END   // 5
}

new const Resources_Models[3][] =
{
   "models/v_plasmagun_new.mdl",      // 0
   "models/p_plasmagun.mdl",      // 1
   "models/w_plasmagun.mdl"      // 2
}

new const Resources_Sounds[2][] =
{
   "weapons/plasmagun-1.wav",      // 0
   "weapons/plasmagun_exp.wav"      // 1
}

new const Resources_WeaponList[2][] =
{
   "sprites/640hud3x.spr",         // 0
   "sprites/640hud91.spr"         // 1
}

new const Resources_Sprites[2][] =
{
   "sprites/plasmaball.spr",      // 0
   "sprites/plasmabomb.spr"      // 1
}

new const OFFSET_AMMO[31] =  // Офсеты патронов
{
   0, 385, 0, 378, 0, 381, 0, 382, 380, 0, 386, 383, 382, 380, 380, 380, 382, 386, 377, 386, 379, 381, 380, 386, 378, 0, 384, 380, 378, 0, 383
}
#if defined ACTIVE_TRACCE_ATTACK_DAMAGE
new const TRACE_ATTACK[][] =
{
   "func_breakable",
   "hostage_entity",
   "info_target",
   "player"
}
#endif

#if defined ACTIVE_SHELL
new g_Shell
new const SHELL_MODEL[] = "models/rshell.mdl"
#endif

new g_WeaponID = 0, g_WeaponKey, g_SpriteExp
new g_iForwardDecalIndex, g_WeaponListData[8]

public plugin_init()
{
   //Authors
   register_plugin(PLUGIN, VERSION, AUTHOR)
   
   //Ham
   RegisterHam(Ham_Spawn,          "weaponbox",       "Weapon_SpawnPost",       1)
   RegisterHam(Ham_Touch,         "env_sprite",      "Weapon_Ball_Touch",      1)
   RegisterHam(Ham_Item_Deploy,      WEAPON_REFERANCE,   "Weapon_Deploy",      1)
   RegisterHam(Ham_Weapon_Reload,       WEAPON_REFERANCE,    "Hook_Reload",          0)
   RegisterHam(Ham_Weapon_PrimaryAttack,    WEAPON_REFERANCE,    "Hook_PrimaryAttack_Pre",   0)
   RegisterHam(Ham_Item_AddToPlayer,    WEAPON_REFERANCE,    "Weapon_AddToPlayer",      0)
   RegisterHam(Ham_Item_PostFrame,      WEAPON_REFERANCE,    "Weapon_ItemPostFrame",   0)

   #if defined ACTIVE_TRACCE_ATTACK_DAMAGE
   for(new i = 0; i < sizeof TRACE_ATTACK; i++)
   {
      RegisterHam(Ham_TraceAttack, TRACE_ATTACK[i], "Hook_TraceAttack", 0)
   }
   #endif
   
   //Forward
   register_forward(FM_UpdateClientData,    "fw_UpdateClientData_Post",    1)
   register_forward(FM_PlaybackEvent,    "fw_PlaybackEvent",      0)
   register_forward(FM_SetModel,       "fw_SetModel",         0)
   register_forward(FM_AddToFullPack,    "CPlayer__AddToFullPack_post",    1)
   register_forward(FM_CheckVisibility,    "CEntity__CheckVisibility",   0)
   
   #if defined ACTIVE_SHOOT_DECALS
   register_forward(FM_TraceLine,      "FakeMeta_TraceLine_Post",   1)
   #endif

   #if defined ACTIVE_ZOMBIE_PLAGUE
   g_item = zp_register_extra_item("PlasmaGun", 15, ZP_TEAM_HUMAN)
   #else
   register_clcmd("say /plasmagun", "Weapon_Give")
   #endif
   
   //Other's
   g_WeaponID = get_weaponid(WEAPON_REFERANCE)
   unregister_forward(FM_DecalIndex, g_iForwardDecalIndex, true)
}

public plugin_precache()
{
   g_WeaponKey = engfunc(EngFunc_AllocString, WEAPON_NEW)
   register_message(78, "Hook_WeaponList")
   
   new i
   
   for(i = 0; i < sizeof Resources_Models; i++)
      precache_model(Resources_Models[i])
      
   for(i = 0; i < sizeof Resources_Sounds; i++)
      precache_sound(Resources_Sounds[i])
   
   for(i = 0; i < sizeof Resources_Sprites; i++)
      precache_model(Resources_Sprites[i])
      
   for(i = 0; i < sizeof Resources_WeaponList; i++)
      precache_generic(Resources_WeaponList[i])
      
   PRECACHE_SOUNDS_FROM_MODEL(Resources_Models[0])
   
   #if defined ACTIVE_SHELL
   g_Shell = precache_model(SHELL_MODEL)
   #endif
   g_SpriteExp = precache_model(Resources_Sprites[1])
   
   new Buffer[32]
   formatex(Buffer, charsmax(Buffer), "sprites/%s.txt", WEAPON_NEW)
   precache_generic(Buffer)
   
   g_iForwardDecalIndex = register_forward(FM_DecalIndex, "FakeMeta_DecalIndex_Post", true)

   register_clcmd(WEAPON_NEW, "Weapon_Hook")
}

public Weapon_Hook(id)
{
   engclient_cmd(id, WEAPON_REFERANCE)
   return PLUGIN_HANDLED
}

#if defined ACTIVE_ZOMBIE_PLAGUE
public zp_extra_item_selected(id, itemid)
{
   if(itemid == g_item)
   {
      Weapon_Give(id)
   }
}
#endif

public Weapon_Deploy(weapon)
{      
   static id
   
   if(!CheckItem(weapon, id))
      return HAM_IGNORED

   #if defined ACTIVE_SHOOT_DECALS
   if(zp_get_user_zombie(id))
      return
   #endif

   set_pev(id, pev_viewmodel2, Resources_Models[0])
   set_pev(id, pev_weaponmodel2, Resources_Models[1])

   WeaponList(id, WEAPON_NEW)
   Weapon_SendAnim(id, DRAW)
   
   set_pdata_string(id, m_szAnimExtention * 4, "rifle", -1, OFFSET_LINUX * 4)
   set_pdata_float(id, m_flNextAttack, WEAPON_TIME_NEXT_ATTACK, OFFSET_LINUX)
   
   return HAM_IGNORED
}

public Weapon_AddToPlayer(weapon, id)
{
   if(pev_valid(weapon) != 2 || pev_valid(id) != 2)
      return HAM_IGNORED
      
   if(pev(weapon, pev_impulse) == g_WeaponKey)
   {
        WeaponList(id, WEAPON_NEW)
        return HAM_HANDLED
   }
   else
   {
      WeaponList(id, WEAPON_REFERANCE)
      return HAM_IGNORED
   }
}

public fw_SetModel(entity) <WeaponBox: Enabled>
{
   state WeaponBox: Disabled

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

   for(new i, iItem; i < 6; i++)
   {
      iItem = get_pdata_cbase(entity, m_rgpPlayerItems_CWeaponBox + i, OFFSET_LINUX_WEAPONS)
      
      if(pev_valid(iItem) == 2 && pev(iItem, pev_impulse) == g_WeaponKey)
      {
         InstallWorldModel(entity)
         return FMRES_SUPERCEDE
      }
   }
   return FMRES_IGNORED
}
STATEMENT_FALLBACK(fw_SetModel, FMRES_IGNORED, WeaponBox: Disabled)

public Hook_PrimaryAttack_Pre(weapon)
{
   static id
   
   if(CheckItem(weapon, id))
   {
      Weapon_PrimaryAttack_Pre(weapon, id)
      return HAM_SUPERCEDE
   }
   return HAM_IGNORED
}

public Weapon_PrimaryAttack_Pre(Weapon, id)
{
   static Float:vecPuncheAngle[3]

   state FireBullets: Enabled
   
   pev(id, pev_punchangle, vecPuncheAngle)
   ExecuteHam(Ham_Weapon_PrimaryAttack, Weapon)
   set_pev(id, pev_punchangle, vecPuncheAngle)
   state FireBullets: Disabled

   if(get_pdata_int(Weapon, m_iClip, OFFSET_LINUX_WEAPONS) <= 0)
      return

   if(!get_pdata_int(id, OFFSET_AMMO[g_WeaponID]))
      return

   #if defined ACTIVE_SHOOT_DECALS
   if(zp_get_user_zombie(id))
      return
   #endif

   set_pev(id, pev_punchangle, Float:{x, y, z})
   
   #if defined ACTIVE_SHELL
   cmdBrass(Weapon, id, g_Shell)
   #endif

   CreateBall(id)
   Weapon_SendAnim(id, SHOOT)
   emit_sound(id, CHAN_WEAPON, Resources_Sounds[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
   set_pdata_float(Weapon, m_flNextPrimaryAttack , WEAPON__SPEED , OFFSET_LINUX_WEAPONS)
   set_pdata_float(Weapon, m_flTimeWeaponIdle, WEAPON__SPEED + 3.0, OFFSET_LINUX_WEAPONS)
}

public Weapon_Ball_Touch(entity)
{
   if(!pev_valid(entity))
      return
   
   static ClassName[32]
   pev(entity, pev_classname, ClassName, charsmax(ClassName))
   
   if(equali(ClassName, CLASS_NAME_BALL))
   {
      static Float:flOrigin[3]
      pev(entity, pev_origin, flOrigin)
      
      engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0)
      write_byte(TE_EXPLOSION)
      engfunc(EngFunc_WriteCoord, flOrigin[0])
      engfunc(EngFunc_WriteCoord, flOrigin[1])
      engfunc(EngFunc_WriteCoord, flOrigin[2])
      write_short(g_SpriteExp)
      write_byte(5)
      write_byte(15)
      write_byte(TE_EXPLFLAG_NOPARTICLES | TE_EXPLFLAG_NOSOUND)
      message_end()
      
      emit_sound(entity, CHAN_WEAPON, Resources_Sounds[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)

      new victim  = FM_NULLENT,
      attacker = pev(entity, pev_iuser1)
      
      while((victim = engfunc(EngFunc_FindEntityInSphere, victim, flOrigin, WEAPON_BALL_RADIUS_EXPLODE)) != 0)
      {
         if(!is_user_alive(victim))
            continue

         #if defined ACTIVE_SHOOT_DECALS
         if(!zp_get_user_zombie(victim))
            return
         #endif
            
         ExecuteHamB(Ham_TakeDamage, victim, attacker, attacker, WEAPON_BALL_DAMAGE, DMG_SONIC)
      }
      engfunc(EngFunc_RemoveEntity, entity)
   }
}

public Weapon_ItemPostFrame(weapon)
{
   static id
   id = get_pdata_cbase(weapon, m_pPlayer, OFFSET_LINUX_WEAPONS)

   if(!CheckItem(weapon, id))
      return

   #if defined ACTIVE_SHOOT_DECALS
   if(zp_get_user_zombie(id))
      return
   #endif

   if(!get_pdata_int(weapon, m_fInReload, OFFSET_LINUX_WEAPONS) || get_pdata_float(id, m_flNextAttack) > 0.0)
      return

   new iAmmo = get_pdata_int(id, OFFSET_AMMO[g_WeaponID])
   new iClip = get_pdata_int(weapon, m_iClip, OFFSET_LINUX_WEAPONS)
   new j = min(CLIP - iClip, iAmmo)

   set_pdata_int(weapon, m_iClip, iClip + j, OFFSET_LINUX_WEAPONS)
   set_pdata_int(id, OFFSET_AMMO[g_WeaponID], iAmmo - j)
   set_pdata_int(weapon, m_fInReload, 0, OFFSET_LINUX_WEAPONS)
}

public Hook_Reload(weapon)
{   
   static id
   
   if(CheckItem(weapon, id))
   {
      Weapon_Reload(weapon, id)
      return HAM_SUPERCEDE
   }
   return HAM_IGNORED
}

public Weapon_Reload(weapon, id)
{
   if(get_pdata_int(id, OFFSET_AMMO[g_WeaponID]) <= 0)
      return

   #if defined ACTIVE_SHOOT_DECALS
   if(zp_get_user_zombie(id))
      return
   #endif
      
   ExecuteHam(Ham_Weapon_Reload, weapon)

   Weapon_SendAnim(id, RELOAD)

   set_pdata_float(id, m_flNextAttack, WEAPON_TIME_RELOAD)
   set_pdata_int(weapon, m_fInReload, 1, OFFSET_LINUX_WEAPONS)
   set_pdata_float(weapon, m_flTimeWeaponIdle, WEAPON_TIME_RELOAD, OFFSET_LINUX_WEAPONS)
}

public Weapon_Give(id)
{
   if(pev_valid(id) != 2)
      return FM_NULLENT
      
   static iMoney
   iMoney = cs_get_user_money(id)
   
   if(iMoney < PRICE)
   {
        client_print(id, print_chat, "* You don't have enough money. %i$ are needed.", PRICE)
        return FM_NULLENT
   }
   
   new entity, Float:Origin[3]
   pev(id, pev_origin, Origin)
   
   if ((entity = Weapon_Create(Origin)) != FM_NULLENT)
   {
      Player_DropWeapons(id, ExecuteHamB(Ham_Item_ItemSlot, entity))
      
      set_pev(entity, pev_spawnflags, pev(entity, pev_spawnflags) | SF_NORESPAWN)
      dllfunc(DLLFunc_Touch, entity, id)
      cs_set_user_money(id, iMoney - PRICE)
      
      set_pdata_int(id, OFFSET_AMMO[g_WeaponID], AMMO, OFFSET_LINUX)
      
      return entity
   }
   
   return FM_NULLENT
}

Weapon_Create(const Float: vecOrigin[3] = {0.0, 0.0, 0.0}, const Float: vecAngles[3] = {0.0, 0.0, 0.0})
{
   new entity

   static iszAllocStringCached
   if (iszAllocStringCached || (iszAllocStringCached = engfunc(EngFunc_AllocString, WEAPON_REFERANCE)))
   {
      entity = engfunc(EngFunc_CreateNamedEntity, iszAllocStringCached)
   }
   
   if(pev_valid(entity) != 2)
   {
      return FM_NULLENT
   }
   
   dllfunc(DLLFunc_Spawn, entity)
   engfunc(EngFunc_SetOrigin, entity, vecOrigin)
   
   set_pdata_int(entity, m_iClip, CLIP ,OFFSET_LINUX_WEAPONS)

   set_pev_string(entity, pev_classname, g_WeaponKey)
   set_pev(entity, pev_impulse, g_WeaponKey)
   set_pev(entity, pev_angles, vecAngles)
   
   InstallWorldModel(entity)
   
   return entity
}

public Weapon_SpawnPost(entity)
{
   if(pev_valid(entity) == 2)
   {
      state (pev_valid(pev(entity, pev_owner)) == 2) WeaponBox: Enabled
   }
   
   return HAM_IGNORED
}
#if defined ACTIVE_SHOOT_DECALS
public FakeMeta_TraceLine_Post(const Float: vecTraceStart[3], const Float: vecTraceEnd[3], const fNoMonsters, const iEntToSkip, const iTrace) <FireBullets: Enabled>
{
   static Float: vecEndPos[3]
   
   get_tr2(iTrace, TR_vecEndPos, vecEndPos)
   engfunc(EngFunc_TraceLine, vecEndPos, vecTraceStart, fNoMonsters, iEntToSkip, 0)
   
   UTIL_GunshotDecalTrace(0)
   UTIL_GunshotDecalTrace(iTrace, true)
   
   return FMRES_IGNORED
}
STATEMENT_FALLBACK(FakeMeta_TraceLine_Post, FMRES_IGNORED, FireBullets: Disabled)
#endif
#if defined ACTIVE_TRACCE_ATTACK_DAMAGE
public Hook_TraceAttack(entity, iAttacker, Float:flDamage) <FireBullets: Enabled>
{
   SetHamParamFloat(3, flDamage * WEAPON_MULTI_DAMAGE)
   return HAM_IGNORED
}
STATEMENT_FALLBACK(Hook_TraceAttack, HAM_IGNORED, FireBullets: Disabled)
#endif

public fw_PlaybackEvent() <FireBullets: Enabled>
{
   return FMRES_SUPERCEDE
}
STATEMENT_FALLBACK(fw_PlaybackEvent, FMRES_IGNORED, FireBullets: Disabled)

public fw_UpdateClientData_Post(id, SendWeapons, CD_Handle )
{
   static iItem
   
   if(CheckItem2(id, iItem))
   {
      set_cd(CD_Handle, CD_flNextAttack, get_gametime() + 0.001)
   }
}

#if defined ACTIVE_SHELL
public cmdBrass(Weapon, id, ModelIndex)
{
        set_pdata_int(Weapon, m_iShellLate, ModelIndex, OFFSET_LINUX)
        set_pdata_float(id, m_flEjectBrass, get_gametime())
}
#endif

public Hook_WeaponList(MsgID, MsgDest, MsgEntity)
{
   new WeaponName[32]
   get_msg_arg_string(1, WeaponName, charsmax(WeaponName))
      
   if (!strcmp(WeaponName, WEAPON_REFERANCE))
   {
      for(new i, a = sizeof g_WeaponListData; i < a; i++)
      {
         g_WeaponListData[i] = get_msg_arg_int(i + 2)
      }
   }
}

CreateBall(id)
{
   static entity
   
   if((entity = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_sprite"))))
   {
      static Float:vOrigin[3], Float:vVelocity[3], vAngles[3]

      get_weapon_position(id, vOrigin, 40.0, 12.0, -5.0)
      
      set_pev(entity, pev_classname, CLASS_NAME_BALL)
      set_pev(entity, pev_movetype, MOVETYPE_FLY)
      set_pev(entity, pev_solid, SOLID_SLIDEBOX)
      
      engfunc(EngFunc_SetModel, entity, Resources_Sprites[0])
      engfunc(EngFunc_SetOrigin, entity, vOrigin)
      engfunc(EngFunc_SetSize, entity, Float:{ 0.0, 0.0, 0.0 }, Float:{ 0.0, 0.0, 0.0 })
      
      set_pev(entity, pev_renderfx, kRenderFxGlowShell)
      set_pev(entity, pev_rendermode, kRenderTransAdd)
      set_pev(entity, pev_renderamt, 255.0)
      set_pev(entity, pev_scale, WEAPON_BALL_SIZE)
      set_pev(entity, pev_iuser1, id)
      
      velocity_by_aim(id, WEAPON_BALL_SPEED, vVelocity)
      
      set_pev(entity, pev_velocity, vVelocity)
      engfunc(EngFunc_VecToAngles, vVelocity, vAngles)
      set_pev(entity, pev_angles, vAngles)
   }
}

WeaponList(id, const WeaponName[32])
{
   engfunc(EngFunc_MessageBegin, MSG_ONE, 78, {0.0, 0.0, 0.0}, id)
   write_string(WeaponName)
      
   for(new i, a = sizeof g_WeaponListData; i < a; i++)
   {
      write_byte(g_WeaponListData[i])
   }
   message_end()
}

InstallWorldModel(entity)
   engfunc(EngFunc_SetModel, entity, Resources_Models[2])

Weapon_SendAnim(id, anim)
{
   set_pev(id, pev_weaponanim, anim)

   message_begin(MSG_ONE_UNRELIABLE, SVC_WEAPONANIM, {0.0, 0.0, 0.0}, id)
   write_byte(anim)
   write_byte(0)
   message_end()
}

stock bool:CheckItem(weapon, &id)
{
   if(pev_valid(weapon) == 2 && pev(weapon, pev_impulse) == g_WeaponKey)
   {
      id = get_pdata_cbase(weapon, m_pPlayer, OFFSET_LINUX_WEAPONS)
      if(pev_valid(id) == 2)
         return true
   }
   return false
}

stock bool:CheckItem2(id, &iItem)
{
   if(pev_valid(id) != 2)
   {
      return false
   }
   
   iItem = get_pdata_cbase(id, m_pActiveItem, OFFSET_LINUX)
   
   if(pev_valid(iItem) != 2 || pev(iItem, pev_impulse) != g_WeaponKey)
   {
      return false
   }
   
   return true
}

Player_DropWeapons(id, iSlot)
{
   new WeaponName[32], entity = get_pdata_cbase(id, m_rgpPlayerItems_CBasePlayer + iSlot, OFFSET_LINUX)

   while(pev_valid(entity) == 2)
   {
      pev(entity, pev_classname, WeaponName, charsmax(WeaponName))
      engclient_cmd(id, "drop", WeaponName)

      entity = get_pdata_cbase(entity, m_pNext, OFFSET_LINUX_WEAPONS)
   }
}

stock get_weapon_position(id, Float:fOrigin[], Float:add_forward = 0.0, Float:add_right = 0.0, Float:add_up = 0.0)
{
   static Float:Angles[3],Float:ViewOfs[3], Float:vAngles[3]
   static Float:Forward[3], Float:Right[3], Float:Up[3]
   
   pev(id, pev_v_angle, vAngles)
   pev(id, pev_origin, fOrigin)
   pev(id, pev_view_ofs, ViewOfs)
   xs_vec_add(fOrigin, ViewOfs, fOrigin)
   
   pev(id, pev_angles, Angles)
   
   Angles[0] = vAngles[0]
   
   engfunc(EngFunc_MakeVectors, Angles)
   
   global_get(glb_v_forward, Forward)
   global_get(glb_v_right, Right)
   global_get(glb_v_up, Up)
   
   xs_vec_mul_scalar(Forward, add_forward, Forward)
   xs_vec_mul_scalar(Right, add_right, Right)
   xs_vec_mul_scalar(Up, add_up, Up)
   
   fOrigin[0] = fOrigin[0] + Forward[0] + Right[0] + Up[0]
   fOrigin[1] = fOrigin[1] + Forward[1] + Right[1] + Up[1]
   fOrigin[2] = fOrigin[2] + Forward[2] + Right[2] + Up[2]
}
#if defined ACTIVE_SHOOT_DECALS
//Decals
//By KORD
#define INSTANCE(%0) ((%0 == -1) ? 0 : %0)

new Array:g_hDecals

public FakeMeta_DecalIndex_Post()
{
   if(!g_hDecals)
      g_hDecals = ArrayCreate(1, 1)
   
   ArrayPushCell(g_hDecals, get_orig_retval())
}

UTIL_GunshotDecalTrace(const iTrace, const bool: bIsGunshot = false)
{
   static iHit;
   static iMessage;
   static iDecalIndex;
   
   static Float: flFraction;
   static Float: vecEndPos[3];
   
   iHit = INSTANCE(get_tr2(iTrace, TR_pHit));
   
   if (iHit && pev_valid(iHit) != 2 || (pev(iHit, pev_flags) & FL_KILLME))
   {
      return;
   }
   
   if (pev(iHit, pev_solid) != SOLID_BSP && pev(iHit, pev_movetype) != MOVETYPE_PUSHSTEP)
   {
      return;
   }
   
   iDecalIndex = ExecuteHamB(Ham_DamageDecal, iHit, 0);
   
   if (iDecalIndex < 0 || iDecalIndex >=  ArraySize(g_hDecals))
   {
      return;
   }
   
   iDecalIndex = ArrayGetCell(g_hDecals, iDecalIndex);
   
   get_tr2(iTrace, TR_flFraction, flFraction);
   get_tr2(iTrace, TR_vecEndPos, vecEndPos);
   
   if (iDecalIndex < 0 || flFraction >= 1.0)
   {
      return;
   }
   
   if (bIsGunshot)
   {
      iMessage = TE_GUNSHOTDECAL
   }
   else
   {
      iMessage = TE_DECAL;
      
      if (iHit != 0)
      {
         if (iDecalIndex > 255)
         {
            iMessage = TE_DECALHIGH
            iDecalIndex -= 256
         }
      }
      else
      {
         iMessage = TE_WORLDDECAL
         
         if (iDecalIndex > 255)
         {
            iMessage = TE_WORLDDECALHIGH
            iDecalIndex -= 256
         }
      }
   }
   
   engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, vecEndPos, 0)
   write_byte(iMessage)
   engfunc(EngFunc_WriteCoord, vecEndPos[0])
   engfunc(EngFunc_WriteCoord, vecEndPos[1])
   engfunc(EngFunc_WriteCoord, vecEndPos[2])
   
   if (bIsGunshot)
   {
      write_short(iHit)
      write_byte(iDecalIndex)
   }
   else
   {
      write_byte(iDecalIndex)
      
      if (iHit)
      {
         write_short(iHit)
      }
   }
   
   message_end()
}
#endif
PRECACHE_SOUNDS_FROM_MODEL(const szModelPath[])
{
   new iFile
   
   if ((iFile = fopen(szModelPath, "rt")))
   {
      new szSoundPath[64]
      
      new iNumSeq, iSeqIndex
      new iEvent, iNumEvents, iEventIndex
      
      fseek(iFile, 164, SEEK_SET)
      fread(iFile, iNumSeq, BLOCK_INT)
      fread(iFile, iSeqIndex, BLOCK_INT)
      
      for (new k, i = 0; i < iNumSeq; i++)
      {
         fseek(iFile, iSeqIndex + 48 + 176 * i, SEEK_SET)
         fread(iFile, iNumEvents, BLOCK_INT)
         fread(iFile, iEventIndex, BLOCK_INT)
         fseek(iFile, iEventIndex + 176 * i, SEEK_SET)

         for (k = 0; k < iNumEvents; k++)
         {
            fseek(iFile, iEventIndex + 4 + 76 * k, SEEK_SET)
            fread(iFile, iEvent, BLOCK_INT)
            fseek(iFile, 4, SEEK_CUR)
            
            if (iEvent != 5004)
            {
               continue
            }

            fread_blocks(iFile, szSoundPath, 64, BLOCK_CHAR)
            
            if (strlen(szSoundPath))
            {
               strtolower(szSoundPath)
               precache_sound(szSoundPath)
            }
         }
      }
   }
   
   fclose(iFile);
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/ 
Струва 16000$ като напишеш в чата /plasmagun ти го дава.
The Best Deathrun Server: 79.124.49.91:27019
The Best Respawn Server: 79.124.49.88:27021

Аватар
MickeyMouse
Извън линия
Потребител
Потребител
Мнения: 36
Регистриран на: 06 Фев 2018, 15:57

Заявка за преработка "Plasma Gun"

Мнение от MickeyMouse » 19 Фев 2018, 14:43

Благодаря много. Може да локнете!

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 14 госта