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

Резет Скоре + (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
 
Сообщения: 2174
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 707 раз.

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

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

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

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

Сообщение kenZZo » 06 май 2012, 23:50

А сделай если можещ, тогда в антиреконннект.амхх не будет пользы)))
Аватара пользователя
kenZZo
 
Сообщения: 23
Зарегистрирован: 05 май 2012, 14:09
Благодарил (а): 9 раз.
Поблагодарили: 3 раз.

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

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

Может кто-то посмотрит и увидит: поскажите, 1 раз делал ограничение на раунды, и такая ошибка: ограничивает всех игроков! А не 1. :( Я знаю, что надо вписать (id), но не пойму куда именно.

Нужная часть кода:
[pawn]
  1.  

  2. public reset_score(id)

  3. {

  4.         if(g_Round_counter >= get_cvar_num("amx_f_every_rounds"))

  5.         {

  6.          set_user_frags(id, 0)

  7.          cs_set_user_deaths(id, 0)

  8.  

  9.          new name[33]

  10.          get_user_name(id, name, 32)

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

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

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

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

  15.  

  16.          g_Round_counter = 0

  17.         }

  18.         else

  19.         {

  20.         client_print(id,print_chat,"[AMXX] Ввод данной команды станет доступен через %d раунд(а)",get_cvar_num("amx_f_every_rounds")-g_Round_counter)

  21.     }

  22. }

  23.  
[/pawn]

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

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

Сообщение vinipux » 07 май 2012, 19:46

[pawn]
  1. new g_Round_counter
[/pawn]
->
[pawn]
  1. new g_Round_counter[33]
[/pawn]

[pawn]
  1. if(g_Round_counter >= get_cvar_num("amx_f_every_rounds"))
[/pawn]
->
[pawn]
  1. if(g_Round_counter[id] >= get_cvar_num("amx_f_every_rounds"))
[/pawn]

[pawn]
  1. g_Round_counter = 0
[/pawn]
->
[pawn]
  1. g_Round_counter[id] = 0
[/pawn]

[pawn]
  1.         client_print(id,print_chat,"[AMXX] Ввод данной команды станет доступен через %d раунд(а)",get_cvar_num("amx_f_every_rounds")-g_Round_counter)
[/pawn]
->
[pawn]
  1.         client_print(id,print_chat,"[AMXX] Ввод данной команды станет доступен через %d раунд(а)",get_cvar_num("amx_f_every_rounds")-g_Round_counter[id])
[/pawn]

Наконец-то открыл мониторинг с masterserver'ом
http://mon.cs-niceserv.ru

Добавляем свои сервера!
Написание плагинов на заказ.
Скайп vinipux1112
Аватара пользователя
vinipux
 
Сообщения: 1361
Зарегистрирован: 24 сен 2011, 21:13
Благодарил (а): 59 раз.
Поблагодарили: 418 раз.
Опыт программирования: Около года
Языки программирования: ╔═══════════════╗
║Counter-Strike 1.6
║Delphi 7
║VHE
║MilkShape3D(Чучуть)
╚═══════════════╝

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

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

vinipux, попробовал твой вариант, +поискал в интернете, разобрался, дописал код :yahoo: Побежал тестировать, спасибо :yes:
Аватара пользователя
9iky6
 
Сообщения: 2174
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 707 раз.

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

Сообщение vinipux » 07 май 2012, 20:32

g_Round_counter осталась без id.
Но т.к это plugin_init то там id нету.
Уберай квар...

Наконец-то открыл мониторинг с masterserver'ом
http://mon.cs-niceserv.ru

Добавляем свои сервера!
Написание плагинов на заказ.
Скайп vinipux1112
Аватара пользователя
vinipux
 
Сообщения: 1361
Зарегистрирован: 24 сен 2011, 21:13
Благодарил (а): 59 раз.
Поблагодарили: 418 раз.
Опыт программирования: Около года
Языки программирования: ╔═══════════════╗
║Counter-Strike 1.6
║Delphi 7
║VHE
║MilkShape3D(Чучуть)
╚═══════════════╝

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

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

vinipux, квар оставил, просто пришлось его переименовать... Щас исправлю ещё 1 ошибку (уже незначительную) и выложу исходник.
Аватара пользователя
9iky6
 
Сообщения: 2174
Зарегистрирован: 30 янв 2012, 19:07
Откуда: Россия
Благодарил (а): 375 раз.
Поблагодарили: 707 раз.

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

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

vinipux, я наверное просто гений :-D Теперь при заходе в игру 3 раунда нельзя ввести команду! Дальше плагин стабильно работает.

[pawn]
  1.  

  2. #include <amxmodx>

  3. #include <fun>

  4. #include <cstrike>

  5.  

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

  7. new ips[33][24]

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

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

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

  11.  

  12. new g_Round_counter[33]

  13.  

  14. new gi_Rs_Save

  15. new gi_Round_counter

  16.  

  17. public plugin_init()

  18. {

  19.         register_plugin("Reset Score", "2.0", "maeStro")

  20.        

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

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

  23.  

  24.         gi_Round_counter        = register_cvar("amx_f_every_rounds","3")

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

  26.  

  27.         register_event("HLTV", "RoundStart", "a", "1=0", "2=0")

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

  29.        

  30. }

  31.  

  32. public RoundStart()

  33. {

  34.    new iPlayer[32], iNum

  35.    get_players(iPlayer, iNum)

  36.  

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

  38.     {

  39.     g_Round_counter[iPlayer[i]]++

  40.     }

  41. }

  42.  

  43. public reset_score(id)

  44. {

  45.         if(g_Round_counter[id] >= get_pcvar_num(gi_Round_counter))

  46.         {

  47.          set_user_frags(id, 0)

  48.          cs_set_user_deaths(id, 0)

  49.  

  50.          new name[33]

  51.          get_user_name(id, name, 32)

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

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

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

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

  56.  

  57.          g_Round_counter[id] = 0

  58.         }

  59.         else

  60.         {

  61.         client_print(id,print_chat,"[AMXX] Ввод данной команды станет доступен через %d раунд(а)",get_pcvar_num(gi_Round_counter)-g_Round_counter[id])

  62.     }

  63. }

  64.  

  65. public client_connect(id)

  66. {

  67.         new ip[24]

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

  69.  

  70.         new Float:nexTime = get_gametime()

  71.  

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

  73.         {

  74.          sdeaths[id]=0

  75.          sfrags[id]=0

  76.          useretry[id]=0

  77.         }

  78. }

  79.  

  80. public outspec()

  81. {

  82.  new id=read_data(1)

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

  84.  {

  85.   set_user_frags(id,sfrags[id])

  86.   cs_set_user_deaths(id,sdeaths[id])

  87.   useretry[id]=0

  88.   sdeaths[id]=0

  89.   sfrags[id]=0

  90.  }

  91.  return PLUGIN_CONTINUE

  92. }

  93.  

  94. public client_disconnect(id)

  95. {

  96.         new maxstata = get_pcvar_num(gi_Rs_Save)

  97.  

  98.         new Float:theTime = get_gametime()

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

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

  101.         {

  102.          sdeaths[id] = get_user_deaths(id)

  103.          sfrags[id] = get_user_frags(id)

  104.          useretry[id]=1

  105.         }

  106. }

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

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

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

будет работать на half life?






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

След.

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

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

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