[Помощ] относно batcoh code base

Въпроси и проблеми свързани с AMXModX.
Аватар
DarkGameR
Извън линия
Потребител
Потребител
Мнения: 43
Регистриран на: 31 Май 2020, 19:05
Местоположение: Видин
Обратна връзка:

[Помощ] относно batcoh code base

Мнение от DarkGameR » 21 Фев 2021, 12:02

Първо ако съм отворил темата на грешно място преместете я, Начи аз правя сървър Umrella Swarm и искам да добавя оръжя който са от batcoh code base защото не намирам тези оръжя който ми трябват да добавя във опцята ul със друг вид кодове който ги разбирам и мога да работя със тях, Намирам само batcoh code base, Ама проблем е че не мога да настроя оръжята от batcoh code да са активни всеки роунд, и искам да науча повече за тези кодове, Как се работи със тях защото повече кодове от този вид не ги разбирам ще кача и едно оръжие от този вид кодове, И ако можете да ми направите няколко вида totorial.

Ето и оръжие от batcoh base code, Настроих го за gunxpmod работи ама само за един роунд.

Ако имам правописна грешка извинявайте.

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

#include <amxmodx>
#include <fakemeta_util>
#include <hamsandwich>
#include <gunxpmod>
#include <engine>

#define PLUGIN "[ZP] Weapon: THANATOS-7"
#define VERSION "1.0"
#define AUTHOR "Batcoh & xUnicorn (t3rkecorejz)"

#define CustomItem(%0) (pev(%0, pev_impulse) == WEAPON_KEY)

#define GetState(%0) get_pdata_int(%0, m_iWeaponState, 4)
#define SetState(%0,%1) set_pdata_int(%0, m_iWeaponState, %1, 4)

// CWeaponBox
#define m_rgpPlayerItems_CWeaponBox 34

// CBaseAnimating
#define m_flLastEventCheck 38

// CBasePlayerItem
#define m_pPlayer 41
#define m_pNext 42
#define m_iId 43

// CBasePlayerWeapon
#define m_flNextPrimaryAttack 46
#define m_flNextSecondaryAttack 47
#define m_flTimeWeaponIdle 48
#define m_iPrimaryAmmoType 49
#define m_iClip 51
#define m_fInReload 54
#define m_iWeaponState 74

// CBaseMonster
#define m_LastHitGroup 75
#define m_flNextAttack 83

// CBasePlayer
#define m_rpgPlayerItems 367
#define m_pActiveItem 373
#define m_rgAmmo 376

enum eSequence
{
	ANIM_IDLE_A = 0,
	ANIM_IDLE_B,
	ANIM_IDLE_B2,

	ANIM_SHOOT1_A,
	ANIM_SHOOT1_B,
	ANIM_SHOOT2_A,
	ANIM_SHOOT2_B,

	ANIM_RELOAD_A,
	ANIM_RELOAD_B,

	ANIM_SCYTHE_SHOOT,
	ANIM_SCYTHE_RELOAD,

	ANIM_DRAW_A,
	ANIM_DRAW_B
};

#define OBS_IN_EYE 4

// from model: Frames / FPS
#define ANIM_IDLE_TIME 3.04
#define ANIM_SHOOT_TIME 0.54
#define ANIM_RELOAD_TIME 3.2
#define ANIM_DRAW_TIME 2.04
#define ANIM_SCYTHE_SHOOT_TIME 4.04
#define ANIM_SCYTHE_RELOAD_TIME 3.04

#define WEAPON_KEY 2248
#define WEAPON_CSW CSW_M249
#define WEAPON_OLD "weapon_m249"
#define WEAPON_NEW "x/weapon_thanatos7"
#define WEAPON_HUD "sprites/x/640hud117.spr"
#define WEAPON_HUD_AMMO "sprites/x/640hud7.spr"

#define WEAPON_NAME "THANATOS-7"
#define WEAPON_COST 10

#define pev_thinktimes pev_iuser3

#define SCYTHE_CLASSNAME "thanatos7_scythe"
#define SCYTHE_SPEED 1500
#define SCYTHE_RADIUS 30.0
#define SCYTHE_DAMAGE random_float(25.0, 50.0)
#define SCYTHE_DURATION 5.0
#define SCYTHE_TIMERESET 0.2

