Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

Субмодель

Статус пользователя turri2
сообщение 30.10.2017, 22:22
Сообщение #1


Стаж: 17 лет

Сообщений: 245
Благодарностей: 54
Полезность: < 0

Пытался прикрутить в плагине смену перчатки при выборе женского класса, перчатку меняет, вот только не на ту, что нужно, по умолчанию выбирает 2-ю субмодель перчатки... а нужна 5-я субмоделька, просидел пару часов так ничего и не получилось...
Надеюсь подскажите что я делаю не так... Ниже во вложении прикрепил исходник плагина и саму модель, заранее спасибо
Cкрытый текст
Код:
//=========================================================================
#define CSW_WEAPON CSW_DEAGLE
new const g_weapon_entity[]= "weapon_deagle"
new const g_weaponbox_model[]= "models/w_deagle.mdl"

#define WEAPON_NAME "Balrog-1"
#define WEAPON_COST 2100

#define DAMAGE 1.1
#define RECOIL 0.5
#define RATE_OF_FIRE 0.13
#define RATE_OF_FIRE2 0.125
#define CLIP 7
#define AMMO 70
#define TIME_RELOAD 2.0

#define ANIM_IDLE 0
#define ANIM_SHOOT_1 2
#define ANIM_RELOAD 4
#define ANIM_DRAW 6
#define ANIM_CHANGE 7

#define WEAPON_KEY 89

#define BODY_NUMBER 6
new const MODELS[][]={
"models/zmo/v_balrog1.mdl",
"models/zmo/p_balrog1.mdl",
"models/zmo/w_models_b1.mdl"
}
new const SOUNDS[][]= {
"weapons/balrog1-1.wav",
"weapons/balrog1-2.wav"
}
#define WEAPONLIST "zmo/weapon_balrog1"
//=========================================================================
#include <amxmodx>
#include <engine>
#include <xs>
#include <fakemeta>
#include <fakemeta_util>
#include <hamsandwich>
#include <zombieplague>
#include <ZombieModOnline>
native zp_get_division(id)

