Русское сообщество по скриптингу

Резет Скоре + (Reset Score Plus)

Плагины для AMX Mod X, которые не удовлетворяют правилам оформления.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

Резет Скоре + (Reset Score Plus)

Сообщение 9iky6 » 06 май 2012, 20:54

Авторы: maeStro (9iky6)
Версия: 1.0

Описание:
Данный плагин позволяет сбросить игровую статистику убийств/поражений (frags/kills), а так же убрать смысл рекконекта. Точнее рекконект теперь полностью заблокирован!

При рекконекте у игрока сохраняется игровая статистика (время настраивается кваром).
Использовать команду /rs теперь тоже можно только 1 раз за несколько раундов (настраивается кваром)

Используемые модули:
amxmodx, fun, cstrike, hamsandwich - для Counter-Strike
amxmodx, hamsandwich, fakemeta, fun - для Half-Life

Настройки:
Для Counter-Strike серверов:
rs_block_rounds (3) - На сколько раундов блокировать ввод /rs
rs_reconnect_time (20) - На какое время (секунды) сохранять счет при выходе из игры

Для Half-Life серверов:
amx_f_every_spowns (15) - количество возрождений, после которых можно ввести /rs
amx_reconnect_stime (20) - время, в течении которого сохраняется счет (при переподключении к серверу)


Список изменений:
v1.0 - Сделан простой /rs, с показом в чат игрока, который сбросил статистику.

v2.0 - Добавлено время для сохранения статистики при рекконекте, добавленно ограничение на ввод команды (против флудеров, которых прикалывает сбрасывать её).

v2.0.1 - Исправлена ошибка с блокированием команды для всех игроков! Теперь отсчет раундов идет для каждого игрока по отдельности.

v3.0 (1.0) - Плагин решено переименовать в "Reset Score Plus". Рекконект теперь полностью заблокирован!



Не утверждено. Отсутствуют файлы и его поддержка // Leonidddd
Последний раз редактировалось 9iky6 05 июн 2012, 22:24, всего редактировалось 16 раз(а).
Аватара пользователя
9iky6
 
Сообщения: 2178
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 705 раз.

Re: Резет Скоре (Reset Score)

Сообщение smurfavr » 12 май 2012, 08:55

ошбика

L 05/12/2012 - 07:54:31: Invalid event (name "HLTV") (plugin "rs.amxx")
L 05/12/2012 - 07:54:31: [AMXX] Displaying debug trace (plugin "rs.amxx")
L 05/12/2012 - 07:54:31: [AMXX] Run time error 10: native error (native "register_event")
L 05/12/2012 - 07:54:31: [AMXX] [0] text12NWn1.sma::plugin_init (line 25)






Форум за HALF LIFE
http://smurfa.bulgarianforum.net/
Аватара пользователя
smurfavr
 
Сообщения: 71
Зарегистрирован: 02 авг 2011, 20:03
Откуда: България
Благодарил (а): 41 раз.
Поблагодарили: 2 раз.

Re: Резет Скоре (Reset Score)

Сообщение quit » 12 май 2012, 11:19

9iky6,
[pawn]
  1.  if((g_Round_counter[id] >= get_pcvar_num(gi_Round_counter))||(!get_user_flags(id)&ADMIN_LEVEL_B))
[/pawn]
Вы не правильно написали, в моем варианте было правильно.
[pawn]
  1.  if((g_Round_counter[id] >= get_pcvar_num(gi_Round_counter))||(get_user_flags(id)&ADMIN_LEVEL_B))
[/pawn]
В вашем случае любой игрок кроме админа сможет сбрасывать счет с первого раунда.
koko76,
ну да раундов то в half life нет :-D.
Плагин необходимо изменять под количество раз за карту.
Или у Вас стоит что-то на подобии last man standing и присутствуют раунды?
Аватара пользователя
quit
 
Сообщения: 294
Зарегистрирован: 28 янв 2011, 00:00
Благодарил (а): 11 раз.
Поблагодарили: 84 раз.
Языки программирования: Counter-Strike 1.6

Re: Резет Скоре (Reset Score)

Сообщение smurfavr » 12 май 2012, 11:43

Вы можете заставить его сделать весь код

да раундов то в half life нет а карту.
Я использую Google переводчик, но не переводить слова правильно, и поэтому так получается.






Форум за HALF LIFE
http://smurfa.bulgarianforum.net/
Аватара пользователя
smurfavr
 
