Reset score + Delay by Crash

Тук е мястото да представите плъгин(и), написани от вас!
Post Reply
User avatar
Crasher
Crash
Crash
Posts: 44
Joined: 23 Nov 2012, 15:53
Skype: niki.d12
CS Nick: Crash
Favorite version: CS: 1.6
Contact:

Reset score + Delay by Crash

Post by Crasher »

Автор:
Crash

Описание:
Resetscore който може да се използва през определено време. Използват се random color HUD

Cvars:
rs_delay "?" - на мястото на ? слагате колкото си искате време *default: 10*
rs_prefix "?" - на мястото на ? слагате каквото си искате име *default: Server*

Снимки:
Клик
Клик
Клик

Изтегли:
Resetscore.zip
(4.23 KiB) Downloaded 190 times
Last edited by Crasher on 30 Jun 2017, 21:24, edited 2 times in total.
User avatar
Reddeyes
Потребител
Потребител
Posts: 149
Joined: 18 Feb 2015, 19:49
Favorite version: CS: 1.6

Re: Reset score + Delay by Crash

Post by Reddeyes »

Уникално добро! Евалата за труда по плъгина :o
User avatar
JackEyedJones
РЕКЛАМАТОР
РЕКЛАМАТОР
Posts: 332
Joined: 18 Apr 2014, 06:17
Skype: voltouch180
CS Nick: <Not Good Simply KoreaN>
Favorite version: CS: 1.6
Location: Plovdiv, Bulgaria, Europe, Entire World
Contact:

Re: Reset score + Delay by Crash

Post by JackEyedJones »

Направи ъпдейт:
При написване на командата да изписва - Ostavat 40 sec do reset | Ostavat 39 sec do reset и така до 0-та.

Виждам отскоро, че се мотаеш тук с подобни работи, нека видя как се справяш.
User avatar
kitin.dll
Потребител
Потребител
Posts: 157
Joined: 02 Jun 2016, 17:52
Skype: zabraih ;(
CS Nick: (*knoxS*)
Favorite version: CS: 1.6

Re: Reset score + Delay by Crash

Post by kitin.dll »

Супер плъгинче брато кефи ме! ::psy::
User avatar
Crasher
Crash
Crash
Posts: 44
Joined: 23 Nov 2012, 15:53
Skype: niki.d12
CS Nick: Crash
Favorite version: CS: 1.6
Contact:

Re: Reset score + Delay by Crash

Post by Crasher »

JackEyedJones wrote:Направи ъпдейт:
При написване на командата да изписва - Ostavat 40 sec do reset | Ostavat 39 sec do reset и така до 0-та.

Виждам отскоро, че се мотаеш тук с подобни работи, нека видя как се справяш.
На мен първоначално тва ми беше идеиката, само дето си вдигнах нервите и го оставих така.
До утре най-вероятно ще го направя

----------------
Готово, бил съм объркал фалга на таска предишния път
User avatar
JackEyedJones
РЕКЛАМАТОР
РЕКЛАМАТОР
Posts: 332
Joined: 18 Apr 2014, 06:17
Skype: voltouch180
CS Nick: <Not Good Simply KoreaN>
Favorite version: CS: 1.6
Location: Plovdiv, Bulgaria, Europe, Entire World
Contact:

Re: Reset score + Delay by Crash

Post by JackEyedJones »

Виж промените:

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <dhudmessage>

#define TASK_ID 999

new szPrefix, gCvarRsDelay, g_msgsync, prefix[32], ass

new const iRSCommands[][] = 
{
	"say /rs","say_team /rs",
	"say rs","say_team rs"
}

public plugin_init()
{
	register_plugin("Delayed RS", "1.2", "Crash")
	
	for(new i=0; i<sizeof(iRSCommands); i++)
		register_clcmd(iRSCommands[i], "reset_score")
	
	gCvarRsDelay = register_cvar( "rs_delay", "10.0" )
//	ass_banger = get_cvar_pointer("rs_delay");
	
	szPrefix = register_cvar("rs_prefix", "Server")
	get_pcvar_string(szPrefix, prefix, charsmax(prefix))
	
	g_msgsync = CreateHudSyncObj();
}

public reset_score(id)
{	
	if(task_exists(id + TASK_ID))
	{
		set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.7, 0, 6.0, 3.0, 0.1, 3.4, false )
		show_dhudmessage( id, "(%s) Vse oshte ne mojesh da izpolzvash Reset Score ", prefix)
	}
	else
	{
		set_user_frags( id, 0 ); cs_set_user_deaths( id, 0 )
		
		new name[33]
		get_user_name(id, name, 32)
		client_cmd( id, "spk events/enemy_died" )
		set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.8, 0, 6.0, 3.0, 0.1, 3.4, false )
		show_dhudmessage( id, "^n(%s) %s - reset score^nKills: 0 | Deaths: 0", prefix, name )
		ass = get_pcvar_num(gCvarRsDelay)
		banica(id)
		
		set_task(1.0, "banica", 652450, _, _, "a", ass);
		set_task( get_pcvar_float( gCvarRsDelay ), "delay", id + TASK_ID)
	}
	return PLUGIN_HANDLED
}

