Dla przypomnienia wszystko jest oparte na bibliotece fakmeta. W util istnieje również kilkadziesiąt niepotrzebnych macro które wykorzystują engine/core dlatego są wykomentowane (to dla ciekawskich).
Usuwa wszystkie byty o określonej nazwie
stock fm_remove_entity_name(const classname[]) {
new ent = -1, num = 0;
while ((ent = fm_find_ent_by_class(ent, classname)))
num += fm_remove_entity(ent);
return num;
}
Uyżycie:
fm_remove_entity_name("info_player_start");
Ustawia renderowanie dla danego bytu
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
new Float:RenderColor[3];
RenderColor[0] = float®;
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));
return 1;
}
Użycie:
fm_set_rendering(jakis_ent, kRenderFXNone, RED, GREEN, BLUE, kRenderNormal, STOPIEN(0-255));
+opcje renderowania:
kRenderNormal = 0, /* src */
kRenderTransColor, /* c*a+dest*(1-a) */
kRenderTransTexture, /* src*a+dest*(1-a) */
kRenderGlow, /* src*a+dest -- No Z buffer checks */
kRenderTransAlpha, /* src*srca+dest*(1-srca) */
kRenderTransAdd, /* src*a+dest */
+efekty renderowania:
kRenderFxNone = 0,
kRenderFxPulseSlow,
kRenderFxPulseFast,
kRenderFxPulseSlowWide,
kRenderFxPulseFastWide,
kRenderFxFadeSlow,
kRenderFxFadeFast,
kRenderFxSolidSlow,
kRenderFxSolidFast,
kRenderFxStrobeSlow,
kRenderFxStrobeFast,
kRenderFxStrobeFaster,
kRenderFxFlickerSlow,
kRenderFxFlickerFast,
kRenderFxNoDissipation,
kRenderFxDistort, /* Distort/scale/translate flicker */
kRenderFxHologram, /* kRenderFxDistort + distance fade */
kRenderFxDeadPlayer, /* kRenderAmt is the player index */
kRenderFxExplode, /* Scale up really big! */
kRenderFxGlowShell, /* Glowing Shell */
kRenderFxClampMinScale, /* Keep this sprite from getting very small (SPRITES only!) */
// amxmodx.org //
Ustawia czy byt ma być widzialny
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);
return 1;
}
Użycie:
fm_set_entity_visibility(id, 0); // byt będzie niewidzialny
Ustawia bytowi prędkość
stock fm_set_user_velocity(entity, const Float:vector[3]) {
set_pev(entity, pev_velocity, vector);
return 1;
}
Użycie:
fm_set_user_velocity(ent, vector[3]); // polecam najpierw go pobrać, a potem zmieniać ;)
#define fm_get_user_velocity(%1,%2) pev(%1, pev_velocity, %2)
stock fm_get_user_velocity(entity, Float:vector[3])
return pev(entity, pev_velocity, vector)
Można go pobrać bez tego funkcją z core get_user_velocity albo samym pev tym co wyżej, bo to co dałem jest tylko maco z użyciem fakemeta do fakemeta ?
Sprawdza czy byt ma tryb god
stock fm_get_user_godmode(index) {
new Float:val;
pev(index, pev_takedamage, val);
return (val == DAMAGE_NO);
}
Użycie:
fm_get_user_godmode(id);
Ustawia bytowi godmode
stock fm_set_user_godmode(index, godmode = 0) {
set_pev(index, pev_takedamage, godmode == 1 ? DAMAGE_NO : DAMAGE_AIM);
return 1;
}
Użycie:
fm_set_user_godmode(id, 1); // 0 = off
Ustawia graczowi ilość kamizelki kuloodpornej
stock fm_set_user_armor(index, armor) {
set_pev(index, pev_armorvalue, float(armor));
return 1;
}
Użycie:
fm_set_user_armor(id, 200); // podejrzewam ze maksymalna ilość WYŚWIETLANA w hud to 999, natomiast wszystko jest tak jak z życiem
Ustawia graczowi ilość życia
stock fm_set_user_health(index, health) {
health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);
return 1;
}
Użycie:
fm_set_user_health(id, 150); // 0 wywoła smierć, do 255 będzie wyświetlane w hud, powyżej będzie ale nie wyświetlane przez hud gracza
Ustawia origin gracza
stock fm_set_user_origin(index, origin[3]) {
new Float:orig[3];
IVecFVec(origin, orig);
return fm_entity_set_origin(index, orig);
}
Użycie:
fm_set_user_origin(id, jakis_origin[3]);
Ustawia graczowi tryb i efekt renderowania( patrzcie wyżej po opcje i uzycie ) //funkcja trochę bezsensowna
stock fm_set_user_rendering(index, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16) {
return fm_set_rendering(index, fx, r, g, b, render, amount);
}
Daje graczowi przedmiot (np. HE)
stock fm_give_item(index, const item[]) {
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0;
new ent = fm_create_entity(item);
if (!pev_valid(ent))
return 0;
new Float:origin[3];
pev(index, pev_origin, origin);
set_pev(ent, pev_origin, origin);
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN);
dllfunc(DLLFunc_Spawn, ent);
new save = pev(ent, pev_solid);
dllfunc(DLLFunc_Touch, ent, index);
if (pev(ent, pev_solid) != save)
return ent;
engfunc(EngFunc_RemoveEntity, ent);
return -1;
}
Użycie:
fm_give_item(id, "weapon_smokegrenade");
Ustawia graczowi szybkość biegu
stock fm_set_user_maxspeed(index, Float:speed = -1.0) {
engfunc(EngFunc_SetClientMaxspeed, index, speed);
set_pev(index, pev_maxspeed, speed);
return 1;
}
Użycie:
fm_set_user_maxspeed(id, 350.0); // ustawi to graczowi szybkość 350
Zwraca szybkość gracza
stock Float:fm_get_user_maxspeed(index) {
new Float:speed;
pev(index, pev_maxspeed, speed);
return speed;
}
Użycie:
fm_get_user_maxspeed(id);
//if(speed == 200.0) coś tam
Ustawia graczowi grawitację
stock fm_set_user_gravity(index, Float:gravity = 1.0) {
set_pev(index, pev_gravity, gravity);
return 1;
}
Użycie:
fm_set_user_gravity(id, 400.0);
Pobiera grawitację gracza
stock Float:fm_get_user_gravity(index) {
new Float:gravity;
pev(index, pev_gravity, gravity);
return gravity;
}
Użycie:
fm_get_user_gravity(id);
//if(gravity == 400.0) coś tam
Ustawia graczowi tryb noclip
stock fm_set_user_noclip(index, noclip = 0) {
set_pev(index, pev_movetype, noclip == 1 ? MOVETYPE_NOCLIP : MOVETYPE_WALK);
return 1;
}
Użycie:
fm_set_user_noclip(id , 1); // 0 = reset
Ustawia graczowi fragi
stock fm_set_user_frags(index, frags) {
set_pev(index, pev_frags, float(frags));
return 1;
}
Użycie:
fm_set_user_frags(id, 5);
Spawnuje gracza
stock fm_cs_user_spawn(index) {
set_pev(index, pev_deadflag, DEAD_RESPAWNABLE);
dllfunc(DLLFunc_Spawn, index);
set_pev(index, pev_iuser1, 0);
return 1;
}
Użycie:
fm_cs_user_spawn(id);
Ustawia właściwości bytu
stock fm_set_kvd(entity, const key[], const value[], const classname[] = "") {
if (classname[0])
set_kvd(0, KV_ClassName, classname);
else {
new class[32];
pev(entity, pev_classname, class, sizeof class - 1);
set_kvd(0, KV_ClassName, class);
}
set_kvd(0, KV_KeyName, key);
set_kvd(0, KV_Value, value);
set_kvd(0, KV_fHandled, 0);
return dllfunc(DLLFunc_KeyValue, entity, 0);
}
Użycie:
fm_set_kvd(ent, "dmg", "255", "jakis_byt");
Zabija( haha ) byt !! Nie zabijać tym bytów broni bo może wystąpic crash !!
stock fm_kill_entity(index) {
set_pev(index, pev_flags, pev(index, pev_flags) | FL_KILLME);
return 1;
}
Użycie:
fm_kill_entity(Ent_id);
Zwraca fałsz kiedy byt nie jest widoczny
stock bool:fm_is_ent_visible(index, entity, ignoremonsters = 0) {
new Float:start[3], Float:dest[3];
pev(index, pev_origin, start);
pev(index, pev_view_ofs, dest);
xs_vec_add(start, dest, start);
pev(entity, pev_origin, dest);
engfunc(EngFunc_TraceLine, start, dest, ignoremonsters, index, 0);
new Float:fraction;
get_tr2(0, TR_flFraction, fraction);
if (fraction == 1.0 || get_tr2(0, TR_pHit) == entity)
return true;
return false;
}
Uzycie:
fm_is_ent_visible(id, ent, 1);
// if(fm_is_ent_visible(id, ent, 1) == true)
// coś tam
Zwraca prawdę jeśli gracz posiada longjump
stock bool:fm_get_user_longjump(index) {
new value[2];
engfunc(EngFunc_GetPhysicsKeyValue, index, "slj", value, 1);
switch (value[0]) {
case '1': return true;
}
return false;
}
Użycie:
fm_get_user_longjump(id);
Sprawdza czy byt jest równy nazwie (true or false)
stock bool:fm_is_ent_classname(index, const classname[]) {
if (!pev_valid(index))
return false;
new class[32];
pev(index, pev_classname, class, sizeof class - 1);
if (equal(class, classname))
return true;
return false;
}
Użycie:
fm_is_ent_classname(id, "jakas_nazwa");
Zabija gracza, zawiera naprawienie bugu z tablica wyników
[sma]stock fm_user_kill(index, flag = 0) {
if (flag) {
new Float:frags;
pev(index, pev_frags, frags);
set_pev(index, pev_frags, ++frags);
}
dllfunc(DLLFunc_ClientKill, index);
return 1;
}
Użycie:
[sma]fm_user_kill(id, 1);
Może się komuś przyda Aha , no i zamiast implementować całego fakemeta_util można dodawać do swoich pluginów wybrane stocki, ale należy pamietać żeby dołączyć <fakemeta>.