Сообщения: 71
Зарегистрирован: 02 авг 2011, 20:03
Откуда: България
Благодарил (а): 41 раз.
Поблагодарили: 2 раз.

Re: Резет Скоре (Reset Score)

Сообщение 9iky6 » 12 май 2012, 14:52

quit, да, ошибся, опыта у меня ещё мало всё таки. :( Думаю всё таки лучше добавить админа в отдельное условие, так коректней работа будет.

quit, думаю сделать так: поставить квар 2 и добавить проверку на квар и карту, то есть если карта не сменилась а ты использовал 2 раза /rs то больше не сможешь. Или брать через промежуток времени, деля раунд на 2? То есть там примерно если раунд 20 минут, то использовать можно только 1 раз в 10 минут. koko76, если поймете, то как будет оптимальнее?
Аватара пользователя
9iky6
 
Сообщения: 2178
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 705 раз.

Re: Резет Скоре (Reset Score)

Сообщение 9iky6 » 12 май 2012, 14:54

quit, этот сток работать в HL будет?

[pawn]
  1. stock print_message(id, const msg[]){

  2.         message_begin(MSG_ONE, get_user_msgid("SayText"), .player = id)

  3.         write_byte(id)

  4.         write_string(msg)

  5.         message_end()

  6. }
[/pawn]
Аватара пользователя
9iky6
 
Сообщения: 2178
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 705 раз.

Re: Резет Скоре (Reset Score)

Сообщение smurfavr » 12 май 2012, 14:59

Если нет, то нет проблем. Сделать только 2 раза Mapa могут быть использованы






Форум за HALF LIFE
http://smurfa.bulgarianforum.net/
Аватара пользователя
smurfavr
 
Сообщения: 71
Зарегистрирован: 02 авг 2011, 20:03
Откуда: България
Благодарил (а): 41 раз.
Поблагодарили: 2 раз.

Re: Резет Скоре (Reset Score)

Сообщение 9iky6 » 12 май 2012, 16:31

koko76, попробуй вот этот вариант:

[pawn]
  1.  

  2. #include <amxmodx>

  3. #include <hamsandwich>

  4. #include <fakemeta>

  5. #include <fun>

  6.  

  7. #define PLUGIN  "Reset Score for HL"

  8. #define AUTHOR  "maeStro"

  9. #define VERSION         "v1.0"

  10.  

  11. new t_scoresave[33]             = {0,...}

  12. new ips[33][24]

  13. new sfrags[33]                          = {0,...}

  14. new sdeaths[33]                         = {0,...}

  15. new useretry[33]                        = {0,...}

  16.  

  17. new g_Spown_counter[33] = 0

  18.  

  19. new gi_Rs_Save

  20. new gi_Spown_counter

  21.  

  22. public plugin_init(){

  23.         register_plugin(PLUGIN,VERSION,AUTHOR)

  24.        

  25.         register_clcmd("say /resetscore",       "reset_score")

  26.         register_clcmd("say /rs",                       "reset_score")

  27.  

  28.         gi_Spown_counter        = register_cvar("amx_f_every_spowns",           "5")

  29.         gi_Rs_Save              = register_cvar("amx_reconnect_stime",          "20")

  30.  

  31.         RegisterHam(Ham_Spawn,"player","player_respawn")

  32.         register_event("TeamInfo","outspec","a")

  33. }

  34.  

  35. public player_respawn(id){

  36.         new iPlayer[32], iNum

  37.         get_players(iPlayer, iNum)

  38.  

  39.         for(new i; i < iNum; i++)

  40.         {

  41.                 g_Spown_counter[iPlayer[i]]++

  42.         }

  43. }

  44.  

  45. public reset_score(id){

  46.         if((g_Spown_counter[id] >= get_pcvar_num(gi_Spown_counter))||(get_user_flags(id)&ADMIN_LEVEL_B))

  47.         {

  48.                 set_user_frags(id, 0)

  49.                 set_user_deaths(id, 0)

  50.  

  51.                 new name[33]

  52.                 get_user_name(id, name, 32)

  53.                 client_print(0,print_chat,"^x04[AMXX] ^x03Игрок %s сбросил счет!", name)

  54.                 set_hudmessage(150, 150, 150, -1.0, 0.71, 2, 6.0, 3.0, 0.1, 1.5 )

  55.                 show_hudmessage(id, "%s, Вы успешно сбросили счет :-)", name)

  56.                 client_cmd(id, "spk fvox/bell")

  57.  

  58.                 g_Spown_counter[id] = 0

  59.                 }else{

  60.                  client_print(id,print_chat,"^x04[AMXX] ^x03Ввод данной команды станет доступен через %d возрождение",get_pcvar_num(gi_Spown_counter)-g_Spown_counter[id])

  61.         }

  62. }

  63.  

  64. public client_connect(id){

  65.         new ip[24]

  66.         get_user_ip(id,ip,23,0)

  67.  

  68.         new Float:nexTime = get_gametime()

  69.  

  70.         if(t_scoresave[id] <= nexTime)

  71.         {

  72.                 sfrags[id]              =0

  73.                 sdeaths[id]     =0

  74.                 useretry[id]    =0

  75.         }

  76. }

  77.  

  78. public outspec(){

  79.         new id=read_data(1)

  80.         if((useretry[id]==1) && (is_user_connected(id)))

  81.         {

  82.                 set_user_frags(id,sfrags[id])

  83.                 set_user_deaths(id,sdeaths[id])

  84.                 sfrags[id]              =0

  85.                 sdeaths[id]     =0

  86.                 useretry[id]    =0

  87.         }

  88.         return PLUGIN_CONTINUE

  89. }

  90.  

  91. public client_disconnect(id){

  92.         new maxstata = get_pcvar_num(gi_Rs_Save)

  93.  

  94.         new Float:theTime = get_gametime()

  95.         t_scoresave[id] = floatround(theTime) + maxstata

  96.         get_user_ip(id,ips[id],23,0)

  97.         {

  98.                 sfrags[id]      = get_user_frags(id)

  99.                 sdeaths[id]     = get_user_deaths(id)

  100.                 useretry[id]    =1

  101.         }

  102. }

  103.  

  104. stock set_user_deaths(const player, const deaths){

  105.         const m_iDeaths = 377

  106.         static msgidScoreInfo

  107.  

  108.         if(msgidScoreInfo || (msgidScoreInfo=get_user_msgid("ScoreInfo")))

  109.         {

  110.                 set_pdata_int(player, m_iDeaths, deaths)

  111.                 message_begin(MSG_BROADCAST, msgidScoreInfo)

  112.                 write_byte(player)

  113.                 write_short(get_user_frags(player))

  114.                 write_short(deaths)

  115.                 write_short(0)

  116.                 write_short(get_user_team(player))

  117.                 message_end()

  118.         }

  119. }

  120.  
[/pawn]

Скажешь потом какие ошибки были.
Аватара пользователя
9iky6
 
Сообщения: 2178
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 705 раз.

Re: Резет Скоре (Reset Score)

Сообщение smurfavr » 12 май 2012, 18:21

Теперь работает отлично.Существует небольшая проблема
Игроки могут бесконечно сбрасывается в ноль счет
Разве только 2 раза в карту можно сбросить до нуля
Другая проблема состоит в этикетки

Вы должны зарегистрироваться, чтобы видеть ссылки.






Форум за HALF LIFE
http://smurfa.bulgarianforum.net/
Аватара пользователя
smurfavr
 
Сообщения: 71
Зарегистрирован: 02 авг 2011, 20:03
Откуда: България
Благодарил (а): 41 раз.
Поблагодарили: 2 раз.

Re: Резет Скоре (Reset Score)

Сообщение smurfavr » 12 май 2012, 18:22

Теперь работает отлично.Существует небольшая проблема
Игроки могут бесконечно сбрасывается в ноль счет
Разве только 2 раза в карту можно сбросить до нуля
Другая проблема состоит в этикетки

Вы должны зарегистрироваться, чтобы видеть ссылки.






Форум за HALF LIFE
http://smurfa.bulgarianforum.net/
Аватара пользователя
smurfavr
 
Сообщения: 71
Зарегистрирован: 02 авг 2011, 20:03
Откуда: България
Благодарил (а): 41 раз.
Поблагодарили: 2 раз.

Re: Резет Скоре (Reset Score)

Сообщение 9iky6 » 12 май 2012, 19:08

[pawn]
  1.  

  2. #include <amxmodx>

  3. #include <hamsandwich>

  4. #include <fakemeta>

  5. #include <fun>

  6.  

  7. #define PLUGIN  "Reset Score for HL"

  8. #define AUTHOR  "maeStro"

  9. #define VERSION         "v1.0"

  10.  

  11. new t_scoresave[33]             = {0,...}

  12. new ips[33][24]

  13. new sfrags[33]                          = {0,...}

  14. new sdeaths[33]                         = {0,...}

  15. new useretry[33]                        = {0,...}

  16.  

  17. new g_Spown_counter[33] = 0

  18.  

  19. new gi_Rs_Save

  20. new gi_Spown_counter

  21.  

  22. public plugin_init(){

  23.         register_plugin(PLUGIN,VERSION,AUTHOR)

  24.        

  25.         register_clcmd("say /resetscore",       "reset_score")

  26.         register_clcmd("say /rs",                       "reset_score")

  27.  

  28.         gi_Spown_counter        = register_cvar("amx_f_every_spowns",           "15")

  29.         gi_Rs_Save              = register_cvar("amx_reconnect_stime",          "20")

  30.  

  31.         RegisterHam(Ham_Spawn,"player","player_respawn")

  32.         register_event("TeamInfo","outspec","a")

  33. }

  34.  

  35. public player_respawn(id){

  36.         new iPlayer[32], iNum

  37.         get_players(iPlayer, iNum)

  38.  

  39.         for(new i; i < iNum; i++)

  40.         {

  41.                 g_Spown_counter[iPlayer[i]]++

  42.         }

  43. }

  44.  

  45. public reset_score(id){

  46.         if((g_Spown_counter[id] >= get_pcvar_num(gi_Spown_counter))||(get_user_flags(id)&ADMIN_LEVEL_B))

  47.         {

  48.                 set_user_frags(id, 0)

  49.                 set_user_deaths(id, 0)

  50.  

  51.                 new name[33]

  52.                 get_user_name(id, name, 32)

  53.                 client_print(0,print_chat,"^x04[AMXX] ^x03Player %s dropped by!", name)

  54.                 set_hudmessage(150, 150, 150, -1.0, 0.71, 2, 6.0, 3.0, 0.1, 1.5 )

  55.                 show_hudmessage(id, "%s, You've successfully dropped by :-)", name)

  56.                 client_cmd(id, "spk fvox/bell")

  57.  

  58.                 g_Spown_counter[id] = 0

  59.                 }else{

  60.                  client_print(id,print_chat,"^x04[AMXX] ^x03Entering this command will be available through the %d reborn",get_pcvar_num(gi_Spown_counter)-g_Spown_counter[id])

  61.         }

  62. }

  63.  

  64. public client_connect(id){

  65.         new ip[24]

  66.         get_user_ip(id,ip,23,0)

  67.  

  68.         new Float:nexTime = get_gametime()

  69.  

  70.         if(t_scoresave[id] <= nexTime)

  71.         {

  72.                 sfrags[id]              =0

  73.                 sdeaths[id]     =0

  74.                 useretry[id]    =0

  75.         }

  76. }

  77.  

  78. public outspec(){

  79.         new id=read_data(1)

  80.         if((useretry[id]==1) && (is_user_connected(id)))

  81.         {

  82.                 set_user_frags(id,sfrags[id])

  83.                 set_user_deaths(id,sdeaths[id])

  84.                 sfrags[id]              =0

  85.                 sdeaths[id]     =0

  86.                 useretry[id]    =0

  87.         }

  88.         return PLUGIN_CONTINUE

  89. }

  90.  

  91. public client_disconnect(id){

  92.         new maxstata = get_pcvar_num(gi_Rs_Save)

  93.  

  94.         new Float:theTime = get_gametime()

  95.         t_scoresave[id] = floatround(theTime) + maxstata

  96.         get_user_ip(id,ips[id],23,0)

  97.         {

  98.                 sfrags[id]      = get_user_frags(id)

  99.                 sdeaths[id]     = get_user_deaths(id)

  100.                 useretry[id]    =1

  101.         }

  102. }

  103.  

  104. stock set_user_deaths(const player, const deaths){

  105.         const m_iDeaths = 377

  106.         static msgidScoreInfo

  107.  

  108.         if(msgidScoreInfo || (msgidScoreInfo=get_user_msgid("ScoreInfo")))

  109.         {

  110.                 set_pdata_int(player, m_iDeaths, deaths)

  111.                 message_begin(MSG_BROADCAST, msgidScoreInfo)

  112.                 write_byte(player)

  113.                 write_short(get_user_frags(player))

  114.                 write_short(deaths)

  115.                 write_short(0)

  116.                 write_short(get_user_team(player))

  117.                 message_end()

  118.         }

  119. }

  120.  
[/pawn]

Поменял перевод на Английский. Добавил колличество возрождений, после которого можно сбросить счет. Проверь.
Аватара пользователя
9iky6
 
Сообщения: 2178
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 705 раз.

Пред.След.

Вернуться в Неутвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1