• Страница 1 из 1
  • 1
Форум » Counter-Strike 1.6 » Сервер Counter-Strike 1.6 » Помощь по скриптингу » Awp skin _w model
Awp skin _w model
Дата: Суббота, 13.10.2018, 00:14 | Сообщение # 1
Смотрящий
Мастер
Offline
  • M0Nk
  • Репутация: 8
  • Сообщений:147
  • Пользователь
  • Статус пользователя www.masofke.eu - Lithuanian
    Gaming community 24/7.
Привет ребят похимичил я чёт попытался но так и не вышло у меня добавить "_w" модель  модель сервер скачивает при заходе на сервер но при выбросе awp на землю "_w" модели нету sad может кто подскажет что где поменять или добавить xD))


Код
#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <hamsandwich>

#define PLUGIN "Prize Awp"
#define VERSION "0.1"
#define AUTHOR "Demo nx"

/*---------------EDIT ME------------------*/
#define ACCESS_FLAG     ADMIN_LEVEL_H   // flag 't' by default
#define CUSTOM_DMG      2.0             // custom knife damage; fractional part of a number is mandatory

new WORLD_MODEL[]    = "models/msfkflgawp/w_msfkflgawp.mdl"

new const gszawpModelV[] = "models/msfkflgawp/v_msfkflgawp.mdl"   // 1st person view model
new const gszawpModelP[] = "models/msfkflgawp/p_msfkflgawp.mdl"   // 3rd person view model
/*----------------------------------------*/

new giszawpModelV, giszawpModelP

// macro; %1 - variable being modified, %2 - player id
#define CheckFlag(%1,%2)  (%1 &   (1 << (%2 & 31)))
#define SetFlag(%1,%2)    (%1 |=  (1 << (%2 & 31)))
#define ClearFlag(%1,%2)  (%1 &= ~(1 << (%2 & 31)))
new gbCustomawpDamage

#define IsPlayer(%0)   ( 1 <= (%0) <= giMaxPlayers )

new giMaxPlayers

public plugin_init() {
   register_plugin( PLUGIN, VERSION, AUTHOR )

   RegisterHam( Ham_Item_Deploy, "weapon_awp" , "Fwd_ItemDeploy_awp_Post", .Post = 1 )
   RegisterHam( Ham_TakeDamage, "player", "Fwd_TakeDamage" )
   register_forward(FM_SetModel, "fw_SetModel")

   giszawpModelV = engfunc( EngFunc_AllocString, gszawpModelV )
   giszawpModelP = engfunc( EngFunc_AllocString, gszawpModelP )

   giMaxPlayers = get_maxplayers()
}

public plugin_precache() {
   precache_model( gszawpModelV )
   precache_model( gszawpModelP )
   precache_model(WORLD_MODEL)
}

public client_putinserver(id) {
   get_user_flags(id) & ACCESS_FLAG ? SetFlag( gbCustomawpDamage, id ) : ClearFlag( gbCustomawpDamage, id )
}

public Fwd_ItemDeploy_awp_Post( ent ) {
   const XO_WEAPON  = 4   // 'XO' means extraoffset
   const m_pPlayer  = 41

   new iPlayer = get_pdata_cbase( ent, m_pPlayer, XO_WEAPON )

   if( CheckFlag( gbCustomawpDamage, iPlayer ) ) {
      set_pev_string( iPlayer, pev_viewmodel2, giszawpModelV )
      set_pev_string( iPlayer, pev_weaponmodel2, giszawpModelP )
   }
}
public fw_SetModel(id,entity, model[])
{
    // Проверяем существует ли объект
    if (!is_valid_ent(entity)) 
        return FMRES_IGNORED

    // Проверяем та ли это w_ модель, которую му хотим изменить 
    if (!CheckFlag( gbCustomawpDamage, id ))
        return FMRES_IGNORED

    new className[33]

    // Получаем класс объекта
    entity_get_string(entity, EV_SZ_classname, className, 32)

    // Сравниваем равняется ли полученный класс объекта weaponbox (выкинутое оружие) или armoury_entity (оружие, которое лежит на карте), или grenade (C4 и гранаты)
    if (equal(className, "weaponbox") || equal(className, "armoury_entity") || equal(className, "grenade"))
    {
        // Установка w_ модели, которая отображается на земле
        entity_set_model(entity, WORLD_MODEL)
        return FMRES_SUPERCEDE
    }
    return FMRES_IGNORED
}
 