new g_msgWeaponList,g_wpn_variables[10],g_index_smoke2,g_index_shell,g_itemid
#define is_valid_weapon(%1) (pev_valid(%1)&&pev(%1, pev_impulse) == WEAPON_KEY)
#define BALROG1_MODE (1<<1)
public plugin_precache() {
for(new i;i<=charsmax(MODELS);i++)precache_model(MODELS[i])
for(new i;i<=charsmax(SOUNDS);i++)precache_sound(SOUNDS[i])
g_index_smoke2=precache_model("sprites/zmo/ef_balrog1.spr")
g_index_shell=precache_model("models/pshell.mdl")
register_clcmd(WEAPONLIST, "clcmd_weapon")
register_message(78, "message_weaponlist")
}
public buy_secondary_ammo( iPlayer ){
static iItem; iItem = get_pdata_cbase(iPlayer, 373, 5);

if(!pev_valid(iItem)) return;
if(!is_valid_weapon(iItem)) return;

SetAmmoValue(iPlayer, CLIP);
SetAmmoMax(iPlayer, AMMO);
SetAmmoCost(iPlayer, 50);
return;
}
public plugin_init() {
register_plugin("[ ZM ] Balrog-I", "1.0", "Mr.Kot3")
register_forward(FM_CmdStart, "fm_cmdstart")
register_forward(FM_SetModel, "fm_setmodel")
register_forward(FM_UpdateClientData, "fm_updateclientdata_post", 1)
register_forward(FM_PlaybackEvent, "fm_playbackevent")
RegisterHam(Ham_Item_Deploy, g_weapon_entity, "ham_item_deploy_post",1)
RegisterHam(Ham_Weapon_PrimaryAttack, g_weapon_entity, "ham_weapon_primaryattack")
RegisterHam(Ham_Weapon_Reload, g_weapon_entity, "ham_weapon_reload")
RegisterHam(Ham_Weapon_WeaponIdle, g_weapon_entity, "ham_weapon_idle")
RegisterHam(Ham_Item_PostFrame, g_weapon_entity, "ham_item_postframe")
RegisterHam(Ham_Item_AddToPlayer, g_weapon_entity, "ham_item_addtoplayer")
RegisterHam(Ham_TraceAttack, "player", "ham_traceattack_post",1)
RegisterHam(Ham_TraceAttack, "worldspawn", "ham_traceattack_post",1)
RegisterHam(Ham_TraceAttack, "func_breakable", "ham_traceattack_post",1)
RegisterHam(Ham_TakeDamage, "player", "ham_takedamage")
g_msgWeaponList=get_user_msgid("WeaponList")
g_itemid=ZMO_Register_Item(WEAPON_NAME,WEAPON_COST)
}
public clcmd_weapon(id)engclient_cmd(id, g_weapon_entity)
public message_weaponlist(msg_id,msg_dest,id)if(get_msg_arg_int(8)==CSW_WEAPON)for(new i=2;i<=9;i++)g_wpn_variables[i]=get_msg_arg_int(i)
public fm_cmdstart(id,uc_handle,seed){
if(!is_user_alive(id))return
static weapon_entity;weapon_entity=get_pdata_cbase(id,373,5)
if(!is_valid_weapon(weapon_entity)) return
if((get_uc(uc_handle,UC_Buttons)&IN_ATTACK2)&&get_pdata_float(id,83,5)<=0.0&&get_pdata_float(weapon_entity,46,4)<=0.0){
if(get_pdata_int(weapon_entity, 74, 4)&BALROG1_MODE){
set_pdata_int(weapon_entity, 74, get_pdata_int(weapon_entity, 74, 4)&~BALROG1_MODE, 4)
play_weapon_animation(id, ANIM_CHANGE+1)
set_pdata_float(id,83,1.0,5)
}else{
set_pdata_int(weapon_entity, 74, get_pdata_int(weapon_entity, 74, 4)|BALROG1_MODE, 4)
play_weapon_animation(id, ANIM_CHANGE)
set_pdata_float(id,83,2.0,5)
}
}
}
public fm_setmodel(model_entity,model[]){
if(!pev_valid(model_entity)||!equal(model,g_weaponbox_model))return FMRES_IGNORED
static weap;weap=fm_find_ent_by_owner(-1,g_weapon_entity,model_entity)
if(!is_valid_weapon(weap))return FMRES_IGNORED
fm_entity_set_model(model_entity,MODELS[2])
set_pev(model_entity,pev_body,BODY_NUMBER)
return FMRES_SUPERCEDE
}
public fm_updateclientdata_post(id,SendWeapons,CD_Handle){
if(!is_user_alive(id))return
static weapon_ent; weapon_ent=get_pdata_cbase(id,373,5)
if(!is_valid_weapon(weapon_ent)) return
set_cd(CD_Handle, CD_flNextAttack, get_gametime()+0.001)
}
public fm_playbackevent(flags,id){
if(!is_user_alive(id))return FMRES_IGNORED
static weapon_ent;weapon_ent=get_pdata_cbase(id, 373, 5)
if(!is_valid_weapon(weapon_ent))return FMRES_IGNORED
return FMRES_SUPERCEDE
}
public ham_item_deploy_post(weapon_ent){
if(!is_valid_weapon(weapon_ent))return
static id;id=get_pdata_cbase(weapon_ent,41,4)
set_pev(id, pev_viewmodel2, MODELS[0]),set_pev(id, pev_weaponmodel2, MODELS[1])
play_weapon_animation(id, ANIM_DRAW)
set_pdata_float(id, 83, 0.5, 5),set_pdata_float(weapon_ent, 48, 1.4, 4)
set_pdata_int(weapon_ent, 74, get_pdata_int(weapon_ent, 74, 4)&~BALROG1_MODE, 4)
}
public ham_weapon_primaryattack(weapon_entity) {
if(!is_valid_weapon(weapon_entity))return HAM_IGNORED
static id; id = get_pdata_cbase(weapon_entity, 41, 4)
static clip;clip=get_pdata_int(weapon_entity,51,4)
state FireBullets: Enabled;
ExecuteHam(Ham_Weapon_PrimaryAttack, weapon_entity)
state FireBullets: Disabled;
if(clip<=get_pdata_int(weapon_entity,51,4))return HAM_IGNORED

if(get_pdata_int(weapon_entity, 74, 4)&BALROG1_MODE){
play_weapon_animation(id,ANIM_SHOOT_1+1)
set_pdata_float(weapon_entity, 48, 3.0, 4)
set_pdata_float(weapon_entity,46,3.0,4)
emit_sound(id, CHAN_WEAPON, SOUNDS[1], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
set_pdata_int(weapon_entity, 74, get_pdata_int(weapon_entity, 74, 4)&~BALROG1_MODE, 4)
}else{
play_weapon_animation(id,ANIM_SHOOT_1)
set_pdata_float(weapon_entity, 48, 1.2, 4)
set_pdata_float(weapon_entity,46,RATE_OF_FIRE,4)
emit_sound(id, CHAN_WEAPON, SOUNDS[0], VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
}
set_pdata_int(weapon_entity,57,g_index_shell,4)
set_pdata_float(id,111,get_gametime())

return HAM_SUPERCEDE
}
public ham_weapon_reload(weapon_entity) {
if(!is_valid_weapon(weapon_entity))return HAM_IGNORED
static id; id = get_pdata_cbase(weapon_entity,41,4)
static bpammo;bpammo=get_pdata_int(id,376+get_pdata_int(weapon_entity,49,4),5)
static clip;clip=get_pdata_int(weapon_entity,51,4)
if(!bpammo||clip==CLIP)return HAM_SUPERCEDE
ExecuteHam(Ham_Weapon_Reload,weapon_entity)
play_weapon_animation(id,(get_pdata_int(weapon_entity, 74, 4)&BALROG1_MODE)?ANIM_RELOAD+1:ANIM_RELOAD)
set_pdata_float(id,83,(get_pdata_int(weapon_entity, 74, 4)&BALROG1_MODE)?TIME_RELOAD+1.0:TIME_RELOAD,5)
set_pdata_int(weapon_entity, 74, get_pdata_int(weapon_entity, 74, 4)&~BALROG1_MODE, 4)
set_pdata_int(weapon_entity,54,1,4)
return HAM_SUPERCEDE
}
public ham_weapon_idle(ent) {
if(!is_valid_weapon(ent))return HAM_IGNORED
static id; id = get_pdata_cbase(ent, 41, 4)
if(get_pdata_float(ent, 48, 4)>0.0)return HAM_IGNORED
play_weapon_animation(id,(get_pdata_int(ent, 74, 4)&BALROG1_MODE)?ANIM_IDLE+1:ANIM_IDLE)
set_pdata_float(ent, 48, 5.0, 4)
return HAM_SUPERCEDE
}
public ham_item_postframe(weapon_entity) {
if(!is_valid_weapon(weapon_entity)) return
static id; id = get_pdata_cbase(weapon_entity,41,4)
if(get_pdata_int(weapon_entity, 54, 4)&&get_pdata_float(id, 83, 5)<=0.0){
static bpammo;bpammo=get_pdata_int(id, 376 + get_pdata_int(weapon_entity, 49, 4), 5)
static clip;clip=get_pdata_int(weapon_entity, 51, 4)
for(new i=clip; i<CLIP;i++)if(bpammo)bpammo--,clip++
set_pdata_int(weapon_entity,54,0,4)
set_pdata_int(weapon_entity,51,clip,4)
set_pdata_int(id,376+get_pdata_int(weapon_entity,49,4),bpammo,5)
}
}
public ham_item_addtoplayer(weapon_entity,id){
switch(pev(weapon_entity, pev_impulse)){
case 0: set_weaponlist(id, 0);
case WEAPON_KEY: set_weaponlist(id, 1);
}
}
public ham_traceattack_post(pEntity,attacker,Float:flDamage,Float:direction[3],ptr,dama
ge_type) {
if(!is_user_connected(attacker)||!(damage_type&DMG_BULLET))return
static weapon_entity;weapon_entity=get_pdata_cbase(attacker, 373, 5)
if(!is_valid_weapon(weapon_entity))return
new Float:vecEnd[3],Float:vecPlane[3]

new victim=FM_NULLENT, Float:temp, Float:damage, Float:radius, Float:vOrigin[3]

radius=75.0

get_tr2(ptr,TR_vecEndPos,vecEnd)
get_tr2(ptr,TR_vecPlaneNormal,vecPlane)
xs_vec_mul_scalar(vecPlane,5.0,vecPlane)
if(!is_user_alive(pEntity)){
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_GUNSHOTDECAL)
engfunc(EngFunc_WriteCoord,vecEnd[0])
engfunc(EngFunc_WriteCoord,vecEnd[1])
engfunc(EngFunc_WriteCoord,vecEnd[2])
write_short(pEntity)
write_byte(random_num(41,45))
message_end()
if(get_pdata_int(weapon_entity, 74, 4)&BALROG1_MODE){
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, vecEnd[0])
engfunc(EngFunc_WriteCoord, vecEnd[1])
engfunc(EngFunc_WriteCoord, vecEnd[2])
write_short(g_index_smoke2)
write_byte(8)
write_byte(15)
write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOPARTICLES)
message_end()

while((victim=fm_find_ent_in_sphere(victim, vecEnd, radius))!=0)
{
if(pev(victim, pev_takedamage)!=DAMAGE_NO&&pev(victim, pev_solid)!=SOLID_NOT)
{
damage=random_float(450.0, 550.0)

if(1<=victim<=32)
{
if(is_user_alive(victim)&&zp_get_user_zombie(victim))
{
pev(victim, pev_origin, vOrigin)

xs_vec_sub(vecEnd, vOrigin, vOrigin)

temp=vector_length(vOrigin)

if(temp<1.0)
temp=1.0

if(temp>radius)
temp=radius

damage-=(damage/radius)*temp

ExecuteHamB(Ham_TakeDamage, victim, attacker, attacker, damage, DMG_NEVERGIB)

set_pdata_int(victim, 75, HIT_GENERIC)
}
}
else
ExecuteHamB(Ham_TakeDamage, victim, attacker, attacker, damage, DMG_BULLET|DMG_NEVERGIB)
}
}
}
}
else if(get_pdata_int(weapon_entity, 74, 4)&BALROG1_MODE){
xs_vec_add(vecEnd,vecPlane,vecEnd)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, vecEnd[0])
engfunc(EngFunc_WriteCoord, vecEnd[1])
engfunc(EngFunc_WriteCoord, vecEnd[2])
write_short(g_index_smoke2)
write_byte(8)
write_byte(15)
write_byte(TE_EXPLFLAG_NOSOUND|TE_EXPLFLAG_NODLIGHTS|TE_EXPLFLAG_NOPARTICLES)
message_end()

