~TraNda~
05-11-2015, 07:29 PM
Descriere: Cu acest plugin puteti plasa pe harta mai multe cadouri de craciun (ca pe serverul de cs.wargods.ro)
* Cadouri mici
o Mosul iti da 500$
o Mosul iti fura 500$
o Mosul iti da 16000$
o Mosul te lasa fara bani
o Mosul iti da un AWP
* Cadouri mari
o Mosul iti ofera 50 HP
o Mosul iti scade gravitatia
o Mosul iti mareste viteza
o Mosul iti scade viteza
Plugin: XMAS GIFTS
Versiune: 2.2
Autor: KronoS
Download link:
/*
======================================
========== XMAS GIFTS 2.2 ============
======================================
Autor: KronoS
Versiune: 2.2
Site: <b>You have to register to ba able to see this link</b>
Credite:
FakeNick - pentru pluginul Pick up present de unde a pornit tot
AlinHD - pentru pluginul de cadouri facut de el dar care nu l-a publicat
joropito - pentru Super Spawns
si alte persoane pentru informatii despre entitati
C-var-uri:
presents_respawn_time 60.0 (Dupa cat timp dupa ridicarea unui cadou apare altul pe harta)
presents_on_map 11 (Cate cadouri sa apara pe harta)
ATENTIE: Se calculeaza numarul c-var-ului - 1!!!
Daca puneti 11 or sa apara doar 10 cadouri!
Changelog:
_______________________________
V 2.0
-super spawns
-cvar: presents_on_map
_______________________________
V 2.1
-bug reparat: cadourile apareau in aer
-variabila globala
-FUN -> Fakemeta
-Hamsandwich
-optimizare mesaje HUD
_______________________________
V 2.2
-bug reparat: cadourile dispareau de pe harta
-FM_Think indepartat
_______________________________
*/
#include <amxmodx>
#include <amxmisc>
/* Module necesare */
#include <fakemeta>
#include <hamsandwich>
#include <engine>
/* INC-uri */
#include <cellarray>
#include <xs>
/* Model la cadouri */
new const model_present[][] = { "models/present/w_present.mdl","models/present/w_present2.mdl" }
/* Extras din Fakemeta Util */
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
/* Extras din Super Spawns */
#define SS_VERSION "1.0"
#define SS_MIN_DISTANCE 500.0
#define SS_MAX_LOOPS 100000
new Array:g_vecSsOrigins
new Array:g_vecSsSpawns
new Array:g_vecSsUsed
new Float:g_flSsMinDist
new g_iSsTime
new const g_szStarts[][] = { "info_player_start", "info_player_deathmatch" }
new const Float:g_flOffsets[] = { 3500.0, 3500.0, 1500.0 }
/* Offset-uri */
#if cellbits == 32
const OFFSET_CSMONEY = 115
#else
const OFFSET_CSMONEY = 140
#endif
const OFFSET_LINUX = 5
new pcvar_respawn_time, pcvar_presents_on_map
new g_money
new g_bonus[33]
public plugin_init()
{
register_plugin("XMAS GIFTS", "2.2", "KronoS")
/*====================================
==============Eventuri==============*/
register_event("HLTV", "spawn_gifts", "a", "1=0", "2=0")
RegisterHam(Ham_Spawn, "player", "round_start", 1)
RegisterHam(Ham_Killed, "player", "client_death", 1)
RegisterHam(Ham_Item_PreFrame, "player", "FwdPreFramePost", 1)
register_forward(FM_Touch,"forward_touch")
/*====================================
==============Cvar-uri==============*/
pcvar_respawn_time = register_cvar("presents_respawn_time","60.0")
pcvar_presents_on_map = register_cvar("presents_on_map", "11")
SsInit(800.0)
SsScan()
g_money = get_user_msgid("Money")
}
public plugin_precache()
{
new i
for(i = 0; i < sizeof model_present; i++)
engfunc(EngFunc_PrecacheModel,model_present[i])
}
public spawn_gifts()
{
func_spawn()
}
public round_start(id)
{
if(g_bonus[id] > 0)
{
switch(g_bonus[id])
{
case 1:
{
fm_set_user_health(id, get_user_health(id) + 50)
}
case 2:
{
fm_set_user_gravity(id, 0.4)
}
}
}
}
public func_spawn()
{
new Float:origin[3]
new i
for(i=0; i< get_pcvar_num(pcvar_presents_on_map); i++)
{
if(SsGetOrigin(origin))
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(pev_valid(ent))
{
engfunc(EngFunc_SetModel,ent,model_present[random_num(0,sizeof model_present - 1)])
engfunc(EngFunc_SetOrigin, ent, origin)
static Float:fMaxs[3] = { 2.0, 2.0, 4.0 }
static Float:fMins[3] = { -2.0, -2.0, -4.0 }
set_pev(ent,pev_solid,SOLID_BBOX)
engfunc(EngFunc_SetSize,ent,fMins,fMaxs)
engfunc(EngFunc_DropToFloor, ent)
switch(random_num(0,1))
{
case 0:
{
set_pev(ent,pev_classname,"small_present")
}
case 1:
{
set_pev(ent,pev_classname,"large_present")
}
}
}
}
}
}
public client_death(id)
{
if(g_bonus[id] > 0)
{
g_bonus[id] = 0
}
}
public FwdPreFramePost(iClient)
{
if(is_user_connected(iClient))
{
if(g_bonus[iClient] == 3)
{
fm_set_user_maxspeed(iClient, 350.0)
}
if(g_bonus[iClient] == 4)
{
fm_set_user_maxspeed(iClient, 200.0)
}
}
}
public forward_touch(ent,id)
{
if(!pev_valid(ent))
return FMRES_IGNORED
static class[20]
pev(ent,pev_classname,class,sizeof class - 1)
if((!equali(class,"small_present") && !equali(class,"large_present")))
return FMRES_IGNORED
if((equali(class,"large_present") && (g_bonus[id] > 0)))
return FMRES_IGNORED
if(!is_user_alive(id))
return FMRES_IGNORED
set_pev(ent,pev_solid,SOLID_NOT)
set_pev(ent,pev_effects,EF_NODRAW)
set_task(get_pcvar_float(pcvar_respawn_time), "func_spawn", ent)
if(equali(class,"small_present"))
{
switch(random_num(0,4))
{
case 0:
{
fm_set_user_money(id, fm_get_user_money(id) + 500)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a oferit 500$")
}
case 1:
{
fm_set_user_money(id, 16000)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a oferit 16000$")
}
case 2:
{
fm_set_user_money(id, 0)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a furat toti banii")
}
case 3:
{
fm_set_user_money(id, fm_get_user_money(id) - 500)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a furat 500$")
}
case 4:
{
fm_give_item(id, "weapon_awp")
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a oferit un AWP")
}
}
}
if(equali(class,"large_present"))
{
switch(random_num(0,3))
{
case 0:
{
fm_set_user_health(id, get_user_health(id) + 50)
g_bonus[id] = 1
large_present_hud(id)
}
case 1:
{
fm_set_user_gravity(id, 0.4)
g_bonus[id] = 2
large_present_hud(id)
}
case 2:
{
fm_set_user_maxspeed(id, 350.0)
g_bonus[id] = 3
large_present_hud(id)
}
case 3:
{
fm_set_user_maxspeed(id, 200.0)
g_bonus[id] = 4
large_present_hud(id)
}
}
}
return FMRES_IGNORED
}
public large_present_hud(id)
{
if(is_user_alive(id))
{
if(g_bonus[id] > 0)
{
switch(g_bonus[id])
{
case 1:
{
set_hudmessage(0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Viata+")
}
case 2:
{
set_hudmessage(0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Gravitatie-")
}
case 3:
{
set_hudmessage(0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Viteza+")
}
case 4:
{
set_hudmessage(200, 0, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Viteza-")
}
}
set_task(12.0, "large_present_hud", id)
}
}
}
public client_disconnect(id)
{
g_bonus[id] = 0
}
/*====================================
========Inceput Fakemeta Util=======*/
stock fm_set_user_money(id,money,flash=1)
{
set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX )
message_begin(MSG_ONE,g_money,{0,0,0},id)
write_long(money)
write_byte(flash)
message_end()
}
stock fm_get_user_money(id)
{
return get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX)
}
stock fm_set_user_health(id, health)
{
(health > 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id)
return 1
}
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
}
stock fm_set_user_gravity(index, Float:gravity = 1.0) {
set_pev(index, pev_gravity, gravity)
return 1
}
stock fm_set_user_maxspeed(index, Float:speed = -1.0) {
engfunc(EngFunc_SetClientMaxspeed, index, speed);
set_pev(index, pev_maxspeed, speed);
return 1;
}
/*====================================
========Sfarsit Fakemeta Util=======*/
/*====================================
========Inceput Super Spawns========*/
public SsInit(Float:mindist)
{
new cmd[32]
format(cmd, 15, "_ss_dump%c%c%c%c", random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'))
register_cvar("sv_superspawns", SS_VERSION, (FCVAR_SERVER|FCVAR_SPONLY))
register_concmd(cmd, "SsDump")
g_flSsMinDist = mindist
g_vecSsOrigins = ArrayCreate(3, 1)
g_vecSsSpawns = ArrayCreate(3, 1)
g_vecSsUsed = ArrayCreate(3, 1)
}
stock SsClean()
{
g_flSsMinDist = 0.0
ArrayClear(g_vecSsOrigins)
ArrayClear(g_vecSsSpawns)
ArrayClear(g_vecSsUsed)
}
stock SsGetOrigin(Float:origin[3])
{
new Float:data[3], size
new ok = 1
while((size = ArraySize(g_vecSsOrigins)))
{
new idx = random_num(0, size - 1)
ArrayGetArray(g_vecSsOrigins, idx, origin)
new used = ArraySize(g_vecSsUsed)
for(new i = 0; i < used; i++)
{
ok = 0
ArrayGetArray(g_vecSsUsed, i, data)
if(get_distance_f(data, origin) >= g_flSsMinDist)
{
ok = 1
break
}
}
ArrayDeleteItem(g_vecSsOrigins, idx)
if(ok)
{
ArrayPushArray(g_vecSsUsed, origin)
return true
}
}
return false
}
public SsDump()
{
new Float:origin[3]
new count = ArraySize(g_vecSsOrigins)
server_print("-------------------------------------------------------")
for(new i = 0; i < count; i++)
{
ArrayGetArray(g_vecSsOrigins, i, origin)
server_print("Origin: %f %f %f", origin[0], origin[1], origin[2])
}
server_print("-------------------------------------------------------")
server_print("Number of origins: %i", count)
server_print("Time: %i", g_iSsTime)
server_print("-------------------------------------------------------")
}
public SsScan()
{
new start, Float:origin[3], starttime
starttime = get_systime()
for(start = 0; start < sizeof(g_szStarts); start++)
{
server_print("Searching for %s", g_szStarts[start])
new ent
if((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", g_szStarts[start])))
{
new counter
pev(ent, pev_origin, origin)
ArrayPushArray(g_vecSsSpawns, origin)
while(counter < SS_MAX_LOOPS)
{
counter = GetLocation(origin, counter)
}
}
}
g_iSsTime = get_systime()
g_iSsTime -= starttime
}
GetLocation(Float:start[3], &counter)
{
new Float:end[3]
for(new i = 0; i < 3; i++)
{
end[i] += random_float(0.0 - g_flOffsets[i], g_flOffsets[i])
}
if(IsValid(start, end))
{
start[0] = end[0]
start[1] = end[1]
start[2] = end[2]
ArrayPushArray(g_vecSsOrigins, end)
}
counter++
return counter
}
IsValid(Float:start[3], Float:end[3])
{
SetFloor(end)
end[2] += 36.0
new point = engfunc(EngFunc_PointContents, end)
if(point == CONTENTS_EMPTY)
{
if(CheckPoints(end) && CheckDistance(end) && CheckVisibility(start, end))
{
if(!trace_hull(end, HULL_LARGE, -1))
{
return true
}
}
}
return false
}
CheckVisibility(Float:start[3], Float:end[3])
{
new tr
engfunc(EngFunc_TraceLine, start, end, IGNORE_GLASS, -1, tr)
return (get_tr2(tr, TR_pHit) < 0)
}
SetFloor(Float:start[3])
{
new tr, Float:end[3]
end[0] = start[0]
end[1] = start[1]
end[2] = -99999.9
engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, -1, tr)
get_tr2(tr, TR_vecEndPos, start)
}
CheckPoints(Float:origin[3])
{
new Float:data[3], tr, point
data[0] = origin[0]
data[1] = origin[1]
data[2] = 99999.9
engfunc(EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr)
get_tr2(tr, TR_vecEndPos, data)
point = engfunc(EngFunc_PointContents, data)
if(point == CONTENTS_SKY && get_distance_f(origin, data) < 250.0)
{
return false
}
data[2] = -99999.9
engfunc(EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr)
get_tr2(tr, TR_vecEndPos, data)
point = engfunc(EngFunc_PointContents, data)
if(point < CONTENTS_SOLID)
return false
return true
}
CheckDistance(Float:origin[3])
{
new Float:dist, Float:data[3]
new count = ArraySize(g_vecSsSpawns)
for(new i = 0; i < count; i++)
{
ArrayGetArray(g_vecSsSpawns, i, data)
dist = get_distance_f(origin, data)
if(dist < SS_MIN_DISTANCE)
return false
}
count = ArraySize(g_vecSsOrigins)
for(new i = 0; i < count; i++)
{
ArrayGetArray(g_vecSsOrigins, i, data)
dist = get_distance_f(origin, data)
if(dist < SS_MIN_DISTANCE)
return false
}
return true
}
/*====================================
========Sfarsit Super Spawns========*/
Instalare:
1.Fisierul xmas_gifts.amxx il puneti in addons/amxmodx/plugins.
[Optional]: Fisierul xmas_gifts.sma il puneti in addons/amxmodx/scripting.
2.Intrati în addons/amxmodx/configs/plugins.ini si adaugati la urma: xmas_gifts.amxx .
3.Folderul "present" il puneti in cstrike/models.
Cvar-uri:
presents_respawn_time 60.0 (Dupa cat timp dupa ridicarea unui cadou apare altul pe harta)
presents_on_map 11 (Cate cadouri sa apara pe harta)
Modules:
- Fakemeta
- Fun
- Engine
* Cadouri mici
o Mosul iti da 500$
o Mosul iti fura 500$
o Mosul iti da 16000$
o Mosul te lasa fara bani
o Mosul iti da un AWP
* Cadouri mari
o Mosul iti ofera 50 HP
o Mosul iti scade gravitatia
o Mosul iti mareste viteza
o Mosul iti scade viteza
Plugin: XMAS GIFTS
Versiune: 2.2
Autor: KronoS
Download link:
/*
======================================
========== XMAS GIFTS 2.2 ============
======================================
Autor: KronoS
Versiune: 2.2
Site: <b>You have to register to ba able to see this link</b>
Credite:
FakeNick - pentru pluginul Pick up present de unde a pornit tot
AlinHD - pentru pluginul de cadouri facut de el dar care nu l-a publicat
joropito - pentru Super Spawns
si alte persoane pentru informatii despre entitati
C-var-uri:
presents_respawn_time 60.0 (Dupa cat timp dupa ridicarea unui cadou apare altul pe harta)
presents_on_map 11 (Cate cadouri sa apara pe harta)
ATENTIE: Se calculeaza numarul c-var-ului - 1!!!
Daca puneti 11 or sa apara doar 10 cadouri!
Changelog:
_______________________________
V 2.0
-super spawns
-cvar: presents_on_map
_______________________________
V 2.1
-bug reparat: cadourile apareau in aer
-variabila globala
-FUN -> Fakemeta
-Hamsandwich
-optimizare mesaje HUD
_______________________________
V 2.2
-bug reparat: cadourile dispareau de pe harta
-FM_Think indepartat
_______________________________
*/
#include <amxmodx>
#include <amxmisc>
/* Module necesare */
#include <fakemeta>
#include <hamsandwich>
#include <engine>
/* INC-uri */
#include <cellarray>
#include <xs>
/* Model la cadouri */
new const model_present[][] = { "models/present/w_present.mdl","models/present/w_present2.mdl" }
/* Extras din Fakemeta Util */
#define fm_find_ent_by_class(%1,%2) engfunc(EngFunc_FindEntityByString, %1, "classname", %2)
#define fm_create_entity(%1) engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, %1))
/* Extras din Super Spawns */
#define SS_VERSION "1.0"
#define SS_MIN_DISTANCE 500.0
#define SS_MAX_LOOPS 100000
new Array:g_vecSsOrigins
new Array:g_vecSsSpawns
new Array:g_vecSsUsed
new Float:g_flSsMinDist
new g_iSsTime
new const g_szStarts[][] = { "info_player_start", "info_player_deathmatch" }
new const Float:g_flOffsets[] = { 3500.0, 3500.0, 1500.0 }
/* Offset-uri */
#if cellbits == 32
const OFFSET_CSMONEY = 115
#else
const OFFSET_CSMONEY = 140
#endif
const OFFSET_LINUX = 5
new pcvar_respawn_time, pcvar_presents_on_map
new g_money
new g_bonus[33]
public plugin_init()
{
register_plugin("XMAS GIFTS", "2.2", "KronoS")
/*====================================
==============Eventuri==============*/
register_event("HLTV", "spawn_gifts", "a", "1=0", "2=0")
RegisterHam(Ham_Spawn, "player", "round_start", 1)
RegisterHam(Ham_Killed, "player", "client_death", 1)
RegisterHam(Ham_Item_PreFrame, "player", "FwdPreFramePost", 1)
register_forward(FM_Touch,"forward_touch")
/*====================================
==============Cvar-uri==============*/
pcvar_respawn_time = register_cvar("presents_respawn_time","60.0")
pcvar_presents_on_map = register_cvar("presents_on_map", "11")
SsInit(800.0)
SsScan()
g_money = get_user_msgid("Money")
}
public plugin_precache()
{
new i
for(i = 0; i < sizeof model_present; i++)
engfunc(EngFunc_PrecacheModel,model_present[i])
}
public spawn_gifts()
{
func_spawn()
}
public round_start(id)
{
if(g_bonus[id] > 0)
{
switch(g_bonus[id])
{
case 1:
{
fm_set_user_health(id, get_user_health(id) + 50)
}
case 2:
{
fm_set_user_gravity(id, 0.4)
}
}
}
}
public func_spawn()
{
new Float:origin[3]
new i
for(i=0; i< get_pcvar_num(pcvar_presents_on_map); i++)
{
if(SsGetOrigin(origin))
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"))
if(pev_valid(ent))
{
engfunc(EngFunc_SetModel,ent,model_present[random_num(0,sizeof model_present - 1)])
engfunc(EngFunc_SetOrigin, ent, origin)
static Float:fMaxs[3] = { 2.0, 2.0, 4.0 }
static Float:fMins[3] = { -2.0, -2.0, -4.0 }
set_pev(ent,pev_solid,SOLID_BBOX)
engfunc(EngFunc_SetSize,ent,fMins,fMaxs)
engfunc(EngFunc_DropToFloor, ent)
switch(random_num(0,1))
{
case 0:
{
set_pev(ent,pev_classname,"small_present")
}
case 1:
{
set_pev(ent,pev_classname,"large_present")
}
}
}
}
}
}
public client_death(id)
{
if(g_bonus[id] > 0)
{
g_bonus[id] = 0
}
}
public FwdPreFramePost(iClient)
{
if(is_user_connected(iClient))
{
if(g_bonus[iClient] == 3)
{
fm_set_user_maxspeed(iClient, 350.0)
}
if(g_bonus[iClient] == 4)
{
fm_set_user_maxspeed(iClient, 200.0)
}
}
}
public forward_touch(ent,id)
{
if(!pev_valid(ent))
return FMRES_IGNORED
static class[20]
pev(ent,pev_classname,class,sizeof class - 1)
if((!equali(class,"small_present") && !equali(class,"large_present")))
return FMRES_IGNORED
if((equali(class,"large_present") && (g_bonus[id] > 0)))
return FMRES_IGNORED
if(!is_user_alive(id))
return FMRES_IGNORED
set_pev(ent,pev_solid,SOLID_NOT)
set_pev(ent,pev_effects,EF_NODRAW)
set_task(get_pcvar_float(pcvar_respawn_time), "func_spawn", ent)
if(equali(class,"small_present"))
{
switch(random_num(0,4))
{
case 0:
{
fm_set_user_money(id, fm_get_user_money(id) + 500)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a oferit 500$")
}
case 1:
{
fm_set_user_money(id, 16000)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a oferit 16000$")
}
case 2:
{
fm_set_user_money(id, 0)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a furat toti banii")
}
case 3:
{
fm_set_user_money(id, fm_get_user_money(id) - 500)
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a furat 500$")
}
case 4:
{
fm_give_item(id, "weapon_awp")
set_hudmessage(255, 165, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Mosul ti-a oferit un AWP")
}
}
}
if(equali(class,"large_present"))
{
switch(random_num(0,3))
{
case 0:
{
fm_set_user_health(id, get_user_health(id) + 50)
g_bonus[id] = 1
large_present_hud(id)
}
case 1:
{
fm_set_user_gravity(id, 0.4)
g_bonus[id] = 2
large_present_hud(id)
}
case 2:
{
fm_set_user_maxspeed(id, 350.0)
g_bonus[id] = 3
large_present_hud(id)
}
case 3:
{
fm_set_user_maxspeed(id, 200.0)
g_bonus[id] = 4
large_present_hud(id)
}
}
}
return FMRES_IGNORED
}
public large_present_hud(id)
{
if(is_user_alive(id))
{
if(g_bonus[id] > 0)
{
switch(g_bonus[id])
{
case 1:
{
set_hudmessage(0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Viata+")
}
case 2:
{
set_hudmessage(0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Gravitatie-")
}
case 3:
{
set_hudmessage(0, 255, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Viteza+")
}
case 4:
{
set_hudmessage(200, 0, 0, 0.02, 0.73, 0, 6.0, 12.0)
show_hudmessage(id, "[XMAS Gift] Viteza-")
}
}
set_task(12.0, "large_present_hud", id)
}
}
}
public client_disconnect(id)
{
g_bonus[id] = 0
}
/*====================================
========Inceput Fakemeta Util=======*/
stock fm_set_user_money(id,money,flash=1)
{
set_pdata_int(id,OFFSET_CSMONEY,money,OFFSET_LINUX )
message_begin(MSG_ONE,g_money,{0,0,0},id)
write_long(money)
write_byte(flash)
message_end()
}
stock fm_get_user_money(id)
{
return get_pdata_int(id,OFFSET_CSMONEY,OFFSET_LINUX)
}
stock fm_set_user_health(id, health)
{
(health > 0) ? set_pev(id, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, id)
return 1
}
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
}
stock fm_set_user_gravity(index, Float:gravity = 1.0) {
set_pev(index, pev_gravity, gravity)
return 1
}
stock fm_set_user_maxspeed(index, Float:speed = -1.0) {
engfunc(EngFunc_SetClientMaxspeed, index, speed);
set_pev(index, pev_maxspeed, speed);
return 1;
}
/*====================================
========Sfarsit Fakemeta Util=======*/
/*====================================
========Inceput Super Spawns========*/
public SsInit(Float:mindist)
{
new cmd[32]
format(cmd, 15, "_ss_dump%c%c%c%c", random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'), random_num('A', 'Z'))
register_cvar("sv_superspawns", SS_VERSION, (FCVAR_SERVER|FCVAR_SPONLY))
register_concmd(cmd, "SsDump")
g_flSsMinDist = mindist
g_vecSsOrigins = ArrayCreate(3, 1)
g_vecSsSpawns = ArrayCreate(3, 1)
g_vecSsUsed = ArrayCreate(3, 1)
}
stock SsClean()
{
g_flSsMinDist = 0.0
ArrayClear(g_vecSsOrigins)
ArrayClear(g_vecSsSpawns)
ArrayClear(g_vecSsUsed)
}
stock SsGetOrigin(Float:origin[3])
{
new Float:data[3], size
new ok = 1
while((size = ArraySize(g_vecSsOrigins)))
{
new idx = random_num(0, size - 1)
ArrayGetArray(g_vecSsOrigins, idx, origin)
new used = ArraySize(g_vecSsUsed)
for(new i = 0; i < used; i++)
{
ok = 0
ArrayGetArray(g_vecSsUsed, i, data)
if(get_distance_f(data, origin) >= g_flSsMinDist)
{
ok = 1
break
}
}
ArrayDeleteItem(g_vecSsOrigins, idx)
if(ok)
{
ArrayPushArray(g_vecSsUsed, origin)
return true
}
}
return false
}
public SsDump()
{
new Float:origin[3]
new count = ArraySize(g_vecSsOrigins)
server_print("-------------------------------------------------------")
for(new i = 0; i < count; i++)
{
ArrayGetArray(g_vecSsOrigins, i, origin)
server_print("Origin: %f %f %f", origin[0], origin[1], origin[2])
}
server_print("-------------------------------------------------------")
server_print("Number of origins: %i", count)
server_print("Time: %i", g_iSsTime)
server_print("-------------------------------------------------------")
}
public SsScan()
{
new start, Float:origin[3], starttime
starttime = get_systime()
for(start = 0; start < sizeof(g_szStarts); start++)
{
server_print("Searching for %s", g_szStarts[start])
new ent
if((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", g_szStarts[start])))
{
new counter
pev(ent, pev_origin, origin)
ArrayPushArray(g_vecSsSpawns, origin)
while(counter < SS_MAX_LOOPS)
{
counter = GetLocation(origin, counter)
}
}
}
g_iSsTime = get_systime()
g_iSsTime -= starttime
}
GetLocation(Float:start[3], &counter)
{
new Float:end[3]
for(new i = 0; i < 3; i++)
{
end[i] += random_float(0.0 - g_flOffsets[i], g_flOffsets[i])
}
if(IsValid(start, end))
{
start[0] = end[0]
start[1] = end[1]
start[2] = end[2]
ArrayPushArray(g_vecSsOrigins, end)
}
counter++
return counter
}
IsValid(Float:start[3], Float:end[3])
{
SetFloor(end)
end[2] += 36.0
new point = engfunc(EngFunc_PointContents, end)
if(point == CONTENTS_EMPTY)
{
if(CheckPoints(end) && CheckDistance(end) && CheckVisibility(start, end))
{
if(!trace_hull(end, HULL_LARGE, -1))
{
return true
}
}
}
return false
}
CheckVisibility(Float:start[3], Float:end[3])
{
new tr
engfunc(EngFunc_TraceLine, start, end, IGNORE_GLASS, -1, tr)
return (get_tr2(tr, TR_pHit) < 0)
}
SetFloor(Float:start[3])
{
new tr, Float:end[3]
end[0] = start[0]
end[1] = start[1]
end[2] = -99999.9
engfunc(EngFunc_TraceLine, start, end, DONT_IGNORE_MONSTERS, -1, tr)
get_tr2(tr, TR_vecEndPos, start)
}
CheckPoints(Float:origin[3])
{
new Float:data[3], tr, point
data[0] = origin[0]
data[1] = origin[1]
data[2] = 99999.9
engfunc(EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr)
get_tr2(tr, TR_vecEndPos, data)
point = engfunc(EngFunc_PointContents, data)
if(point == CONTENTS_SKY && get_distance_f(origin, data) < 250.0)
{
return false
}
data[2] = -99999.9
engfunc(EngFunc_TraceLine, origin, data, DONT_IGNORE_MONSTERS, -1, tr)
get_tr2(tr, TR_vecEndPos, data)
point = engfunc(EngFunc_PointContents, data)
if(point < CONTENTS_SOLID)
return false
return true
}
CheckDistance(Float:origin[3])
{
new Float:dist, Float:data[3]
new count = ArraySize(g_vecSsSpawns)
for(new i = 0; i < count; i++)
{
ArrayGetArray(g_vecSsSpawns, i, data)
dist = get_distance_f(origin, data)
if(dist < SS_MIN_DISTANCE)
return false
}
count = ArraySize(g_vecSsOrigins)
for(new i = 0; i < count; i++)
{
ArrayGetArray(g_vecSsOrigins, i, data)
dist = get_distance_f(origin, data)
if(dist < SS_MIN_DISTANCE)
return false
}
return true
}
/*====================================
========Sfarsit Super Spawns========*/
Instalare:
1.Fisierul xmas_gifts.amxx il puneti in addons/amxmodx/plugins.
[Optional]: Fisierul xmas_gifts.sma il puneti in addons/amxmodx/scripting.
2.Intrati în addons/amxmodx/configs/plugins.ini si adaugati la urma: xmas_gifts.amxx .
3.Folderul "present" il puneti in cstrike/models.
Cvar-uri:
presents_respawn_time 60.0 (Dupa cat timp dupa ridicarea unui cadou apare altul pe harta)
presents_on_map 11 (Cate cadouri sa apara pe harta)
Modules:
- Fakemeta
- Fun
- Engine