public delay(id)
{
	id -= TASK_ID
	set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), 0.0 , 0.29, 0, 6.0, 3.0, 0.1, 3.4, false )
	show_dhudmessage( id, "(%s) Resetscore moje da se izpolzva otnovo!", prefix)
	client_cmd( id, "spk fvox/bell" )
}

public banica(id)
{
	set_hudmessage( random( 255 ), random( 255 ), random( 255 ), 0.0, 0.25, 0, 1.0, 1.0, 0.01, 0.01, -1);
	ShowSyncHudMsg(id, g_msgsync, "(%s) Resetscore moje da se izpolzva otnovo sled: %d", prefix, ass);
	ass--
}

public client_disconnect( id ) 
	remove_task( id + TASK_ID )
User avatar
Crasher
Crash
Crash
Posts: 44
Joined: 23 Nov 2012, 15:53
Skype: niki.d12
CS Nick: Crash
Favorite version: CS: 1.6
Contact:

Re: Reset score + Delay by Crash

Post by Crasher »

JackEyedJones wrote:Виж промените:

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <dhudmessage>

#define TASK_ID 999

new szPrefix, gCvarRsDelay, g_msgsync, prefix[32], ass

new const iRSCommands[][] = 
{
	"say /rs","say_team /rs",
	"say rs","say_team rs"
}

public plugin_init()
{
	register_plugin("Delayed RS", "1.2", "Crash")
	
	for(new i=0; i<sizeof(iRSCommands); i++)
		register_clcmd(iRSCommands[i], "reset_score")
	
	gCvarRsDelay = register_cvar( "rs_delay", "10.0" )
//	ass_banger = get_cvar_pointer("rs_delay");
	
	szPrefix = register_cvar("rs_prefix", "Server")
	get_pcvar_string(szPrefix, prefix, charsmax(prefix))
	
	g_msgsync = CreateHudSyncObj();
}

public reset_score(id)
{	
	if(task_exists(id + TASK_ID))
	{
		set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.7, 0, 6.0, 3.0, 0.1, 3.4, false )
		show_dhudmessage( id, "(%s) Vse oshte ne mojesh da izpolzvash Reset Score ", prefix)
	}
	else
	{
		set_user_frags( id, 0 ); cs_set_user_deaths( id, 0 )
		
		new name[33]
		get_user_name(id, name, 32)
		client_cmd( id, "spk events/enemy_died" )
		set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.8, 0, 6.0, 3.0, 0.1, 3.4, false )
		show_dhudmessage( id, "^n(%s) %s - reset score^nKills: 0 | Deaths: 0", prefix, name )
		ass = get_pcvar_num(gCvarRsDelay)
		banica(id)
		
		set_task(1.0, "banica", 652450, _, _, "a", ass);
		set_task( get_pcvar_float( gCvarRsDelay ), "delay", id + TASK_ID)
	}
	return PLUGIN_HANDLED
}

public delay(id)
{
	id -= TASK_ID
	set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), 0.0 , 0.29, 0, 6.0, 3.0, 0.1, 3.4, false )
	show_dhudmessage( id, "(%s) Resetscore moje da se izpolzva otnovo!", prefix)
	client_cmd( id, "spk fvox/bell" )
}

public banica(id)
{
	set_hudmessage( random( 255 ), random( 255 ), random( 255 ), 0.0, 0.25, 0, 1.0, 1.0, 0.01, 0.01, -1);
	ShowSyncHudMsg(id, g_msgsync, "(%s) Resetscore moje da se izpolzva otnovo sled: %d", prefix, ass);
	ass--
}

public client_disconnect( id ) 
	remove_task( id + TASK_ID )
