

Стаж: 18 лет
Сообщений: 987
Благодарностей: 529
Полезность: 1050
|
Облазил кругом на Оленях - нашел только пример. Пробовал и в Мод и в сам плагин "пихать" - не заработало. Суть простая:При выборе Расы Человека - модель игрока из любым оружием становиться невидимой Но как только оружие появляеться за спиной - оно приобретает полностью видимый вид. Код:
========================================================================== ========= If this were in FakeMeta I could tell you.
But I don't know what the constant for alpha is in Engine.
Ask how to change/get Alpha in Engine in scripting help.
Then replace: Code: set_entity_visibility(g_bwEnt[id], 1) entity_set_model(g_bwEnt[id], modelName) (Near the end of Event_CurWeapon)
With: Code: set_entity_visibility(g_bwEnt[id], 1) entity_set_model(g_bwEnt[id], modelName) entity_set_int(g_bwEnt[id],EV_INT_Alpha,entity_get_int(entity_set_in t(id,EV_INT_Alpha))
================================================================================ ===
#include < amxmodx > #include < engine > #include < fakemeta >
#pragma semicolon 1
#define PLUGIN "Attachments Visibility" #define VERSION "0.0.1"
new g_iMaxPlayers; #define IsPlayer(%0) ( 1 <= (%0) <= g_iMaxPlayers )
public plugin_init() { register_plugin( PLUGIN, VERSION, "ConnorMcLeod" ); register_forward(FM_AddToFullPack, "OnAddToFullPack_Post", true); g_iMaxPlayers = get_maxplayers(); }
public OnAddToFullPack_Post(es, e, ent, host, hostflags, player, pSet) { if( !player && get_orig_retval() && get_es(es, ES_MoveType) == MOVETYPE_FOLLOW ) { static aiment, Float:rendercolor[3], RenderColor[3]; aiment = entity_get_edict(ent, EV_ENT_aiment); if( IsPlayer(aiment) && aiment != host ) { set_es(es, ES_RenderMode, entity_get_int(aiment, EV_INT_rendermode)) ; set_es(es, ES_RenderAmt, clamp( floatround(entity_get_float(aiment, EV_FL_renderamt)), 0, 255 )); entity_get_vector(aiment, EV_VEC_rendercolor, rendercolor); FVecIVec(rendercolor, RenderColor); set_es(es, ES_RenderColor, RenderColor); set_es(es, ES_RenderFx, entity_get_int(aiment, EV_INT_renderfx)); } } }
================================================================================ =
set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, invlevel );
================================================================================ = Код:
#include <colorchat>
#define BLINK_COOLDOWN 2.0 #define BASH_GLOW_INTENSITY 200 #define BASH_HOLD_TIME 0.7
HU_ULT_Blink( id ) { // User can't Blink when he/she's stunned if ( p_data_b[id][PB_STUNNED] ) { WC3_StatusText( id, 0, "%L", id, "CLIENT_PRINT_HU_ULT_BLINK_1" );
return; } new vOldLocation[3], vNewLocation[3] // Get the player's current location get_user_origin( id, vOldLocation ); // Get where the player is looking (where the player will teleport) get_user_origin( id, vNewLocation, 3 ); // Play the blink sound! emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_BLINK], 1.0, ATTN_NORM, 0, PITCH_NORM );
// Make sure a nearby enemy doesn't have immunity if ( WC3_IsImmunePlayerNear( id, vOldLocation ) || WC3_IsImmunePlayerNear( id, vNewLocation ) ) { //set_hudmessage( 255, 255, 10, -1.0, -0.4, 1, 0.5, BLINK_COOLDOWN, 0.2, 0.2 ,-1 ); WC3_StatusText( id, 0, "%L", id, "TELEPORT_FAILED_ENEMY_IMMUNITY" ); // Reset the user's ultimate ULT_ResetCooldown( id, get_pcvar_num( CVAR_wc3_ult_cooldown ) );
return; }
// Check to see if the user is teleporting where they shouldn't if ( SHARED_NearObjective( vNewLocation ) == OBJENT_VIP_ESCAPE ) { WC3_StatusText( id, 0, "%L", id, "CLIENT_PRINT_HU_ULT_BLINK_2" ); // Reset the user's ultimate ULT_ResetCooldown( id, get_pcvar_num( CVAR_wc3_ult_cooldown ) );
return; }
// If we teleport them back, make sure they don't get teleported into the ground vOldLocation[ZPOS] += 15;
// Change coordinates to make sure player won't get stuck in the ground/wall vNewLocation[XPOS] += ( ( vNewLocation[XPOS] - vOldLocation[XPOS] > 0 ) ? -50 : 50 ); vNewLocation[YPOS] += ( ( vNewLocation[YPOS] - vOldLocation[YPOS] > 0 ) ? -50 : 50 ); vNewLocation[ZPOS] += 40;
// Set up some origins for some special effects!!! new vCenterOrigin[3], vAxisOrigin[3]; vCenterOrigin[0] = vOldLocation[0]; vCenterOrigin[1] = vOldLocation[1]; vCenterOrigin[2] = vOldLocation[2] + 10; vAxisOrigin[0] = vOldLocation[0]; vAxisOrigin[1] = vOldLocation[1]; vAxisOrigin[2] = vOldLocation[2] + 10 + TELEPORT_RADIUS;
// Lets create some beam cylinders! Create_TE_BEAMCYLINDER( vOldLocation, vCenterOrigin, vAxisOrigin, g_iSprites[SPR_SHOCKWAVE], 0, 0, 3, 60, 0, 0, 255, 0, 255, 0 ); // Modify our effects a bit for another cylinder vCenterOrigin[2] += 80; vAxisOrigin[2] += 80; // And draw another cylinder!!! Create_TE_BEAMCYLINDER( vOldLocation, vCenterOrigin, vAxisOrigin, g_iSprites[SPR_SHOCKWAVE], 0, 0, 3, 60, 0, 0, 255, 0, 255, 0 );
// Planting the bomb then teleporting = bad, lets stop this... client_cmd( id, "-use" );
// Then lets try to slay some bitches... if ( get_pcvar_num( CVAR_wc3_blink_protection ) ) {
// Lets go ahead and make this check before they teleport... if ( HU_ULT_BlinkProtection( id, vNewLocation ) ) {
ULT_ResetCooldown( id, get_pcvar_num( CVAR_wc3_ult_cooldown ) );
return; } }
// Teleport the player!!! set_user_origin( id, vNewLocation );
// Check if Blink landed you in a wall, if so, abort new parm[5]; parm[0] = id; parm[1] = vOldLocation[0]; parm[2] = vOldLocation[1]; parm[3] = vOldLocation[2]; parm[4] = vNewLocation[2]; set_task( 0.1, "_HU_ULT_BlinkStuck", TASK_BLINKSTUCK + id, parm, 5 ); ULT_ResetCooldown( id, get_pcvar_num( CVAR_wc3_ult_cooldown ) );
ULT_Icon( id, ICON_HIDE );
emit_sound( id, CHAN_STATIC, g_szSounds[SOUND_BLINK], 1.0, ATTN_NORM, 0, PITCH_NORM );
return; }
// Function will check to see if a user is stuck in a wall public _HU_ULT_BlinkStuck( parm[] ) {
new id = parm[0]
if ( !p_data_b[id][PB_ISCONNECTED] ) { return; }
new vOldLocation[3], vOrigin[3];
vOldLocation[0] = parm[1]; vOldLocation[1] = parm[2]; vOldLocation[2] = parm[3];
get_user_origin( id, vOrigin ); // Then the user is stuck :/ if ( parm[4] == vOrigin[2] ) {
//set_hudmessage( 255, 255, 10, -1.0, -0.4, 1, 0.5, BLINK_COOLDOWN, 0.2, 0.2, 5 ); WC3_StatusText( id, 0, "%L", id, "TELEPORT_FAILED_BAD_DESTINATION" );
set_user_origin( id, vOldLocation ) ;
ULT_ResetCooldown( id, floatround(BLINK_COOLDOWN) ); }
// Otherwise they teleported correctly! else {
// Sprays white bubbles everywhere new vStartOrigin[3]; vStartOrigin[0] = vOrigin[0]; vStartOrigin[1] = vOrigin[1]; vStartOrigin[2] = vOrigin[2] + 40; Create_TE_SPRITETRAIL( vStartOrigin, vOrigin, g_iSprites[SPR_FLARE], 30, 10, 1, 50, 10 );
} return; }
// Function will make sure the user isn't in an invalid location in a map HU_ULT_BlinkProtection( id, vOrigin[3] ) {
new bool:bSlay = false; new Float:fOrigin[3]; // Convert origin to float IVecFVec( vOrigin, fOrigin ); // User shouldn't be teleporting into the sky! if ( point_contents( fOrigin ) == CONTENTS_SKY ) { bSlay = true; }
// Get the current map name new szMapName[32]; get_mapname( szMapName, 32 );
// Only do these checks if we're in CS/CZ if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO ) {
if ( !bSlay ) { new x = vOrigin[0]; new y = vOrigin[1]; new z = vOrigin[2]; // Don't teleport too high if ( equali( szMapName, "de_dust" ) ) { if ( z > 220 ) { bSlay = true; } }
else if ( equali( szMapName, "awp_assault" ) ) { if( z > 520 && y > 2400 && y < 2600 ) { bSlay = true; } }
else if ( equali( szMapName, "de_dust_cz" ) ) { if ( z > 220 ) { bSlay = true; } }
else if ( equali( szMapName, "de_aztec_cz" ) ) { if ( z > 300 ) { bSlay = true; } }
else if ( equali( szMapName, "cs_assault_upc" ) ) { if( z > 650 ) { bSlay = true; } }
else if ( equali( szMapName, "de_aztec" ) ) { if( z > 300 ) { bSlay = true; } }
else if ( equali( szMapName, "de_cbble" ) || equali( szMapName, "de_cbble_cz" ) ) { if ( z > 315 ) { if ( ! ( ( x > -1320 && x < -1150 ) && ( y > 2600 && y < 2900 ) ) ) { bSlay = true; } } }
else if ( equali( szMapName, "cs_assault" ) ) { if ( z > 700 ) { bSlay = true; } }
else if ( equali( szMapName, "cs_militia" ) || equali( szMapName, "cs_militia_cz" ) ) { if ( z > 500 ) { bSlay = true; } }
else if ( equali( szMapName, "cs_italy" ) ) { if ( z > -220 && y < -2128 ) { bSlay = true; } else if( z > 250 ) { if ( ( x < -1000 && x > -1648 ) && ( y > 1900 && y < 2050 ) ) { bSlay = true; } else if ( ( x < -1552 && x > -1648 ) && ( y > 1520 && y < 2050 ) ) { bSlay = true; } } }
else if ( equali( szMapName, "cs_italy_cz" ) ) { if ( y > 2608 ) { bSlay = true; } }
else if ( equali( szMapName, "de_dust2" ) ) { if ( z > 270 ) { bSlay = true; } }
else if ( equali( szMapName, "de_dust2_cz" ) ) { if ( z > 270 ) { bSlay = true; } }
else if ( equali( szMapName, "fy_dustworld" ) ) { if ( z > 82 ) { bSlay = true; } }
else if ( equali( szMapName, "fy_pool_day" ) ) { if ( z > 190 ) { bSlay = true; } }
else if ( equali( szMapName, "as_oilrig" ) ) { if ( x > 1700 ) { bSlay = true; } } } }
// For some reason bSlay is always true on this map, but you should be able to teleport anywhere if ( equali( szMapName, "cs_mice_final" ) ) { bSlay = false; }
// Slay the user!!! if ( bSlay ) { #if AMXX_VERSION_NUM < 183 ColorChat(id, RED, "%L", LANG_PLAYER, "SLAIN_FOR_TELEPORTING" ); #else client_print_color(id, print_team_red, "%L", LANG_PLAYER, "SLAIN_FOR_TELEPORTING" ); #endif //client_print( id, print_chat, "%s %L", id, "SLAIN_FOR_TELEPORTING" ); user_kill( id ); }
return bSlay; }
HU_DevotionAura( id ) {
if ( !is_user_alive( id ) ) { return; }
static iSkillLevel; iSkillLevel = SM_GetSkillLevel( id, SKILL_DEVOTION ); // Then the user has devotion aura + hasn't lost some skill levels! if ( iSkillLevel > 0 ) {
// Increase the user's health set_user_health( id, get_user_health( id ) + ( p_devotion * iSkillLevel ) ); } }
HU_SkillsOffensive( iAttacker, iVictim ) { static iSkillLevel;
// Bash iSkillLevel = SM_GetSkillLevel( iAttacker, SKILL_BASH ); if ( iSkillLevel > 0 ) {
// Cannot bash if already bashed or user is slowed if ( random_float( 0.0, 1.0 ) <= p_bash[iSkillLevel-1] && !SHARED_IsPlayerSlowed( iVictim ) ) {
p_data_b[iVictim][PB_STUNNED] = true; SHARED_SetSpeed( iVictim ); set_task( BASH_HOLD_TIME, "SHARED_ResetMaxSpeed", TASK_RESETSPEED + iVictim );
// Make the user glow! SHARED_Glow( iVictim, 0, 0, 0, BASH_GLOW_INTENSITY );
// Create a screen fade Create_ScreenFade( iVictim, (1<<10), (1<<10), (1<<12), 255, 255, 255, g_GlowLevel[iVictim][3] ) } } } Код:
public SHARED_INVIS_Set( id ) { // Do not want to set them as invisible if the player is currently rendering if ( !p_data_b[id][PB_CAN_RENDER] || !p_data_b[id][PB_ISCONNECTED] ) { return; }
new iInvisLevel = 0;
static iSkillLevel; iSkillLevel = SM_GetSkillLevel( id, SKILL_INVISIBILITY );
// If they are Human Alliance with Invisibility lets set the level if ( iSkillLevel > 0 ) { iInvisLevel = p_invisibility[iSkillLevel-1]; }
// User has a Cloak of Invisibility if ( ITEM_Has( id, ITEM_CLOAK ) > ITEM_NONE ) { // Then we are already a little invis, lets give them a little bonus for purchasin g the item if ( iInvisLevel > 0 ) { iInvisLevel = floatround( float( iInvisLevel ) / INVIS_CLOAK_DIVISOR ); } else { iInvisLevel = get_pcvar_num( CVAR_wc3_cloak ); } } // If the player is holding a knife they should be more invisible if ( SHARED_IsHoldingKnife( id ) ) { iInvisLevel /= 2; }
if ( iInvisLevel ) { set_user_rendering( id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, iIn visLevel ); p_data_b[id][PB_INVIS] = true; }
// User should not be invisible else { set_user_rendering( id );
p_data_b[id][PB_INVIS] = false; }
return; }
// Function will return true if their active weapon is a knife public SHARED_IsHoldingKnife( id ) { new iClip, iAmmo, iWeapon; iWeapon = get_user_weapon( id, iClip, iAmmo );
// Check for Counter-Strike or Condition Zero if ( g_MOD == GAME_CSTRIKE || g_MOD == GAME_CZERO ) { if ( iWeapon == CSW_KNIFE ) { return true; } }
// Check for Day of Defeat else if ( g_MOD == GAME_DOD ) { if ( iWeapon == DODW_AMERKNIFE || iWeapon == DODW_GERKNIFE || iWeapon == DODW_SPADE ) { return true; } }
return false; } Код:
#include <amxmodx> #include <fakemeta> #include <hamsandwich>
#define MAX_PLAYERS 32 #define OFFSET_PRIMARYWEAPON 116 #define OFFSET_WEAPONTYPE 43 #define EXTRAOFFSET_WEAPONS 4 #define OFFSET_AUTOSWITCH 509 #define OFFSET_SHIELD 510 #define HAS_SHIELD (1<<24)
#define PRIMARY_WEAPONS (1<<CSW_SCOUT | 1<<CSW_XM1014 | 1<<CSW_MAC10 | 1<<CSW_AUG | 1<<CSW_UMP45 | 1<<CSW_SG550 | 1<<CSW_GALIL | 1<<CSW_FAMAS | 1<<CSW_AWP | 1<<CSW_MP5NAVY | 1<<CSW_M249 | 1<<CSW_M3 | 1<<CSW_M4A1 | 1<<CSW_TMP | 1<<CSW_G3SG1 | 1<<CSW_SG552 | 1<<CSW_AK47 | 1<<CSW_P90)
#define is_weapon_primary(%1) (PRIMARY_WEAPONS & (1<<%1)) #define cs_get_weapon_type(%1) get_pdata_int(%1, OFFSET_WEAPONTYPE, EXTRAOFFSET_WEAPONS) #define cs_get_user_hasprim(%1) get_pdata_int(%1, OFFSET_PRIMARYWEAPON) #define cs_get_user_autoswitch(%1) get_pdata_int(%1, OFFSET_AUTOSWITCH) #define cs_get_user_shield(%1) (get_pdata_int(%1, OFFSET_SHIELD) & HAS_SHIELD) ? 1 : 0
enum { MODEL_NULL = 0, MODEL_AUG = 1, MODEL_AK47 = 2, MODEL_AWP = 3, MODEL_MP5NAVY = 4, MODEL_P90 = 5, MODEL_GALIL = 6, MODEL_M4A1 = 7, MODEL_SG550 = 8, MODEL_SG552 = 9, MODEL_SCOUT = 10, MODEL_XM1014 = 11, MODEL_G3SG1 = 13, MODEL_M249 = 14, MODEL_FAMAS = 15, MODEL_UMP45 = 16, MODEL_TMP = 17, MODEL_MAC10 = 18 }
new g_weapons[][] = { "weapon_p228", "weapon_scout", "weapon_hegrenade", "weapon_xm1014", "weapon_c4", "weapon_mac10", "weapon_aug", "weapon_smokegrenade", "weapon_elite", "weapon_fiveseven", "weapon_ump45", "weapon_sg550", "weapon_galil", "weapon_famas", "weapon_usp", "weapon_glock18", "weapon_awp", "weapon_mp5navy", "weapon_m249", "weapon_m3", "weapon_m4a1", "weapon_tmp", "weapon_g3sg1", "weapon_flashbang", "weapon_deagle", "weapon_sg552", "weapon_ak47", "weapon_knife", "weapon_p90" }
new g_weaponclass[] = "backweapon" new g_weaponmodel[] = "models/backweapons_wc/backweapons_wc.mdl" new g_weaponent[MAX_PLAYERS+1] new bot_limit,bool:bot_ham
public plugin_init() { register_plugin("Back Weapons", "1.87", "hoboman313; cheap_suit")
RegisterHam(Ham_Killed, "player", "bacon_killed") RegisterHam(Ham_Spawn, "player", "bacon_spawn_post", 1) RegisterHam(Ham_AddPlayerItem, "player", "bacon_addplayeritem") RegisterHam(Ham_RemovePlayerItem, "player", "bacon_removeplayeritem") bot_limit=get_cvar_pointer("bot_quota") for(new i = 0; i < sizeof g_weapons; i++) { RegisterHam(Ham_Item_AttachToPlayer, g_weapons[i], "bacon_item_attachtoplayer_post", 1) RegisterHam(Ham_Item_Deploy, g_weapons[i], "bacon_item_deploy_post", 1) } }
public plugin_precache() precache_model(g_weaponmodel)
public client_putinserver(id) { static infotarget if(!infotarget) infotarget = engfunc(EngFunc_AllocString, "info_target")
g_weaponent[id] = engfunc(EngFunc_CreateNamedEntity, infotarget) if(pev_valid(g_weaponent[id])) { engfunc(EngFunc_SetModel, g_weaponent[id], g_weaponmodel) set_pev(g_weaponent[id], pev_classname, g_weaponclass) set_pev(g_weaponent[id], pev_movetype, MOVETYPE_FOLLOW) set_pev(g_weaponent[id], pev_effects, EF_NODRAW) set_pev(g_weaponent[id], pev_aiment, id) } if(is_user_bot(id)&&!bot_ham&&bot_limit)set_task(0.1,"reg_ham_bot",id) }
public client_disconnect(id) { if(g_weaponent[id] > 0 && pev_valid(g_weaponent[id])) engfunc(EngFunc_RemoveEntity, g_weaponent[id])
g_weaponent[id] = 0 }
public reg_ham_bot(id) { if(bot_ham||!is_user_connected(id)||!get_pcvar_num(bot_limit))return RegisterHamFromEntity(Ham_Killed,id,"bacon_killed") RegisterHamFromEntity(Ham_Spawn,id,"bacon_spawn_post",1) RegisterHamFromEntity(Ham_AddPlayerItem,id,"bacon_addplayeritem") RegisterHamFromEntity(Ham_RemovePlayerItem,id,"bacon_removeplayeritem") bot_ham=true;if(is_user_alive(id))bacon_spawn_post(id) }
public bacon_killed(id, idattacker, shouldgib) fm_set_entity_visibility(g_weaponent[id], 0)
public bacon_addplayeritem(id, ent) { static weaponid; weaponid = cs_get_weapon_type(ent) if(is_weapon_primary(weaponid) && pev_valid(g_weaponent[id])) { fm_set_entity_visibility(g_weaponent[id], 0) set_pev(g_weaponent[id], pev_body, get_weapon_model(weaponid)) } }
public bacon_removeplayeritem(id, ent) { if(is_weapon_primary(cs_get_weapon_type(ent)) && pev_valid(g_weaponent[id])) fm_set_entity_visibility(g_weaponent[id], 0) }
public bacon_spawn_post(id) if(is_user_alive(id)) { if(!cs_get_user_hasprim(id)) fm_set_entity_visibility(g_weaponent[id], 0) }
public bacon_item_attachtoplayer_post(ent, id) if(is_user_alive(id) && !cs_get_user_autoswitch(id)) { if(is_weapon_primary(cs_get_weapon_type(ent)) && pev_valid(g_weaponent[id])) fm_set_entity_visibility(g_weaponent[id], 1) }
public bacon_item_deploy_post(ent) { static id; id = pev(ent, pev_owner) if(is_user_alive(id)) { static weapon; weapon = cs_get_weapon_type(ent) if(is_weapon_primary(weapon) || cs_get_user_shield(id)) fm_set_entity_visibility(g_weaponent[id], 0)
else if(cs_get_user_hasprim(id)) fm_set_entity_visibility(g_weaponent[id], 1) } }
stock get_weapon_model(weapon) { switch(weapon) { case CSW_SCOUT: return MODEL_SCOUT case CSW_XM1014: return MODEL_XM1014 case CSW_AUG: return MODEL_AUG case CSW_UMP45: return MODEL_UMP45 case CSW_SG550: return MODEL_SG550 case CSW_GALIL: return MODEL_GALIL case CSW_FAMAS: return MODEL_FAMAS case CSW_AWP: return MODEL_AWP case CSW_MP5NAVY: return MODEL_MP5NAVY case CSW_M249: return MODEL_M249 case CSW_M4A1: return MODEL_M4A1 case CSW_G3SG1: return MODEL_G3SG1 case CSW_SG552: return MODEL_SG552 case CSW_AK47: return MODEL_AK47 case CSW_P90: return MODEL_P90 case CSW_MAC10: return MODEL_MAC10 case CSW_TMP: return MODEL_TMP } return 0 }
stock fm_set_entity_visibility(index, visible = 1) set_pev(index, pev_effects, visible == 1 ? pev(index, pev_effects) & ~EF_NODRAW : pev(index, pev_effects) | EF_NODRAW)

• МультиМод CS •
|