#define WEAPON_MODEL_V "models/x/v_thanatos7_b1.mdl"
#define WEAPON_MODEL_P "models/x/p_thanatos7.mdl"
#define WEAPON_MODEL_W "models/x/w_thanatos7.mdl"
#define WEAPON_MODEL_S "models/x/thanatos7_scythe.mdl"
#define WEAPON_BODY 0

#define WEAPON_SOUND_S "weapons/thanatos7-1.wav"
#define WEAPON_SOUND_S2 "weapons/thanatos7_scytheshoot.wav"

#define WEAPON_CLIP 120
#define WEAPON_AMMO 240

#define WEAPON_RATE 0.1
#define WEAPON_RECOIL 1.0
#define WEAPON_DAMAGE 1.0

new const iWeaponList[] = {  
	3, 200,-1, -1, 0, 4, 20, 0 // weapon_m249
}

new g_iszAllocString_View, 
	g_iszAllocString_Player, 
	g_iszAllocString_Entity,

	g_iszSpriteIndexBloodSpray, 
	g_iszSpriteIndexBloodDrop,

	HamHook: g_fw_TraceAttack[4],

	g_iMsgID_Weaponlist

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	register_gxm_item("M249 - Thanatos7", "Item Bought : Thanots7 [S.ADMIN] +Damage", 1200, 23, GUN_SECTION_RIFLE, 3, CSW_M249)

	register_logevent("EV_LogRoundEnd", 2, "1=Round_End");

	RegisterHam(Ham_Item_Deploy, WEAPON_OLD, "fw_Item_Deploy_Post", 1);
	RegisterHam(Ham_Item_PostFrame, WEAPON_OLD, "fw_Item_PostFrame");
	RegisterHam(Ham_Item_AddToPlayer, WEAPON_OLD, "fw_Item_AddToPlayer_Post", 1);
	RegisterHam(Ham_Weapon_Reload, WEAPON_OLD, "fw_Weapon_Reload");
	RegisterHam(Ham_Weapon_WeaponIdle, WEAPON_OLD, "fw_Weapon_WeaponIdle");
	RegisterHam(Ham_Weapon_PrimaryAttack, WEAPON_OLD, "fw_Weapon_PrimaryAttack");
	
	g_fw_TraceAttack[0] = RegisterHam(Ham_TraceAttack, "func_breakable", "fw_TraceAttack");
	g_fw_TraceAttack[1] = RegisterHam(Ham_TraceAttack, "info_target",    "fw_TraceAttack");
	g_fw_TraceAttack[2] = RegisterHam(Ham_TraceAttack, "player",         "fw_TraceAttack");
	g_fw_TraceAttack[3] = RegisterHam(Ham_TraceAttack, "hostage_entity", "fw_TraceAttack");

	register_think(SCYTHE_CLASSNAME, "fw_Think_Scythe");
	register_touch(SCYTHE_CLASSNAME, "*", "fw_Touch_Scythe");
	
	fm_ham_hook(false);

	register_forward(FM_UpdateClientData, "fw_UpdateClientData_Post", 1);
	register_forward(FM_SetModel, "fw_SetModel");

	register_clcmd(WEAPON_NEW, "HookSelect");

	g_iMsgID_Weaponlist = get_user_msgid("WeaponList");
}
public plugin_precache() {
	new szBuffer[64]; formatex(szBuffer, charsmax(szBuffer), "sprites/%s.txt", WEAPON_NEW);

	engfunc(EngFunc_PrecacheGeneric, szBuffer);
	engfunc(EngFunc_PrecacheGeneric, WEAPON_HUD);
	engfunc(EngFunc_PrecacheGeneric, WEAPON_HUD_AMMO);
	
	g_iszAllocString_View = engfunc(EngFunc_AllocString, WEAPON_MODEL_V);
	g_iszAllocString_Player = engfunc(EngFunc_AllocString, WEAPON_MODEL_P);
	g_iszAllocString_Entity = engfunc(EngFunc_AllocString, WEAPON_OLD);

	g_iszSpriteIndexBloodSpray = engfunc(EngFunc_PrecacheModel, "sprites/bloodspray.spr");
	g_iszSpriteIndexBloodDrop = engfunc(EngFunc_PrecacheModel, "sprites/blood.spr");

	engfunc(EngFunc_PrecacheModel, WEAPON_MODEL_V);
	engfunc(EngFunc_PrecacheModel, WEAPON_MODEL_P);
	engfunc(EngFunc_PrecacheModel, WEAPON_MODEL_W);
	engfunc(EngFunc_PrecacheModel, WEAPON_MODEL_S);

	UTIL_PrecacheSoundsFromModel(WEAPON_MODEL_V);

	engfunc(EngFunc_PrecacheSound, WEAPON_SOUND_S);
	engfunc(EngFunc_PrecacheSound, WEAPON_SOUND_S2);
}
public EV_LogRoundEnd() {
	new iEntity;

	while((iEntity = engfunc(EngFunc_FindEntityByString, iEntity, "classname", SCYTHE_CLASSNAME))) {
		if(pev_valid(iEntity))
			set_pev(iEntity, pev_flags, FL_KILLME);
	}
}
public HookSelect(iPlayer) {
	engclient_cmd(iPlayer, WEAPON_OLD);
	return PLUGIN_HANDLED;
}
public gxm_item_enabled(iPlayer) {
	static iEnt; iEnt = engfunc(EngFunc_CreateNamedEntity, g_iszAllocString_Entity);
	if(iEnt <= 0) return 0;

	set_pev(iEnt, pev_spawnflags, SF_NORESPAWN);
	set_pev(iEnt, pev_impulse, WEAPON_KEY);
	ExecuteHam(Ham_Spawn, iEnt);
	UTIL_DropWeapon(iPlayer, 1);

	if(!ExecuteHamB(Ham_AddPlayerItem, iPlayer, iEnt)) {
		engfunc(EngFunc_RemoveEntity, iEnt);
		return 0;
	}

	ExecuteHamB(Ham_Item_AttachToPlayer, iEnt, iPlayer);
	set_pdata_int(iEnt, m_iClip, WEAPON_CLIP, 4);
	SetState(iEnt, 0);

	new iAmmoType = m_rgAmmo + get_pdata_int(iEnt, m_iPrimaryAmmoType, 4);

	if(get_pdata_int(iPlayer, m_rgAmmo, 5) < WEAPON_AMMO)
	set_pdata_int(iPlayer, iAmmoType, WEAPON_AMMO, 5);

	emit_sound(iPlayer, CHAN_ITEM, "items/gunpickup2.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM);

	return 1;
}
public fw_Think_Scythe(iEntity) {
	if(!pev_valid(iEntity))
		return;

	new Float: vecOrigin[3], iOwner;
	static iVictim = -1;

	pev(iEntity, pev_origin, vecOrigin);
	iOwner = pev(iEntity, pev_owner);

	if(pev(iEntity, pev_thinktimes) == floatround(SCYTHE_DURATION / SCYTHE_TIMERESET))
		set_pev(iEntity, pev_flags, FL_KILLME);

	while((iVictim = engfunc(EngFunc_FindEntityInSphere, iVictim, vecOrigin, SCYTHE_RADIUS)) > 0) {
		if(pev(iVictim, pev_takedamage) == DAMAGE_NO) 
			continue;

		if(is_user_alive(iVictim)) {
			if(iVictim == iOwner || zp_get_user_zombie(iOwner) || !zp_get_user_zombie(iVictim))
				continue;
		}
		else if(pev(iVictim, pev_solid) == SOLID_BSP) {
			if(pev(iVictim, pev_spawnflags) & SF_BREAK_TRIGGER_ONLY)
				continue;
		}

		set_pdata_int(iVictim, m_LastHitGroup, HIT_GENERIC, 5);
		ExecuteHamB(Ham_TakeDamage, iVictim, iEntity, iOwner, SCYTHE_DAMAGE, DMG_BULLET | DMG_NEVERGIB);

		if(is_user_alive(iVictim) && zp_get_user_zombie(iVictim)) 
			UTIL_BloodDrips(iVictim, floatround(SCYTHE_DAMAGE * 3));
	}

	set_pev(iEntity, pev_thinktimes, pev(iEntity, pev_thinktimes) + 1);
	set_pev(iEntity, pev_nextthink, get_gametime() + SCYTHE_TIMERESET);
}
public fw_Touch_Scythe(iEntity, iVictim) {
	if(!pev_valid(iEntity))
		return;

	new iOwner = pev(iEntity, pev_owner);

	if(iVictim == iOwner)
		return;

	set_pev(iEntity, pev_solid, SOLID_NOT);
	set_pev(iEntity, pev_movetype, MOVETYPE_NONE);
	return;
}
public fw_Item_Deploy_Post(iItem) {
	if(!CustomItem(iItem)) return;
	static iPlayer; iPlayer = get_pdata_cbase(iItem, m_pPlayer, 4);

	set_pev_string(iPlayer, pev_viewmodel2, g_iszAllocString_View);
	set_pev_string(iPlayer, pev_weaponmodel2, g_iszAllocString_Player);

	SendWeaponAnim(iPlayer, GetState(iItem) ? ANIM_DRAW_B : ANIM_DRAW_A);

	set_pdata_float(iPlayer, m_flNextAttack, ANIM_DRAW_TIME, 5);
	set_pdata_float(iItem, m_flTimeWeaponIdle, ANIM_DRAW_TIME, 4);
}
public fw_Item_PostFrame(iItem) {
	if(!CustomItem(iItem)) return HAM_IGNORED;

	static iPlayer; iPlayer = get_pdata_cbase(iItem, m_pPlayer, 4);
	static iClip; iClip = get_pdata_int(iItem, m_iClip, 4);
	static iAmmoType; iAmmoType = m_rgAmmo + get_pdata_int(iItem, m_iPrimaryAmmoType, 4);
	static iAmmo; iAmmo = get_pdata_int(iPlayer, iAmmoType, 5);
	static j; j = min(WEAPON_CLIP - iClip, iAmmo);

	if(get_pdata_int(iItem, m_fInReload, 4) == 1) {
		set_pdata_int(iItem, m_iClip, iClip+j, 4);
		set_pdata_int(iPlayer, iAmmoType, iAmmo-j, 5);
		set_pdata_int(iItem, m_fInReload, 0, 4);
	}

	static iButton; iButton = pev(iPlayer, pev_button);

	if(get_pdata_float(iItem, m_flNextSecondaryAttack, 4) <= 0.0) {
		if(iButton & IN_ATTACK2) {
			if(GetState(iItem)) { // Shoot Scythe
				emit_sound(iPlayer, CHAN_WEAPON, WEAPON_SOUND_S2, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
				SendWeaponAnim(iPlayer, ANIM_SCYTHE_SHOOT);
				SetState(iItem, 0);

				static iReference;

				new Float: vecOrigin[3]; pev(iPlayer, pev_origin, vecOrigin);
				new Float: vecViewOfs[3]; pev(iPlayer, pev_view_ofs, vecViewOfs);
				new Float: vecVelocity[3], Float: vecAngles[3];

				vecOrigin[0] += vecViewOfs[0];
				vecOrigin[1] += vecViewOfs[1];
				vecOrigin[2] += vecViewOfs[2];

				if(iReference || (iReference = engfunc(EngFunc_AllocString, "info_target"))) {
					new iEntity = engfunc(EngFunc_CreateNamedEntity, iReference);

					set_pev(iEntity, pev_classname, SCYTHE_CLASSNAME);
					set_pev(iEntity, pev_solid, SOLID_TRIGGER);
					set_pev(iEntity, pev_movetype, MOVETYPE_FLY);
					set_pev(iEntity, pev_owner, iPlayer);

					set_pev(iEntity, pev_thinktimes, 0);
					set_pev(iEntity, pev_nextthink, get_gametime() + SCYTHE_TIMERESET);

					set_pev(iEntity, pev_animtime, get_gametime());
					set_pev(iEntity, pev_framerate, 1.0);
					set_pev(iEntity, pev_frame, 1.0);

					velocity_by_aim(iPlayer, SCYTHE_SPEED, vecVelocity);
					set_pev(iEntity, pev_velocity, vecVelocity);

					engfunc(EngFunc_VecToAngles, vecVelocity, vecAngles);
					set_pev(iEntity, pev_angles, vecAngles);

					engfunc(EngFunc_SetModel, iEntity, WEAPON_MODEL_S);
					engfunc(EngFunc_SetOrigin, iEntity, vecOrigin);
				}

				set_pdata_float(iItem, m_flTimeWeaponIdle, ANIM_SCYTHE_SHOOT_TIME, 4);
				set_pdata_float(iItem, m_flNextPrimaryAttack, ANIM_SCYTHE_SHOOT_TIME, 4);
				set_pdata_float(iItem, m_flNextSecondaryAttack, ANIM_SCYTHE_SHOOT_TIME, 4);
				set_pdata_float(iPlayer, m_flNextAttack, ANIM_SCYTHE_SHOOT_TIME, 5);
			}
			else { // Go to B mode
				SendWeaponAnim(iPlayer, ANIM_SCYTHE_RELOAD);
				SetState(iItem, 1);

				set_pdata_float(iItem, m_flTimeWeaponIdle, ANIM_SCYTHE_RELOAD_TIME, 4);
				set_pdata_float(iItem, m_flNextPrimaryAttack, ANIM_SCYTHE_RELOAD_TIME, 4);
				set_pdata_float(iItem, m_flNextSecondaryAttack, ANIM_SCYTHE_RELOAD_TIME, 4);
				set_pdata_float(iPlayer, m_flNextAttack, ANIM_SCYTHE_RELOAD_TIME, 5);
			}

			iButton &= ~IN_ATTACK2;
			set_pev(iPlayer, pev_button, iButton);
		}
	}

	return HAM_IGNORED;
}
public fw_Item_AddToPlayer_Post(iItem, iPlayer) {
	switch(pev(iItem, pev_impulse)) {
		case WEAPON_KEY: s_weaponlist(iPlayer, true);
		case 0: s_weaponlist(iPlayer, false);
	}
}
public fw_Weapon_Reload(iItem) {
	if(!CustomItem(iItem)) return HAM_IGNORED;

	static iClip; iClip = get_pdata_int(iItem, m_iClip, 4);
	if(iClip >= WEAPON_CLIP) return HAM_SUPERCEDE;

	static iPlayer; iPlayer = get_pdata_cbase(iItem, m_pPlayer, 4);
	static iAmmoType; iAmmoType = m_rgAmmo + get_pdata_int(iItem, m_iPrimaryAmmoType, 4);
	if(get_pdata_int(iPlayer, iAmmoType, 5) <= 0) return HAM_SUPERCEDE

	set_pdata_int(iItem, m_iClip, 0, 4);
	ExecuteHam(Ham_Weapon_Reload, iItem);
	set_pdata_int(iItem, m_iClip, iClip, 4);

	set_pdata_int(iItem, m_fInReload, 1, 4);
	set_pdata_float(iItem, m_flNextPrimaryAttack, ANIM_RELOAD_TIME, 4);
	set_pdata_float(iItem, m_flNextSecondaryAttack, ANIM_RELOAD_TIME, 4);
	set_pdata_float(iItem, m_flTimeWeaponIdle, ANIM_RELOAD_TIME, 4);
	set_pdata_float(iPlayer, m_flNextAttack, ANIM_RELOAD_TIME, 5);

	SendWeaponAnim(iPlayer, GetState(iItem) ? ANIM_RELOAD_B : ANIM_RELOAD_A);
	return HAM_SUPERCEDE;
}
public fw_Weapon_WeaponIdle(iItem) {
	if(!CustomItem(iItem) || get_pdata_float(iItem, m_flTimeWeaponIdle, 4) > 0.0) return HAM_IGNORED;
	static iPlayer; iPlayer = get_pdata_cbase(iItem, m_pPlayer, 4);
	static iAnim;

	if(GetState(iItem)) iAnim = random_num(ANIM_IDLE_B, ANIM_IDLE_B2);
	else iAnim = ANIM_IDLE_A;

	SendWeaponAnim(iPlayer, iAnim);
	set_pdata_float(iItem, m_flTimeWeaponIdle, ANIM_IDLE_TIME, 4);

	return HAM_SUPERCEDE;
}
public fw_Weapon_PrimaryAttack(iItem) {
	if(!CustomItem(iItem)) return HAM_IGNORED;
	static iPlayer; iPlayer = get_pdata_cbase(iItem, m_pPlayer, 4);

	if(get_pdata_int(iItem, m_iClip, 4) == 0) {
		ExecuteHam(Ham_Weapon_PlayEmptySound, iItem);
		set_pdata_float(iItem, m_flNextPrimaryAttack, 0.2, 4);
		return HAM_SUPERCEDE;
	}

	static fw_TraceLine; fw_TraceLine = register_forward(FM_TraceLine, "fw_TraceLine_Post", 1);
	static fw_PlayBackEvent; fw_PlayBackEvent = register_forward(FM_PlaybackEvent, "fw_PlaybackEvent");
	fm_ham_hook(true);

	ExecuteHam(Ham_Weapon_PrimaryAttack, iItem);

	unregister_forward(FM_TraceLine, fw_TraceLine, 1);
	unregister_forward(FM_PlaybackEvent, fw_PlayBackEvent);
	fm_ham_hook(false);

	static Float:vecPunchangle[3];
	pev(iPlayer, pev_punchangle, vecPunchangle);
	vecPunchangle[0] *= WEAPON_RECOIL;
	vecPunchangle[1] *= WEAPON_RECOIL;
	vecPunchangle[2] *= WEAPON_RECOIL;
	set_pev(iPlayer, pev_punchangle, vecPunchangle);

	emit_sound(iPlayer, CHAN_WEAPON, WEAPON_SOUND_S, VOL_NORM, ATTN_NORM, 0, PITCH_NORM);
	SendWeaponAnim(iPlayer, GetState(iItem) ? ANIM_SHOOT1_B : ANIM_SHOOT1_A);

	set_pdata_float(iItem, m_flNextPrimaryAttack, WEAPON_RATE, 4);
	set_pdata_float(iItem, m_flTimeWeaponIdle, ANIM_SHOOT_TIME, 4);

	return HAM_SUPERCEDE;
}
public fw_PlaybackEvent() return FMRES_SUPERCEDE;
public fw_TraceAttack(iVictim, iAttacker, Float:flDamage) {
	if(!is_user_connected(iAttacker)) return;
	static iItem; iItem = get_pdata_cbase(iAttacker, m_pActiveItem, 5);
	if(iItem <= 0 || !CustomItem(iItem)) return;
        SetHamParamFloat(3, flDamage * WEAPON_DAMAGE);
}
public fw_UpdateClientData_Post(iPlayer, SendWeapons, CD_Handle) {
	if(get_cd(CD_Handle, CD_DeadFlag) != DEAD_NO) return;

	static iItem; iItem = get_pdata_cbase(iPlayer, m_pActiveItem, 5);
	if(iItem <= 0 || !CustomItem(iItem)) return;

	set_cd(CD_Handle, CD_flNextAttack, get_gametime() + 0.001);
}
public fw_SetModel(iEnt) {
	static i, szClassname[32], iItem; 
	pev(iEnt, pev_classname, szClassname, 31);

	if(!equal(szClassname, "weaponbox")) return FMRES_IGNORED;

	for(i = 0; i < 6; i++) {
		iItem = get_pdata_cbase(iEnt, m_rgpPlayerItems_CWeaponBox + i, 4);

		if(iItem > 0 && CustomItem(iItem)) {
			engfunc(EngFunc_SetModel, iEnt, WEAPON_MODEL_W);
			set_pev(iEnt, pev_body, WEAPON_BODY);
			return FMRES_SUPERCEDE;
		}
	}
	return FMRES_IGNORED;
}
public fw_TraceLine_Post(const Float:flOrigin1[3], const Float:flOrigin2[3], iFrag, iIgnore, tr) {
	if(iFrag & IGNORE_MONSTERS) return FMRES_IGNORED;
	static pHit; pHit = get_tr2(tr, TR_pHit);
	static Float:flvecEndPos[3]; get_tr2(tr, TR_vecEndPos, flvecEndPos);
	
	if(pHit > 0) {
		if(pev(pHit, pev_solid) != SOLID_BSP) return FMRES_IGNORED;
	}

	engfunc(EngFunc_MessageBegin, MSG_PAS, SVC_TEMPENTITY, flvecEndPos, 0);
	write_byte(TE_GUNSHOTDECAL);
	engfunc(EngFunc_WriteCoord, flvecEndPos[0]);
	engfunc(EngFunc_WriteCoord, flvecEndPos[1]);
	engfunc(EngFunc_WriteCoord, flvecEndPos[2]);
	write_short(pHit > 0 ? pHit : 0);
	write_byte(random_num(41, 45));
	message_end();

	return FMRES_IGNORED;
}
public fm_ham_hook(bool:on) {
	if(on) {
		EnableHamForward(g_fw_TraceAttack[0]);
		EnableHamForward(g_fw_TraceAttack[1]);
		EnableHamForward(g_fw_TraceAttack[2]);
		EnableHamForward(g_fw_TraceAttack[3]);
	}
	else {
		DisableHamForward(g_fw_TraceAttack[0]);
		DisableHamForward(g_fw_TraceAttack[1]);
		DisableHamForward(g_fw_TraceAttack[2]);
		DisableHamForward(g_fw_TraceAttack[3]);
	}
}
stock SendWeaponAnim(iPlayer, iAnim) {
	set_pev(iPlayer, pev_weaponanim, iAnim);

	message_begin(MSG_ONE, SVC_WEAPONANIM, _, iPlayer);
	write_byte(iAnim);
	write_byte(0);
	message_end();
}
stock UTIL_DropWeapon(iPlayer, iSlot) {
	static iEntity, iNext, szWeaponName[32]; 
	iEntity = get_pdata_cbase(iPlayer, m_rpgPlayerItems + iSlot, 5);
	if(iEntity > 0) {       
		do {
			iNext = get_pdata_cbase(iEntity, m_pNext, 4)
			if(get_weaponname(get_pdata_int(iEntity, m_iId, 4), szWeaponName, 31)) {  
				engclient_cmd(iPlayer, "drop", szWeaponName);
			}
		} while(( iEntity = iNext) > 0);
	}
}
stock UTIL_PrecacheSoundsFromModel(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);
					engfunc(EngFunc_PrecacheSound, szSoundPath);
				}
			}
		}
	}
	
	fclose(iFile);
}

public UTIL_BloodDrips(iVictim, iAmount) { 
	if(iAmount > 255) iAmount = 255;

	new Float: vecOrigin[3]; pev(iVictim, pev_origin, vecOrigin);

	engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vecOrigin, 0);
	write_byte(TE_BLOODSPRITE);
	engfunc(EngFunc_WriteCoord, vecOrigin[0]);
	engfunc(EngFunc_WriteCoord, vecOrigin[1]);
	engfunc(EngFunc_WriteCoord, vecOrigin[2]);
	write_short(g_iszSpriteIndexBloodSpray);
	write_short(g_iszSpriteIndexBloodDrop);
	write_byte(ExecuteHamB(Ham_BloodColor, iVictim));
	write_byte(min(max(3,iAmount/10),16));
	message_end();
}
stock s_weaponlist(iPlayer, bool:on) {
	message_begin(MSG_ONE, g_iMsgID_Weaponlist, _, iPlayer);
	write_string(on ? WEAPON_NEW : WEAPON_OLD);
	write_byte(iWeaponList[0]);
	write_byte(on ? WEAPON_AMMO : iWeaponList[1]);
	write_byte(iWeaponList[2]);
	write_byte(iWeaponList[3]);
	write_byte(iWeaponList[4]);
	write_byte(iWeaponList[5]);
	write_byte(iWeaponList[6]);
	write_byte(iWeaponList[7]);
	message_end();
}
[ZombiePlanet.net] Umbrella Swarm & GunXP [ High-XP ] 24/7
IP: None


:nicecode: :bg:

Изображение

Изображение

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

Обратно към “Поддръжка / Помощ”

Кой е на линия

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