Страница 2 от 2

FM_Think за CS_TEAM_SPECTATOR

Публикувано: 31 дек 2018, 17:09
от kryder11
Окей ти си го прави както искаш аз ти казвам как е добре да се прави и на това му се казва оптимизация. Глобал таск е когато се слощи флаг "b" и винаги се ползва със HUD съобщения. И мисля че тука е форум за помощ а не форум за спорене. Да мине @OciXCrom и да си каже мнението.

И съобщенията никога не са били и няма да бъдад ентити....

Ако не ти върви така качи ми плъгина и ще ти го оправя веднага.

Код: Избери всички

public client_putinserver(id)
{
	set_task(1.0, "fw_screenthink", id, _, _, "b")
}

public fw_screenthink(id)
{
	if (!is_user_alive(id))
	{
		id = pev(id, pev_iuser2)
		
		if (!is_user_alive(id)) return;
	}
	
	energy = 100.0
	
	if (cl_nn_has[id] == NANO_YES && ((cl_nn_lowres[id] && cl_nn_counter[id] == 0) || !cl_nn_lowres[id]))
	{
		// Current Mode
		static hud[200]
		
		formatex(hud, 199, "Current Mode:")
		
		switch (cl_nn_mode[id])
		{
			case NANO_STREN: formatex(hud, 199, "%s Strength",hud)
			case NANO_ARMOR: formatex(hud, 199, "%s Armor",hud)
			case NANO_SPEED: formatex(hud, 199, "%s Speed",hud)
			case NANO_CLOAK: formatex(hud, 199, "%s Cloac",hud)
		}
		
		formatex(hud, 199, "%s^nEnergy: (%d%%)", hud, floatround(cl_nn_energy[id] / energy * 100))
		
		for (new x = 0; x < floatround(cl_nn_energy[id] / energy * 20); x++)
			formatex(hud, 199, "%s|", hud)
		
		formatex(hud, 199, "%s^n", hud)
		
		// Health, Armor
		//formatex(hud, 199, "%sHealth: %d Armor: %d", hud, get_user_health(id), get_user_armor(id))
		
		switch (cl_nn_scr_speed[id])
		{
			case SPD_SCR_STILL:  formatex(hud, 199, "%sSpeed: Standing",hud)
			case SPD_SCR_VSLOW:  formatex(hud, 199, "%sSpeed: Very Slow",hud)
			case SPD_SCR_SLOW:   formatex(hud, 199, "%sSpeed: Slow",hud)
			case SPD_SCR_NORMAL: formatex(hud, 199, "%sSpeed: Normal",hud)
			case SPD_SCR_FAST:   formatex(hud, 199, "%sSpeed: Fast",hud)
		}
		
		if (cl_nn_mode[id] == NANO_STREN)
		{
			formatex(hud, 199, "%s^nController:(%d%%)", hud, floatround(cl_nn_controlling[id] / energy * 100))
			
			for (new x = 0; x < floatround(cl_nn_controlling[id] / energy * 20); x++)
			formatex(hud, 199, "%s|", hud)
		}
		
		if (!cl_nn_lowres[id])
		{
			set_hudmessage(NanoScreenColor[cl_nn_mode[id]][0], NanoScreenColor[cl_nn_mode[id]][1], NanoScreenColor[cl_nn_mode[id]][2], 0.025, 0.6, 0, 0.0, 0.2, 0.01)
			ShowSyncHudMsg(id, nd_hud_sync, "%s", hud)
		}
		else
		{
			set_hudmessage(NanoScreenColor[cl_nn_mode[id]][0], NanoScreenColor[cl_nn_mode[id]][1], NanoScreenColor[cl_nn_mode[id]][2], -0.6, 0.5, 0, 0.0, (0.2 + (0.1 * float(NANO_LOW_RES))), 0.0, 0.0)
			ShowSyncHudMsg(id, nd_hud_sync, "%s", hud)
		}
	}
		
	if (cl_nn_counter[id] > 0)
		cl_nn_counter[id] -= 1
	else
		cl_nn_counter[id] = NANO_LOW_RES
	
	set_pev(ent, pev_nextthink, get_gametime() + 0.1)
}

FM_Think за CS_TEAM_SPECTATOR

Публикувано: 31 дек 2018, 18:37
от hackera457
kryder11 написа:
31 дек 2018, 15:25
Никакви щуротии Huehue... За каквоти е register_think ако може да ми обясниш като think се ползва само при entities. За нещо са тези глобални set_task().

FW_Think праща до мотора (engine) горе доло 1000 петиции в секунда на 32 играча ако сървъра е пълен... И да не споменавам че е fakemeta. Това иска да каже: fakemeta -> engine -> преработка -> engine -> fakemeta.
Преди да корегираш, питай. :rolle:
Защото мислещото entity е в пъти по-добре от колкото тасковете, а за това, което иска автора на темата мислещото ентити е най-подходящо. Ти като сетнеш тоя таск момко в client_putinserver(id) какво ще спечелиш? Отговора е нищо. В случая за автора на темата е най-подходящо мислещо ентити, което се постига чрез register_think функцията

FM_Think за CS_TEAM_SPECTATOR

Публикувано: 31 дек 2018, 20:34
от kryder11
Пробвай, немога да тествам защото има 2 includeta който не ги намирам... и само мога да кажа че този код който си добавил е :surrender:

FM_Think за CS_TEAM_SPECTATOR

Публикувано: 01 яну 2019, 04:51
от LayerFort
Едит: Оправих се, благодаря на всички за съдействието. Заключвайте.