Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie
Modyfikacja

Maluteńka przeróbka BSHelper'a :)

modyfikacja

  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
Brak odpowiedzi do tego tematu

#1 borbet

    Pomocny

  • Użytkownik

Reputacja: 30
Życzliwy

  • Postów:56
  • Imię:Bartek
  • Lokalizacja:Katowice
Offline

Napisano 23.12.2013 02:45

Witam! Mam prośbę o małą przeróbkę BSHelper'a :D W tej chwili przy wejściu na serwer automatycznie włączają się sprite'y, a to przeszkadza i chciałbym, żeby się nie włączały. Przy dłuższym przysiedzeniu mógłbym sam to ogarnąć, ale jestem na razie zajęty, więc proszę o to Was :P

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <xs>
#include <csx>
#include <colorchat>

#define PLUGIN	"Bombsite Helper"
#define AUTHOR	"kiki - hlmod.hu"
#define VERSION	"1.3"

#define BOMBSITES 5 //Max Bombsites (Do not change)
new Float:g_locations[BOMBSITES][3]
new const g_sprite1[] = "sprites/bombsite/bomba.spr";
new const g_sprite2[] = "sprites/laserbeam.spr"
new g_line, g_iconid, g_maxplayers, g_bombsitenum, g_hostagepos, g_hostagek, g_bombplanted, g_userteam;
new r,g,b, helpt, type;

new bool:is_help_sprite[33], bool:is_help_line[33], bool:is_help_radar[33];

public client_putinserver(id)
{
	set_task(15.0, "adv", id)
}

public adv(id)
{ 
  ColorChat(id, TEAM_COLOR, "[BSHELPER]^x01 Nie wiesz gdzie znajduja sie BSy? Wpisz^x04 /bs^x01, aby wlaczyc asyste!")
}

public plugin_init()
{
	new ent = -1;
	while ((ent = find_ent_by_class(ent, "func_bomb_target")))
	{
		g_bombsitenum++
	}
	while ((ent = find_ent_by_class(ent, "info_bomb_target")) )
	{
		g_bombsitenum++
	}
	if(g_bombsitenum <= 0)
	{
		register_plugin(PLUGIN, "No Bomb map", AUTHOR)
		pause("a")
		return
	}
	register_plugin(PLUGIN, VERSION, AUTHOR)
	find_bomb_targets(g_locations);
	register_clcmd("say /bs", "bsh_menu");
	register_clcmd("say_team /bs", "bsh_menu");
	
	r = register_cvar("bsh_line_red", "0");
	g = register_cvar("bsh_line_green", "255");
	b = register_cvar("bsh_line_blue", "0");
	helpt = register_cvar("amx_bsh", "a"); 
	g_hostagepos = get_user_msgid("HostagePos")
	g_hostagek = get_user_msgid("HostageK")
	g_maxplayers = get_maxplayers()
	register_event("HLTV", "event_new_round", "a", "1=0", "2=0")
	register_forward(FM_PlayerPreThink,"PreThink");
	set_task(2.3,"radar",_,_,_,"b")
	set_task(0.1,"task",_,_,_,"b")
	
	new args[4];
	get_pcvar_string(helpt, args, 3)
	type = read_flags(args)
}

public client_connect(id)
{
	if(type & (1<<0)) 
		is_help_sprite[id] = true;
	else
		is_help_sprite[id] = false;
	if(type & (1<<1)) 
		is_help_line[id] = true;
	else
		is_help_line[id] = false;
	if(type & (1<<2)) 
		is_help_radar[id] = true;
	else
	is_help_radar[id] = false;
} 

public plugin_precache()
{	
	g_iconid = precache_model(g_sprite1)
	g_line = precache_model(g_sprite2);
}


public event_new_round()
{
	g_bombplanted = false
}

public bomb_planted(planter)
{
	g_bombplanted = true
}

public task()
{
	new Players[32] 
	new playerCount, i, player 
	get_players(Players, playerCount, "ach") 
	for (i=0; i<playerCount; i++) 
	{
		player = Players[i] 
		if(is_help_line[player])
		{	
			new orig[3];
			get_user_origin(player, orig, 0)
			for(new i = 0; i < g_bombsitenum; i++) 
			{
				make_line(player,orig,g_locations[i],55)
			}
		}
	}
}

public PreThink(id)
{
	if(is_help_sprite[id])
	{	
		for(new i = 0; i < g_bombsitenum; i++) 
		{
			create_icon_origin(id, g_locations[i], g_iconid)
		}
	}
}

public radar()
{
	for (new id=1;id<=g_maxplayers;id++)
	{
		if (is_user_alive(id) && (is_help_radar[id]))
		{
			g_userteam = get_user_team(id)	
			if(g_userteam==2 || (g_userteam==1 && !g_bombplanted))
			{
				for(new i=0;i<g_bombsitenum;i++)
				{  
					message_begin(MSG_ONE_UNRELIABLE, g_hostagepos, {0,0,0}, id)
					write_byte(id)
					write_byte(i+20)
					write_coord(floatround(g_locations[i][0]))
					write_coord(floatround(g_locations[i][1]))
					write_coord(floatround(g_locations[i][2]))
					message_end()
					
					message_begin(MSG_ONE_UNRELIABLE, g_hostagek, {0,0,0}, id)
					write_byte(i+20)
					message_end()
				}
			}
		}
	}
}

