kan izleri plugini
Gönderilme zamanı: Çrş Ağu 01, 2018 9:30 am
Merhabalar, eski deathmatch modlarında adamın canı az ise kanlı ayak izleri bırakıyodu ve adamı vurdugun zaman kemiğe dönüşüyodu o plugini arıyorum yardımcı olurmusunuz ?
Kod: Tümünü seç
/*************************************************************************************************************
AMX Follow the Wounded
Version: 0.1
Author: KRoT@L
0.1 Release
When the health of a player goes below ftw_health, the footsteps of this player will be
covered with blood. Thus you can follow him.
Cvars:
ftw_active "1" - 0: Disables the plugin
1: Enables the plugin
ftw_health "20" - the footsteps are covered with blood only if health goes below this value
Setup (AMX 0.9.9):
Install the amx file.
Enable VexdUM (both in metamod/plugins.ini and amx/config/modules.ini)
*************************************************************************************************************/
#include <amxmodx>
#include <amxmisc>
#include <engine>
//If one line doesn't work, comment it and uncomment the other line
//new decals[2] = {105,106}
new decals[2] = {107,108}
new bool:g_isDying[33]
new g_decalSwitch[33]
public plugin_init()
{
register_plugin("Follow the Wounded", "0.1", "KRoTaL")
register_cvar("ftw_active", "1")
register_cvar("ftw_health", "20")
register_event("ResetHUD","resethud_event","be")
register_event("Damage","damage_event","b")
register_event("DeathMsg","death_event","a")
}
public client_connect(id)
{
g_isDying[id] = false
remove_task(4247545+id)
}
public resethud_event(id)
{
if(g_isDying[id])
{
g_isDying[id] = false
remove_task(4247545+id)
}
}
public damage_event(id)
{
if(get_cvar_num("ftw_active") == 0) return PLUGIN_CONTINUE
if(!g_isDying[id] && is_user_alive(id) && get_user_health(id) <= get_cvar_num("ftw_health"))
{
g_isDying[id] = true
g_decalSwitch[id] = 0
new param[1]
param[0] = id
set_task(0.2, "make_footsteps", 4247545+id, param, 1, "b")
}
return PLUGIN_CONTINUE
}
public death_event()
{
new id = read_data(2)
if(g_isDying[id])
{
g_isDying[id] = false
remove_task(4247545+id)
}
}
public make_footsteps(param[])
{
new id = param[0]
if(!is_user_alive(id) || get_cvar_num("ftw_active") == 0 || get_speed(id) < 120) return
new origin[3]
get_user_origin(id, origin)
if(entity_get_int(id, EV_INT_bInDuck) == 1)
origin[2] -= 18
else
origin[2] -= 36
new Float:velocity[3]
new Float:ent_angles[3]
new Float:ent_origin[3]
new ent
entity_get_vector(id, EV_VEC_v_angle, ent_angles)
entity_get_vector(id, EV_VEC_origin, ent_origin)
ent = create_entity("info_target")
if(ent > 0)
{
ent_angles[0] = 0.0
if(g_decalSwitch[id] == 0) ent_angles[1] -= 90
else ent_angles[1] += 90
entity_set_vector(ent, EV_VEC_origin, ent_origin)
entity_set_vector(ent, EV_VEC_v_angle, ent_angles)
VelocityByAim(ent, 12, velocity)
remove_entity(ent)
}
message_begin(MSG_BROADCAST, SVC_TEMPENTITY, origin)
write_byte(116)
write_coord(origin[0] + floatround(velocity[0]))
write_coord(origin[1] + floatround(velocity[1]))
write_coord(origin[2])
write_byte(decals[g_decalSwitch[id]])
message_end()
g_decalSwitch[id] = 1 - g_decalSwitch[id]
return
}
Kod: Tümünü seç
/* Plugin created by UnlimitedHD ! */
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#define PLUGIN "DeathBones"
#define VERSION "1.1.0"
#define AUTHOR "mogel"
#define BONE_ALPHA_TASK_BASIS 1000
new pcv_deathmatch // Deathmatch-Support
new pcv_bonestime // anzeigen der Bones
#define ALPHA EV_INT_iuser4
#define PLAYER EV_INT_iuser3
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(get_user_msgid("DeathMsg"), "Event_Death")
register_event("HLTV", "Event_FreezeTime", "a", "1=0", "2=0")
register_cvar("DeathBones", VERSION, FCVAR_SERVER | FCVAR_SPONLY | FCVAR_UNLOGGED)
pcv_deathmatch = register_cvar("db_deathmatch", "0") // per default kein DM-Support
pcv_bonestime = register_cvar("db_bonestime", "30.0") // 30 Secons
}
public plugin_precache() {
precache_model("models/skeleton.mdl")
}
public Event_FreezeTime() {
new players[32], count
get_players(players, count, "h")
for(new i = 0; i < count; i++)
{
new player = players[i]
// Render zurück setzen
set_pev(player, pev_renderfx, kRenderFxNone)
set_pev(player, pev_rendercolor, 255,255,255)
set_pev(player, pev_rendermode, kRenderNormal)
set_pev(player, pev_renderamt, 0.0)
}
remove_entity_name("deathbones")
}
public Event_Death() {
new player = get_msg_arg_int(2)
new Float:bones[3]
new Float:angle[3]
entity_get_vector(player, EV_VEC_origin, bones)
entity_get_vector(player, EV_VEC_angles, angle)
bones[2] -= 32.0 // gleich nach unten setzen
// Bones erstellen
new entity = create_entity("info_target")
entity_set_string(entity, EV_SZ_classname, "deathbones")
entity_set_model(entity, "models/skeleton.mdl")
entity_set_origin(entity, bones)
entity_set_vector(entity, EV_VEC_angles, angle)
entity_set_int(entity, EV_INT_movetype, MOVETYPE_TOSS)
entity_set_int(entity, EV_INT_solid, SOLID_NOT)
// Bones erstmal unsichtbar
set_pev(entity, pev_renderfx, kRenderFxNone)
set_pev(entity, pev_rendercolor, 255,255,255)
set_pev(entity, pev_rendermode, kRenderTransAlpha)
set_pev(entity, pev_renderamt, 0.0)
// Spieler durch Bones wechseln
entity_set_int(entity, PLAYER, player) // den Bones dem Spieler zuweisen
entity_set_int(entity, ALPHA, 0) // aktuelles Alpha für die Bones
set_task(1.0, "BonesAlphaIn", entity)
}
public BonesAlphaIn(bones) {
if (!is_valid_ent(bones)) return
new alpha = entity_get_int(bones, ALPHA) + 1
new player = entity_get_int(bones, PLAYER)
// Spieler ausblenden, aber nur wenn kein DM-Modus
if ((is_valid_ent(player)) && !get_pcvar_num(pcv_deathmatch))
{
set_pev(player, pev_renderfx, kRenderFxNone)
set_pev(player, pev_rendercolor, 255,255,255)
set_pev(player, pev_rendermode, kRenderTransAlpha)
set_pev(player, pev_renderamt, float(256 - alpha * 16))
}
if (is_valid_ent(bones))
{
set_pev(bones, pev_renderfx, kRenderFxNone)
set_pev(bones, pev_rendercolor, 255,255,255)
set_pev(bones, pev_rendermode, kRenderTransAlpha)
set_pev(bones, pev_renderamt, float(alpha * 16 - 1))
}
// neuen Alpha-Wert merken
entity_set_int(bones, ALPHA, alpha)
// jetzt entscheiden .. .weiter Alpha oder liegen lassen
if (alpha >= 16)
{
// wenn kein DM dann Spieler jetzt nach unten setzen
if (!get_pcvar_num(pcv_deathmatch))
{
// Bones werden am Rundenanfng automatisch gelöscht
PlayerMove(player)
} else
{
// im DM-Modus nach X Sekunden wieder ausblenden
set_task(get_pcvar_float(pcv_bonestime), "BonesAlphaOut", bones)
}
} else
{
set_task(0.1, "BonesAlphaIn", bones)
}
}
public BonesAlphaOut(bones) {
if (!is_valid_ent(bones)) return
new alpha = entity_get_int(bones, ALPHA) - 1
if (is_valid_ent(bones))
{
set_pev(bones, pev_renderfx, kRenderFxNone)
set_pev(bones, pev_rendercolor, 255,255,255)
set_pev(bones, pev_rendermode, kRenderTransAlpha)
set_pev(bones, pev_renderamt, float(alpha * 16 - 1))
}
// neuen Alpha-Wert merken
entity_set_int(bones, ALPHA, alpha)
// jetzt entscheiden .. .weiter Alpha oder killen
if (alpha)
{
set_task(0.1, "BonesAlphaOut", bones)
} else
{
remove_entity(bones)
}
}
public PlayerMove(player) {
new Float:pos[3]
entity_get_vector(player, EV_VEC_origin, pos)
pos[2] -= 2000.0
entity_set_vector(player, EV_VEC_origin, pos)
}