RSSy MYGO.pl Opublikowano Luty 23, 2023 o 03:52 RSSy Udostępnij Opublikowano Luty 23, 2023 o 03:52 This plugin damages and knockback my own self which is not what I want. I want this plugin to only damage enemy team and knocking them back without any effect on yourself PHP Code: /* Plugin generated by AMXX-Studio */#include <amxmodx>#include <engine>#include <fakemeta>#include <hamsandwich>#define VERSION "0.1"const PEV_NADE_TYPE = pev_flTimeStepSoundconst NADE_TYPE_SMOKE = 4444/// Sound Greande M24.new const g_soundexpl[] = "weapons/m24_exp1.wav"////new cvar_removedropped, cvar_smokegrenades, g_msgScreenShake, g_msgScreenFadenew g_trailSprnew const Float:RADIUS = 240.0#define JUMP_EXP 500.0#define JUMP_DAMAGE 20#define PA_LOW 0.0#define PA_HIGH 0.0new g_index_gibs, spriteexplpublic plugin_precache(){ g_index_gibs = precache_model("models/rockgibs.mdl") g_trailSpr = precache_model("sprites/laserbeam.spr") spriteexpl = precache_model("sprites/fexplo1.spr") engfunc(EngFunc_PrecacheSound, g_soundexpl)}public plugin_init(){ register_plugin("[M24] Grenade", VERSION, "Driss") register_forward(FM_SetModel, "fw_SetModel") RegisterHam(Ham_Think, "grenade", "fw_ThinkGrenade") /// Cvar cvar_removedropped = register_cvar("m24_remove_dropped", "0") cvar_smokegrenades = register_cvar("m24_smoke_grenades", "1") // Cvar On/off :) g_msgScreenFade = get_user_msgid("ScreenFade") g_msgScreenShake = get_user_msgid("ScreenShake")}public fw_SetModel(entity, const model[]){ // We don't care if (strlen(model) < 8) return; // Remove weapons? if (get_pcvar_float(cvar_removedropped) > 0.0) { // Get entity's classname static classname[10] pev(entity, pev_classname, classname, charsmax(classname)) // Check if it's a weapon box if (equal(classname, "weaponbox")) { // They get automatically removed when thinking set_pev(entity, pev_nextthink, get_gametime() + get_pcvar_float(cvar_removedropped)) return; } } // Narrow down our matches a bit if (model[7] != 'w' || model[8] != '_') return; // Get damage time of grenade static Float:dmgtime pev(entity, pev_dmgtime, dmgtime) // Grenade not yet thrown if (dmgtime == 0.0) return; else if (model[9] == 's' && model[10] == 'm' && get_pcvar_num(cvar_smokegrenades)) // Flare { fm_set_rendering(entity, kRenderFxGlowShell, 0, 70, 10, kRenderNormal, 16); // And a colored trail message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(TE_BEAMFOLLOW) // TE id write_short(entity) // entity write_short(g_trailSpr) // sprite write_byte(10) // life write_byte(10) // width write_byte(0) // r write_byte(0) // g write_byte(0) // b write_byte(200) // brightness message_end() // Set grenade type on the thrown grenade entity set_pev(entity, PEV_NADE_TYPE, NADE_TYPE_SMOKE) }}// Ham Grenade Think Forwardpublic fw_ThinkGrenade(entity, ptd){ // Invalid entity if (!pev_valid(entity)) return HAM_IGNORED; // Get damage time of grenade static Float:dmgtime, Float:current_time pev(entity, pev_dmgtime, dmgtime) current_time = get_gametime() // Check if it's time to go off if (dmgtime > current_time) return HAM_IGNORED; // Check if it's one of our custom nades switch (pev(entity, PEV_NADE_TYPE)) { case NADE_TYPE_SMOKE: // M24 { bomb_Explode(entity) return HAM_SUPERCEDE; } } return HAM_IGNORED;}public bomb_Explode(Entity){ if(Entity < 0) return static Float:Origin[3] pev(Entity, pev_origin, Origin) heart_explode(Entity) make_metal_gibs(Entity) for(new victim = 1; victim <= get_maxplayers(); victim++) { if (!is_user_alive(victim)) continue new Float:VictimOrigin[3] pev(victim, pev_origin, VictimOrigin) new Float:Distance = get_distance_f(Origin, VictimOrigin) if(Distance <= RADIUS) { static Float:NewSpeed NewSpeed = JUMP_EXP * (1.0 - (Distance / RADIUS)) static Float:Velocity[3] get_speed_vector(Origin, VictimOrigin, NewSpeed, Velocity) set_pev(victim, pev_velocity, Velocity) new Float:fVec[3]; fVec[0] = random_float(PA_LOW , PA_HIGH); fVec[1] = random_float(PA_LOW , PA_HIGH); fVec[2] = random_float(PA_LOW , PA_HIGH); entity_set_vector(victim, EV_VEC_punchangle , fVec); message_begin(MSG_ONE , g_msgScreenShake , {0,0,0} ,victim) write_short( 1<<14 ); write_short( 1<<14 ); write_short( 1<<14 ); message_end(); message_begin(MSG_ONE_UNRELIABLE , g_msgScreenFade , {0,0,0} , victim); write_short( 1<<10 ); write_short( 1<<10 ); write_short( 1<<12 ); write_byte( 225 ); write_byte( 0 ); write_byte( 0 ); write_byte( 125 ); message_end(); set_user_takedamage(victim, JUMP_DAMAGE) } } engfunc(EngFunc_RemoveEntity, Entity)} public heart_explode(ent){ static Float:flOrigin [ 3 ] pev ( ent, pev_origin, flOrigin ) engfunc(EngFunc_EmitSound, ent, CHAN_WEAPON,g_soundexpl, 1.0, ATTN_NORM, 0, PITCH_NORM) engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, flOrigin, 0) write_byte(TE_SPRITE) engfunc(EngFunc_WriteCoord, flOrigin[0]+random_float(-5.0, 5.0)) engfunc(EngFunc_WriteCoord, flOrigin[1]+random_float(-5.0, 5.0)) engfunc(EngFunc_WriteCoord, flOrigin[2]+50.0) write_short(spriteexpl) write_byte(30) write_byte(200) message_end() }public make_metal_gibs(ent){ static Float:flOrigin[3] pev(ent, pev_origin, flOrigin) message_begin(MSG_BROADCAST,SVC_TEMPENTITY) write_byte(TE_BREAKMODEL) engfunc(EngFunc_WriteCoord, flOrigin[0]) engfunc(EngFunc_WriteCoord, flOrigin[1]) engfunc(EngFunc_WriteCoord, flOrigin[2]) engfunc(EngFunc_WriteCoord, 150) engfunc(EngFunc_WriteCoord, 150) engfunc(EngFunc_WriteCoord, 150) engfunc(EngFunc_WriteCoord, random_num(-50,50)) engfunc(EngFunc_WriteCoord, random_num(-50,50)) engfunc(EngFunc_WriteCoord, random_num(-50,50)) write_byte(30) write_short(g_index_gibs) write_byte(random_num(20, 30)) write_byte(20) write_byte(0x04) //0x02 - metal message_end()}stock get_speed_vector(const Float:origin1[3],const Float:origin2[3],Float:speed, Float:new_velocity[3]){ new_velocity[0] = origin2[0] - origin1[0] new_velocity[1] = origin2[1] - origin1[1] new_velocity[2] = origin2[2] - origin1[2] new Float:num = floatsqroot(speed*speed / (new_velocity[0]*new_velocity[0] + new_velocity[1]*new_velocity[1] + new_velocity[2]*new_velocity[2])) new_velocity[0] *= num new_velocity[1] *= num new_velocity[2] *= num return 1} stock set_user_takedamage(index, damage){ if(!is_user_alive(index)) return new vec[3] FVecIVec(get_target_origin_f(index), vec) message_begin(MSG_ONE, get_user_msgid("Damage"), _, index) write_byte(0) write_byte(damage) write_long(DMG_CRUSH) write_coord(vec[0]) write_coord(vec[1]) write_coord(vec[2]) message_end() if(pev(index, pev_health) - 20.0 <= 0) ExecuteHamB(Ham_Killed, index, index, 1) else ExecuteHamB(Ham_TakeDamage, index, 0, index, float(damage), DMG_BLAST)}stock Float:get_target_origin_f(index){ new Float:orig[3] pev(index, pev_origin, orig) if(index > get_maxplayers()) { new Float:mins[3], Float:maxs[3] pev(index, pev_mins, mins) pev(index, pev_maxs, maxs) if(!mins[2]) orig[2] += maxs[2] / 2 } return orig}// Set entity's rendering type (from fakemeta_util)stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16){ static Float:color[3] color[0] = float(r) color[1] = float(g) color[2] = float(b) set_pev(entity, pev_renderfx, fx) set_pev(entity, pev_rendercolor, color) set_pev(entity, pev_rendermode, render) set_pev(entity, pev_renderamt, float(amount))}/// Thanks (ArabicMan) Przeczytaj cały wpis Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi