I wrote a custom model/sound plugin to change models and sounds for a friends server. Here is the code:
Code:
/* AMXModX Script
*
* Title: CSweapons (csweapons)
* Author: SubStream
*
* Current Version: 1.0
* Release Date: 2006-05-19
*
* For support on this plugin, please visit the following URL:
* CSweapons URL = <no URL custom made for Matt aka Dragon2246>
*
* CSweapons - Custom model & sound replacement plugin
* Copyright (C) 2006 SubStream
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* Author Contact Email: <a href="mailto:[email protected]">[email protected]</a>
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
new const gs_PLUGIN
[] = "CSweapons"
new const gs_VERSION
[] = "1.0"
new const gs_AUTHOR
[] = "SubStream"
new gs_ak47oldmodel
[] = "models/w_ak47.mdl"
new gs_ak47newmodel
[] = "models/csweapons/w_ak47.mdl"
new gs_awpoldmodel
[] = "models/w_awp.mdl"
new gs_awpnewmodel
[] = "models/csweapons/w_awp.mdl"
new gs_deagleoldmodel
[] = "models/w_deagle.mdl"
new gs_deaglenewmodel
[] = "models/csweapons/w_deagle.mdl"
new gs_eliteoldmodel
[] = "models/w_elite.mdl"
new gs_elitenewmodel
[] = "models/csweapons/w_elite.mdl"
new gs_m4a1oldmodel
[] = "models/w_m4a1.mdl"
new gs_m4a1newmodel
[] = "models/csweapons/w_m4a1.mdl"
new gs_scoutoldmodel
[] = "models/w_scout.mdl"
new gs_scoutnewmodel
[] = "models/csweapons/w_scout.mdl"
new g_clip
new g_ammo
new g_weaponID
new g_shield
new gi_soundnum
new g_oldsounds
[16][] =
{
"weapons/ak47-1.wav",
"weapons/ak47-2.wav",
"weapons/ak47_boltpull.wav",
"weapons/ak47_clipin.wav",
"weapons/ak47_clipout.wav",
"weapons/deagle-1.wav",
"weapons/deagle-2.wav",
"weapons/knife_deploy1.wav",
"weapons/knife_hit1.wav",
"weapons/knife_hit2.wav",
"weapons/knife_hit3.wav",
"weapons/knife_hit4.wav",
"weapons/knife_hitwall1.wav",
"weapons/knife_slash1.wav",
"weapons/knife_slash2.wav",
"weapons/knife_stab.wav"
}
new g_newsounds
[16][] =
{
"cssounds/ak47-1.wav",
"cssounds/ak47-2.wav",
"cssounds/ak47_boltpull.wav",
"cssounds/ak47_clipin.wav",
"cssounds/ak47_clipout.wav",
"cssounds/deagle-1.wav",
"cssounds/deagle-2.wav",
"cssounds/knife_deploy1.wav",
"cssounds/knife_hit1.wav",
"cssounds/knife_hit2.wav",
"cssounds/knife_hit3.wav",
"cssounds/knife_hit4.wav",
"cssounds/knife_hitwall1.wav",
"cssounds/knife_slash1.wav",
"cssounds/knife_slash2.wav",
"cssounds/knife_stab.wav"
}
public plugin_init
()
{
register_plugin ( gs_PLUGIN, gs_VERSION, gs_AUTHOR
)
register_event ( "CurWeapon",
"fn_weaponchange",
"be",
"1=1")
register_forward
( FM_EmitSound,
"fn_soundcheck" )
register_forward
( FM_SetModel,
"fn_setmodels" )
}
public plugin_precache
()
{
precache_model ( "models/csweapons/p_ak47.mdl" )
precache_model ( "models/csweapons/p_awp.mdl" )
precache_model ( "models/csweapons/p_deagle.mdl" )
precache_model ( "models/csweapons/p_elite.mdl" )
precache_model ( "models/csweapons/p_knife.mdl" )
precache_model ( "models/csweapons/p_m4a1.mdl" )
precache_model ( "models/csweapons/p_scout.mdl" )
precache_model ( "models/csweapons/p_shield_deagle.mdl" )
precache_model ( "models/csweapons/p_shield_knife.mdl" )
precache_model ( "models/csweapons/v_ak47.mdl" )
precache_model ( "models/csweapons/v_awp.mdl" )
precache_model ( "models/csweapons/v_deagle.mdl" )
precache_model ( "models/csweapons/v_elite.mdl" )
precache_model ( "models/csweapons/v_knife.mdl" )
precache_model ( "models/csweapons/v_m4a1.mdl" )
precache_model ( "models/csweapons/v_scout.mdl" )
precache_model ( "models/csweapons/v_shield_deagle.mdl" )
precache_model ( "models/csweapons/v_shield_knife.mdl" )
precache_model ( "models/csweapons/w_ak47.mdl" )
precache_model ( "models/csweapons/w_awp.mdl" )
precache_model ( "models/csweapons/w_deagle.mdl" )
precache_model ( "models/csweapons/w_elite.mdl" )
precache_model ( "models/csweapons/w_m4a1.mdl" )
precache_model ( "models/csweapons/w_scout.mdl" )
precache_sound ( "cssounds/ak47-1.wav" )
precache_sound ( "cssounds/ak47-2.wav" )
precache_sound ( "cssounds/ak47_boltpull.wav" )
precache_sound ( "cssounds/ak47_clipin.wav" )
precache_sound ( "cssounds/ak47_clipout.wav" )
precache_sound ( "cssounds/deagle-1.wav" )
precache_sound ( "cssounds/deagle-2.wav" )
precache_sound ( "cssounds/knife_deploy1.wav" )
precache_sound ( "cssounds/knife_hit1.wav" )
precache_sound ( "cssounds/knife_hit2.wav" )
precache_sound ( "cssounds/knife_hit3.wav" )
precache_sound ( "cssounds/knife_hit4.wav" )
precache_sound ( "cssounds/knife_hitwall1.wav" )
precache_sound ( "cssounds/knife_slash1.wav" )
precache_sound ( "cssounds/knife_slash2.wav" )
precache_sound ( "cssounds/knife_stab.wav" )
}
public fn_weaponchange
( id
)
{
g_weaponID
= get_user_weapon ( id, g_clip, g_ammo
)
g_shield
= cs_get_user_shield
( id
)
if ( g_weaponID
== CSW_AK47
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_ak47.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_ak47.mdl" )
}
if ( g_weaponID
== CSW_AWP
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_awp.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_awp.mdl" )
}
if ( g_weaponID
== CSW_DEAGLE
&& ! g_shield
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_deagle.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_deagle.mdl" )
}
if ( g_weaponID
== CSW_DEAGLE
&& g_shield
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_shield_deagle.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_shield_deagle.mdl" )
}
if ( g_weaponID
== CSW_ELITE
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_elite.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_elite.mdl" )
}
if ( g_weaponID
== CSW_KNIFE
&& ! g_shield
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_knife.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_knife.mdl" )
}
if ( g_weaponID
== CSW_KNIFE
&& g_shield
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_shield_knife.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_shield_knife.mdl" )
}
if ( g_weaponID
== CSW_M4A1
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_m4a1.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_m4a1.mdl" )
}
if ( g_weaponID
== CSW_SCOUT
)
{
set_pev
( id, pev_weaponmodel,
"models/csweapons/p_scout.mdl" )
set_pev
( id, pev_viewmodel,
"models/csweapons/v_scout.mdl" )
}
}
public fn_setmodels
( entity,
const s_MODEL
[] )
{
if ( ! pev_valid
( entity
) ) return FMRES_IGNORED
if ( equal ( s_MODEL, gs_ak47oldmodel
) )
{
engfunc
( EngFunc_SetModel, entity, gs_ak47newmodel
)
return FMRES_SUPERCEDE
}
if ( equal ( s_MODEL, gs_awpoldmodel
) )
{
engfunc
( EngFunc_SetModel, entity, gs_awpnewmodel
)
return FMRES_SUPERCEDE
}
if ( equal ( s_MODEL, gs_deagleoldmodel
) )
{
engfunc
( EngFunc_SetModel, entity, gs_deaglenewmodel
)
return FMRES_SUPERCEDE
}
if ( equal ( s_MODEL, gs_eliteoldmodel
) )
{
engfunc
( EngFunc_SetModel, entity, gs_elitenewmodel
)
return FMRES_SUPERCEDE
}
if ( equal ( s_MODEL, gs_m4a1oldmodel
) )
{
engfunc
( EngFunc_SetModel, entity, gs_m4a1newmodel
)
return FMRES_SUPERCEDE
}
if ( equal ( s_MODEL, gs_scoutoldmodel
) )
{
engfunc
( EngFunc_SetModel, entity, gs_scoutnewmodel
)
return FMRES_SUPERCEDE
}
return FMRES_IGNORED
}
public fn_soundcheck
( entity, i_channel,
const s_SOUND
[],
Float: f_volume,
Float: f_attenuation, i_flags, i_pitch
)
{
for ( gi_soundnum
= 0; gi_soundnum <
5; gi_soundnum
++ )
{
if ( containi ( s_SOUND, g_oldsounds
[gi_soundnum
] ) != -1 )
{
emit_sound ( entity, i_channel, g_newsounds
[gi_soundnum
], f_volume, f_attenuation, i_flags, i_pitch
)
return FMRES_SUPERCEDE
}
}
return FMRES_IGNORED
}
I don't know why exactly it gave him a fatal error or if at some point I'm supposed to use func_allocstring or whatever. I'm not sure exactly what I am doing wrong so if someone can point me in the right direction to fix whatever the problem is please let me know. This compiles fine on 1.71.