while((victim=fm_find_ent_in_sphere(victim, vecEnd, radius))!=0)
{
if(pev(victim, pev_takedamage)!=DAMAGE_NO&&pev(victim, pev_solid)!=SOLID_NOT)
{
damage=random_float(450.0, 550.0)

if(1<=victim<=32)
{
if(is_user_alive(victim)&&zp_get_user_zombie(victim))
{
pev(victim, pev_origin, vOrigin)

xs_vec_sub(vecEnd, vOrigin, vOrigin)

temp=vector_length(vOrigin)

if(temp<1.0)
temp=1.0

if(temp>radius)
temp=radius

damage-=(damage/radius)*temp

ExecuteHamB(Ham_TakeDamage, victim, attacker, attacker, damage, DMG_NEVERGIB)

set_pdata_int(victim, 75, HIT_GENERIC)
}
}
else
ExecuteHamB(Ham_TakeDamage, victim, attacker, attacker, damage, DMG_BULLET|DMG_NEVERGIB)
}
}
}
}
public ZMO_Item_Selected(id,itemid) {
if(itemid!=g_itemid)return
new Ent=give_weapon(id)
set_pdata_int(id,376+get_pdata_int(Ent,49,4),AMMO,5)
}
public give_weapon(id){
new Float:Origin[3]; pev(id, pev_origin, Origin)
new wName[32],iItem=get_pdata_cbase(id, 367+2, 5);
while (pev_valid(iItem)==2)pev(iItem,pev_classname,wName,31),engclient_cmd(id,"drop",wName),iItem=get_pdata_cbase(iItem, 42, 4)
new iWeapon=engfunc(EngFunc_CreateNamedEntity,engfunc(EngFunc_AllocString,g_weapon_e
ntity))
if(!pev_valid(iWeapon)) return 0
dllfunc(DLLFunc_Spawn, iWeapon)
engfunc(EngFunc_SetOrigin, iWeapon, Origin)
set_pev(iWeapon, pev_impulse, WEAPON_KEY)
set_pdata_int(iWeapon, 51, CLIP, 4)
new save = pev(iWeapon,pev_solid)
dllfunc(DLLFunc_Touch,iWeapon,id)
if(pev(iWeapon, pev_solid)!=save)return iWeapon
engfunc(EngFunc_RemoveEntity,iWeapon)
return 0
}
stock play_weapon_animation(id,sequence)message_begin(MSG_ONE,SVC_WEAPONANIM,_,id),wri
te_byte(sequence),write_byte(zp_get_division(id)),message_end()

stock set_weaponlist(id,num=0){
message_begin(MSG_ONE,g_msgWeaponList,_,id)
write_string(num?WEAPONLIST:g_weapon_entity)
for(new i=2;i<=9;i++)write_byte(g_wpn_variables[i])
message_end()
}
public ham_takedamage(victim,inflictor,attacker, Float:damage) <FireBullets: Enabled>
{
SetHamParamFloat(4,damage * DAMAGE)
return HAM_OVERRIDE;
}
public ham_takedamage() <FireBullets: Disabled> { return HAM_IGNORED; }
public ham_takedamage() <> { return HAM_IGNORED; }

Прикрепленные файлы:
Прикрепленный файл  1.rar ( 1,13 мегабайт ) Кол-во скачиваний: 20
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: