modificare plugin xmas gift

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
Barlap
Membru, skill 0
Membru, skill 0
Posts: 63
Joined: 20 Apr 2016, 23:24
Detinator Steam: Da
CS Status: Caut Admini Capabili
Detinator server CS: GO.ICEGAME.RO
Fond eXtream: 0
Location: Videle

28 Oct 2017, 21:39

Salut ma poate ajuta cineva, folosesc plugin ul xmas gifts,dar cadourile nu isi mai dau respawn, apar doar prima runda.
| Afiseaza codul
/*
======================================
========== XMAS GIFTS 2.2 ============
======================================

Autor: KronoS
Versiune: 2.2
Site: http://www.eXtreamCS.com

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/csgro_hwn/dov_1.mdl","models/csgro_hwn/dov_2.mdl","models/csgro_hwn/dov_3.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

native get_user_puncte(id)
native set_user_puncte(id,nr)		

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", "31")

	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)
}

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: 
		{
			set_user_puncte(id,get_user_puncte(id)+50)
			set_hudmessage(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
			show_hudmessage(id, "[Halloween] Dovleacul ti-a oferit 50Euro")
		}
		case 1:
		{
			fm_set_user_money(id, 16000)
			set_hudmessage(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
			show_hudmessage(id, "[Halloween] Dovleacul ti-a oferit 16000$")
		}
		case 2:
		{
			fm_set_user_health(id, get_user_health(id) -150)
			set_hudmessage(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
			show_hudmessage(id, "[Halloween] Acest dovleac a fost otravit.")
		}
		case 3:
			if(get_user_puncte(id) >= 50)
		{
			set_user_puncte(id,get_user_puncte(id)-50)
			set_hudmessage(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
			show_hudmessage(id, "[Halloween] Dovleacul ti-a furat 50Euro")
		}
		else
		{
			show_hudmessage(id, "[Halloween] Esti prea sarac sa-ti fur banii.")
		}
		case 4:
		{
			fm_give_item(id, "weapon_awp")
			set_hudmessage(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
			show_hudmessage(id, "[Halloween] Dovleacul 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(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
					show_hudmessage(id, "[Halloween] Ai primit bomboane HP.")
				}
				case 2:
				{
					set_hudmessage(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
					show_hudmessage(id, "[Halloween] Ai primit bomboane Gravity.")
				}
				case 3:
				{
					set_hudmessage(255, 148, 009, 0.02, 0.73, 0, 6.0, 12.0)
					show_hudmessage(id, "[Halloween] Ai primit bomboane Speedy.")
				}
				case 4:
				{
					set_hudmessage(200, 0, 0, 0.02, 0.73, 0, 6.0, 12.0)
					show_hudmessage(id, "[Halloween] Ai primit un covrig...")
				}
			}
			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 += random_float(0.0 - g_flOffsets, g_flOffsets)
	}

	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========*/
RoyalServer 2
User avatar
A k c 3 n 7
Super moderator
Super moderator
Posts: 5139
Joined: 25 Aug 2014, 21:31
Detinator Steam: Da
CS Status: who dares wins
SteamID: Jandarmeria
Reputatie: Super moderator
Moderatorul anului 2023
Fost Membru Club eXtreamCS ( o luna )
Fost eXtream Mod
Fost Intermediar
Nume anterior: Sorinel
Fond eXtream: 0
Location: Unknown
Discord: remusakcent
Has thanked: 4 times
Been thanked: 46 times

28 Oct 2017, 21:57

folosestel pe cel din acest addons addon-uri/addons-xmas-2017-t346867.html
User avatar
Barlap
Membru, skill 0
Membru, skill 0
Posts: 63
Joined: 20 Apr 2016, 23:24
Detinator Steam: Da
CS Status: Caut Admini Capabili
Detinator server CS: GO.ICEGAME.RO
Fond eXtream: 0
Location: Videle

02 Nov 2017, 16:26

rezolvat cer t/c
Post Reply

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 19 guests