CS-bg.info - форумът на CS-bg :: Counter-Strike фен сайт

Reset score + Delay by Crash

Тук е мястото да представите плъгин(и), написани от вас!

Модератори: Екип C-Strike, Помощник-модератори

Reset score + Delay by Crash

Мнениеот Crasher » 28 Юни 2017, 15:43

Автор:
Crash

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

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

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

Изтегли:

Resetscore.zip
(4.23 KiB) 20 пъти
Последна промяна Crasher на 30 Юни 2017, 21:24, променена общо 2 пъти
Crasher

Аватар
Crash
Crash
 
Регистриран на: 23 Ное 2012, 15:53
Skype: niki.d12
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот Reddeyes » 28 Юни 2017, 17:41

Уникално добро! Евалата за труда по плъгина :o
Reddeyes

Потребител
Потребител
 
Регистриран на: 18 Фев 2015, 19:49
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот JackEyedJones » 29 Юни 2017, 19:29

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

Виждам отскоро, че се мотаеш тук с подобни работи, нека видя как се справяш.
JackEyedJones

Аватар
Потребител
Потребител
 
Регистриран на: 18 Апр 2014, 06:17
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот Robo » 30 Юни 2017, 10:10

Супер плъгинче брато кефи ме! ::psy::
Robo

Аватар
(*knoxS*)
(*knoxS*)
 
Регистриран на: 02 Юни 2016, 17:52
Skype: Не те интересува.
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот Crasher » 30 Юни 2017, 16:08

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

Виждам отскоро, че се мотаеш тук с подобни работи, нека видя как се справяш.


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

----------------
Готово, бил съм объркал фалга на таска предишния път
Crasher

Аватар
Crash
Crash
 
Регистриран на: 23 Ное 2012, 15:53
Skype: niki.d12
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот JackEyedJones » 01 Юли 2017, 09:19

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

Код: Избери целия код
#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 )
JackEyedJones

Аватар
Потребител
Потребител
 
Регистриран на: 18 Апр 2014, 06:17
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот Crasher » 02 Юли 2017, 23:26

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

Код: Избери целия код
#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-а само не разбрах защо си работи без { }
Crasher

Аватар
Crash
Crash
 
Регистриран на: 23 Ное 2012, 15:53
Skype: niki.d12
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот Robbert van de Corput » 03 Юли 2017, 06:09

Като показваш префикси при именуване на променливи поне ги показвай правилно...
i - intiger / число
sz - string / текст
f / fl - float / дробно число
b / bl - bool
Не съм гледал кода, но имената на функциите ако са такива... По-добре ги поправи.
TASK_ID в случая е ненужно. От съответния плъгин имаш само 1 таск, няма с кой друг да се обърка. Варианта с цикъла дори и да ти изглежда по-интересен - не е. Това е излишен performence, в pawn-a не се гледа, но в системното програмиране е от голямо значение ако програмата ти направи 50 тика по-малко и използва 5kb по-малко. Относно скобите на disconnect - ако имаш 1 ред, койти принадлежи към функция/проверка/цикъл и подобни, не е задължително да се слагат скоби, но се счита за лоша практика в програмирането.
Robbert van de Corput

Потребител
Потребител
 
Регистриран на: 04 Авг 2016, 14:57
[ Профил в сайта ]

Re: Reset score + Delay by Crash

Мнениеот hackera457 » 08 Юли 2017, 22:39

Код: Избери целия код
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" променливата и от какъв тип е. Ползваш имена каквито ти паднат, а това не е никак добра практика. Имената на функциите и променливите трябва да указват тяхното предназначение
Код: Избери целия код
set_task(1.0, "banica", 652450, _, _, "a", ass);

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

Код: Избери целия код
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
hackera457

Аватар
Потребител
Потребител
 
Регистриран на: 19 Фев 2011, 11:20
Местоположение: Видин
[ Профил в сайта ]



Ето че в края на този месец се навършват точно 10 години от официалното пускане на българския CS фен сайт.
ESEA имат удоволствието да обявят сезон 25 на своята лига, който ще включва повече дивизии за някои региони, както и редица подобрения базирани на обратната връзка от сезон 24.
DreamHack потвърдиха, че Ninjas in Pyjamas и Virtus.pro са получили покани за тяхното събитие Masters в Малмьо.

Назад към Ваши плъгини

Кой е на линия

Потребители, разглеждащи този форум: 0 регистрирани

Creative Commons License

Valve, Steam, поредицата Counter-Strike и логото на всяко от изброените са търговски марки и/или
регистрирани търговски марки на Valve Corporation. Всички други търговски марки са собственост на съответните им собственици.

Design: iVoka • Special thanks: VaRkOlAKA
За сайта | Екип | За реклама | Карта на сайта | За контакти

Powered by phpBB® Forum Software © phpBB Group | Theme by A1ex, edit by iVoka
Превод: Йоан Арнаудов | Корекции: Ивомир Петров
Условия за ползване | Политика на поверителност