Забелязах iRSCommands, което е много мазна идеика :д
и client_disconnect-а само не разбрах защо си работи без { }
User avatar
Robbert van de Corput
Потребител
Потребител
Posts: 7
Joined: 04 Aug 2016, 14:57

Re: Reset score + Delay by Crash

Post by Robbert van de Corput »

Като показваш префикси при именуване на променливи поне ги показвай правилно...
i - intiger / число
sz - string / текст
f / fl - float / дробно число
b / bl - bool
Не съм гледал кода, но имената на функциите ако са такива... По-добре ги поправи.
TASK_ID в случая е ненужно. От съответния плъгин имаш само 1 таск, няма с кой друг да се обърка. Варианта с цикъла дори и да ти изглежда по-интересен - не е. Това е излишен performence, в pawn-a не се гледа, но в системното програмиране е от голямо значение ако програмата ти направи 50 тика по-малко и използва 5kb по-малко. Относно скобите на disconnect - ако имаш 1 ред, койти принадлежи към функция/проверка/цикъл и подобни, не е задължително да се слагат скоби, но се счита за лоша практика в програмирането.
User avatar
hackera457
Потребител
Потребител
Posts: 124
Joined: 19 Feb 2011, 11:20
CS Nick: hackera_vd
Favorite version: CS: 1.6
Location: Видин

Re: Reset score + Delay by Crash

Post by hackera457 »

Code: Select all

public reset_score(id)
{   
   if(task_exists(id + TASK_ID))
   {
      set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.7, 0, 6.0, 3.0, 0.1, 3.4, false )
      show_dhudmessage( id, "(%s) Vse oshte ne mojesh da izpolzvash Reset Score ", prefix)
   }
   else
   {
      set_user_frags( id, 0 ); cs_set_user_deaths( id, 0 )
      
      new name[33]
      get_user_name(id, name, 32)
      client_cmd( id, "spk events/enemy_died" )
      set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.8, 0, 6.0, 3.0, 0.1, 3.4, false )
      show_dhudmessage( id, "^n(%s) %s - reset score^nKills: 0 | Deaths: 0", prefix, name )
      ass = get_pcvar_num(gCvarRsDelay)
      banica(id)
      
      set_task(1.0, "banica", 652450, _, _, "a", ass);
      set_task( get_pcvar_float( gCvarRsDelay ), "delay", id + TASK_ID)
   }
   return PLUGIN_HANDLED
}
Интересно ми е къде си дефинирал "ass" променливата и от какъв тип е. Ползваш имена каквито ти паднат, а това не е никак добра практика. Имената на функциите и променливите трябва да указват тяхното предназначение

Code: Select all

set_task(1.0, "banica", 652450, _, _, "a", ass);
Не мога да ти схавана смисъла на този ред. За мен е напълно излишен, при условие, че викаш функцията banica(). Горния код може да се промени така:

Code: Select all

public reset_score(id)
{   
   if(task_exists(id + TASK_ID))
   {
      set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.7, 0, 6.0, 3.0, 0.1, 3.4, false )
      show_dhudmessage( id, "(%s) Vse oshte ne mojesh da izpolzvash Reset Score ", prefix)
   }
   else
   {
      set_user_frags( id, 0 ); cs_set_user_deaths( id, 0 )
      
      new name[33]
      get_user_name(id, name, 32)
      client_cmd( id, "spk events/enemy_died" )
      set_dhudmessage( random( 255 ), random( 255 ), random( 255 ), -1.0, 0.8, 0, 6.0, 3.0, 0.1, 3.4, false )
      show_dhudmessage( id, "^n(%s) %s - reset score^nKills: 0 | Deaths: 0", prefix, name )
      ass = get_pcvar_num(gCvarRsDelay)
      banica(id)
      
      set_task(ass, "delay", id + TASK_ID)
   }
   return PLUGIN_HANDLED
}
И не е хубава практика да ползваш таск за delay. Правиш си една променлива iDelay, която по подразбиране я нулираш. При всяко изпълнение на командата /rs инкрементираш iDelay и правиш проверка ако iDelay е по-голямо от зададено време чрез cvar да вади съобщение и PLUGIN_HANDLED. Това ти е най-простия и най-добър вариант. Варианта ти с таск води до намаляване на performance. Правиш един таск, който взима времето от cvar и ти нулира iDelay, само ако iDelay е > 0. Този таск, за който говоря ти играе роля на CronJob
Post Reply

Return to “Ваши плъгини”