public Fwd_TakeDamage( victim, inflictor, attacker, Float:damage, damagebits ) {
   if( IsPlayer(attacker) && attacker == inflictor /* it is mandatory be4 checking current weapon (it could not be the same as one inflicting damage now) */
      && CheckFlag( gbCustomawpDamage, attacker ) && get_user_weapon(attacker) == CSW_AWP ) {
      SetHamParamFloat( 4, damage * CUSTOM_DMG )
      return HAM_HANDLED
   }

   return HAM_IGNORED
}
Дата: Суббота, 13.10.2018, 05:42 | Сообщение # 2
Местный
Offline
  • sllool
  • Репутация: 7
  • Сообщений:78
  • Изгнанный
я вижу в чем ошибка как приду попробую сделать
Дата: Суббота, 13.10.2018, 11:41 | Сообщение # 3
Скриптер
Мастер
Offline
  • Quin
  • Репутация: 56
  • Сообщений:121
  • Разработчик
  • Статус пользователя
FM_SetModel передает всего два параметра: индекс объекта, строку с названием модели, так и не понял откуда у вас там id еще появился.
Т.е.
Проверка 
   
Код
if (!CheckFlag( gbCustomawpDamage, id ))
        return FMRES_IGNORED
Уже не пропускает работа форварда дальше. 
Получить id можно при помощи pev( entity, pev_owner )
Дата: Суббота, 13.10.2018, 15:02 | Сообщение # 4
Смотрящий
Мастер
Offline
  • M0Nk
  • Репутация: 8
  • Сообщений:147
  • Пользователь
  • Статус пользователя www.masofke.eu - Lithuanian
    Gaming community 24/7.
Цитата Quin ()
Уже не пропускает работа форварда дальше. Получить id можно при помощи pev( entity, pev_owner )
Я не очень понимаю в этом  )) что и где на что мне изменить чтобы ещё _w модель работала :)))?
Дата: Суббота, 13.10.2018, 15:14 | Сообщение # 5
Скриптер
Мастер
Offline
  • Quin
  • Репутация: 56
  • Сообщений:121
  • Разработчик
  • Статус пользователя
Цитата M0Nk ()
Я не очень понимаю в этом  )) что и где на что мне изменить чтобы ещё _w модель работала :)))?

Код
#include<amxmodx>
#include<engine>
#include<fakemeta>
#include<hamsandwich>

#define PLUGIN   "PrizeAwp"
#define VERSION   "0.1"
#define AUTHOR   "Demonx"

/*---------------EDITME------------------*/
#define ACCESS_FLAG   ADMIN_LEVEL_H   //flag't'bydefault
#define CUSTOM_DMG      2.0            //customknifedamage;fractionalpartofanumberismandatory

new WORLD_MODEL[]   = "models/msfkflgawp/w_msfkflgawp.mdl"

new const gszawpModelV[] = "models/msfkflgawp/v_msfkflgawp.mdl"   //1stpersonviewmodel
new const gszawpModelP[] = "models/msfkflgawp/p_msfkflgawp.mdl"   //3rdpersonviewmodel
/*----------------------------------------*/

new giszawpModelV,giszawpModelP

//macro;%1-variablebeingmodified,%2-playerid
#define CheckFlag(%1,%2)   (%1 & (1<<(%2&31)))
#define SetFlag(%1,%2)      (%1 |= (1<<(%2&31)))
#define ClearFlag(%1,%2)   (%1 &= ~(1<<(%2&31)))
new gbCustomawpDamage

#define IsPlayer(%0)   (1<=(%0)<=giMaxPlayers)

new giMaxPlayers

public plugin_init()
{
   register_plugin(PLUGIN,VERSION,AUTHOR)

   RegisterHam(Ham_Item_Deploy,"weapon_awp","Fwd_ItemDeploy_awp_Post",.Post=1)
   RegisterHam(Ham_TakeDamage,"player","Fwd_TakeDamage")
   register_forward(FM_SetModel,"fw_SetModel")

   giszawpModelV = engfunc(EngFunc_AllocString,gszawpModelV)
   giszawpModelP = engfunc(EngFunc_AllocString,gszawpModelP)

   giMaxPlayers = get_maxplayers()
}

public plugin_precache(){
   precache_model(gszawpModelV)
   precache_model(gszawpModelP)
   precache_model(WORLD_MODEL)
}

public client_putinserver(id)
{
   ( get_user_flags(id) & ACCESS_FLAG ) ? SetFlag( gbCustomawpDamage , id ) : ClearFlag( gbCustomawpDamage , id )
}

public Fwd_ItemDeploy_awp_Post(ent){
   const XO_WEAPON = 4   //'XO'meansextraoffset
   const m_pPlayer = 41

   new iPlayer=get_pdata_cbase(ent,m_pPlayer,XO_WEAPON)

   if(CheckFlag(gbCustomawpDamage,iPlayer))
   {
      set_pev_string(iPlayer,pev_viewmodel2,giszawpModelV)
      set_pev_string(iPlayer,pev_weaponmodel2,giszawpModelP)
   }
}
public fw_SetModel(entity,model[])
{
   //Проверяемсуществуетлиобъект
   if(!is_valid_ent(entity))
      return FMRES_IGNORED

   new id = pev( entity, pev_owner );
   //Проверяемталиэтоw_модель,которуюмухотимизменить
   if( !CheckFlag( gbCustomawpDamage ,id) )
      return FMRES_IGNORED

   new szClassName[33]

   //Получаемклассобъекта
   pev( entity, pev_classname, szClassName, charsmax(szClassName) );

   //Сравниваемравняетсялиполученныйклассобъектаweaponbox(выкинутоеоружие)илиarmoury_entity(оружие,котороележитнакарте),илиgrenade(C4игранаты)
   if( equal(szClassName,"weaponbox") )
   {
      //Установкаw_модели,котораяотображаетсяназемле
      engfunc( EngFunc_SetModel, entity, WORLD_MODEL );
      return FMRES_SUPERCEDE
   }

   return FMRES_IGNORED
}

public Fwd_TakeDamage(victim,inflictor,attacker,Float:damage,damagebits)
{
   if( IsPlayer( attacker ) && attacker == inflictor && CheckFlag(gbCustomawpDamage,attacker) && get_user_weapon(attacker) == CSW_AWP )
   {
      SetHamParamFloat(4, damage * CUSTOM_DMG)
      return HAM_HANDLED
   }

   return HAM_IGNORED
}
Дата: Суббота, 13.10.2018, 18:39 | Сообщение # 6
Смотрящий
Мастер
Offline
  • M0Nk
  • Репутация: 8
  • Сообщений:147
  • Пользователь
  • Статус пользователя www.masofke.eu - Lithuanian
    Gaming community 24/7.

Цитата
Легендарный
Код

Спасибо теперь работает _w модель слушай а ты не вкурсе это модель баговая или в коде что то нужно делать чтобы при zoom awp небыло видно awp ато сейчяс чуть чуть видно biggrin

Добавлено (13.10.2018, 20:34)
---------------------------------------------
Хотя не бро сейчяс допустим беру я любое оружие и когда выбрасываю то на земле лезжит то awp хоть у я выбросил калаш xD

Дата: Суббота, 13.10.2018, 22:34 | Сообщение # 7
Скриптер
Мастер
Offline
  • Quin
  • Репутация: 56
  • Сообщений:121
  • Разработчик
  • Статус пользователя

Код
public fw_SetModel(entity,model[])
{
   //Проверяемсуществуетлиобъект
   if(!is_valid_ent(entity))
      return FMRES_IGNORED

Замените на
Код
public fw_SetModel(entity,model[])
{
   //Проверяемсуществуетлиобъект
   if(!is_valid_ent(entity) || !equal(model, "models/w_awp.mdl") )
      return FMRES_IGNORED
Дата: Суббота, 13.10.2018, 23:17 | Сообщение # 8
Смотрящий
Мастер
Offline
  • M0Nk
  • Репутация: 8
  • Сообщений:147
  • Пользователь
  • Статус пользователя www.masofke.eu - Lithuanian
    Gaming community 24/7.

Цитата
Легендарный
 Работает спас :)

Добавлено (13.10.2018, 23:19)
---------------------------------------------
А насчёт зума не вкурсе это модель баговоя или плагин надо допиливать чтобы небыло видно авп при Zoome ? Я просто пробывал 5 разных моделей и везде при зуме видно чут чуть авп xD

Форум » Counter-Strike 1.6 » Сервер Counter-Strike 1.6 » Помощь по скриптингу » Awp skin _w model
  • Страница 1 из 1
  • 1
Поиск:
(threadpage)