public bsh_menu(id)
{
	if(is_user_connected(id))
	{	
		new szov[192];
		new menu = menu_create("\rWybierz rodzaj asysty:", "bsh_handler");
		formatex(szov,charsmax(szov), "\wSprite'y %s", is_help_sprite[id] ? "\yWlaczone":"\rWylaczone");
		menu_additem(menu, szov, "1");
		formatex(szov,charsmax(szov), "\wLinie %s", is_help_line[id] ? "\yWlaczone":"\rWylaczone");
		menu_additem(menu, szov, "2");
		formatex(szov,charsmax(szov), "\wRadar %s", is_help_radar[id] ? "\yWlaczone":"\rWylaczone");
		menu_additem(menu, szov, "3");
		menu_display(id, menu, 0);
	}
}

public bsh_handler(id,menu,item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new data[6], iName[64];
	new access, callback;
	menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
	new key = str_to_num(data);
	
	switch(key)
	{
		case 1:
		{
			is_help_sprite[id] = !is_help_sprite[id];
		}
		case 2:
		{
			is_help_line[id] = !is_help_line[id];
		}
		case 3:
		{
			is_help_radar[id] = !is_help_radar[id];
		}
	}
	
	menu_destroy(menu);
	bsh_menu(id);
	return PLUGIN_HANDLED;
}

public make_line(id,start[3],Float:end[3],brightness){
	message_begin(MSG_ONE_UNRELIABLE ,SVC_TEMPENTITY,{0,0,0},id) //message begin
	write_byte(0)
	write_coord(start[0]) // start position
	write_coord(start[1])
	write_coord(start[2])
	write_coord(floatround(end[0])) // end position
	write_coord(floatround(end[1]))
	write_coord(floatround(end[2]))
	write_short(g_line) // sprite index
	write_byte(3) // starting frame
	write_byte(0) // frame rate in 0.1's
	write_byte(1) // life in 0.1's
	write_byte(10) // line width in 0.1's
	write_byte(0) // noise amplitude in 0.01's
	write_byte(get_pcvar_num(r))
	write_byte(get_pcvar_num(g))
	write_byte(get_pcvar_num(b))
	write_byte(brightness) // brightness)
	write_byte(0) // scroll speed in 0.1's
	message_end()
}

find_bomb_targets(Float:locations[BOMBSITES][3]) {
	new ent, i;
	while ( i < g_bombsitenum && (ent = find_ent_by_class(ent,"func_bomb_target") ) ||  i < g_bombsitenum && (ent = find_ent_by_class(ent,"info_bomb_target") ) ) {
		get_brush_entity_origin(ent, locations[i]);
		i++;
	}
}

create_icon_origin(id, Float:origin[3], sprite)
{
	new Float:fMyOrigin[3]
	entity_get_vector(id, EV_VEC_origin, fMyOrigin)
	
	new Float:fTargetOrigin[3]
	fTargetOrigin = origin
	fTargetOrigin[2] += 40.0
	
	if (!is_in_viewcone(id, fTargetOrigin)) return;
	
	new Float:fMiddle[3], Float:fHitPoint[3]
	xs_vec_sub(fTargetOrigin, fMyOrigin, fMiddle)
	trace_line(-1, fMyOrigin, fTargetOrigin, fHitPoint)
	
	new Float:fWallOffset[3], Float:fDistanceToWall
	fDistanceToWall = vector_distance(fMyOrigin, fHitPoint) - 10.0
	normalize(fMiddle, fWallOffset, fDistanceToWall)
	
	new Float:fSpriteOffset[3]
	xs_vec_add(fWallOffset, fMyOrigin, fSpriteOffset)
	new Float:fScale
	fScale = 0.01 * fDistanceToWall
	
	new scale = floatround(fScale)
	
	te_sprite(id, fSpriteOffset, sprite, scale, 255)
}

te_sprite(id, Float:origin[3], sprite, scale, brightness) // By sontung0
{	
	message_begin(MSG_ONE, SVC_TEMPENTITY, _, id)
	write_byte(TE_SPRITE)
	engfunc(EngFunc_WriteCoord, origin[0])
	engfunc(EngFunc_WriteCoord, origin[1])
	engfunc(EngFunc_WriteCoord, origin[2])
	write_short(sprite)
	write_byte(scale) 
	write_byte(brightness)
	message_end()
}

normalize(Float:fIn[3], Float:fOut[3], Float:fMul) // By sontung0
{
	new Float:fLen = xs_vec_len(fIn)
	xs_vec_copy(fIn, fOut)
	
	fOut[0] /= fLen, fOut[1] /= fLen, fOut[2] /= fLen
	fOut[0] *= fMul, fOut[1] *= fMul, fOut[2] *= fMul
}

Jedyne co tu zrobiłem to spolszczenie, zmianę komendy /bsh na /bs oraz colorchat zamiast client_print, czyli najprostsze z możliwych :D

Pozdrawiam :)


  • +
  • -
  • 0

b_350_20_FFFFFF_FFFFFF_000000_FFFFFF.png

b_350_20_FFFFFF_FFFFFF_000000_FFFFFF.png

 

Zapraszamy na nasze forum - FragBusters.PL - Serwery CS | Giełda kluczy STEAM






Również z jednym lub większą ilością słów kluczowych: modyfikacja

Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych