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

Резет Скоре + (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 раз.
Поблагодарили: 702 раз.

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

Сообщение smurfavr » 08 июн 2012, 18:45

ошибка HL Reset Score v2.0






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

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

Сообщение smurfavr » 13 июн 2012, 11:32

Код: Выделить всё
 
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
 
#define PLUGIN  "Reset Score for HL"
#define AUTHOR  "maeStro"
#define VERSION         "v1.0"
 
new t_scoresave[33]             = {0,...}
new ips[33][24]
new sfrags[33]                          = {0,...}
new sdeaths[33]                         = {0,...}
new useretry[33]                        = {0,...}
 
new g_Spown_counter[33] = 0
 
new gi_Rs_Save
new gi_Spown_counter
 
public plugin_init(){
        register_plugin(PLUGIN,VERSION,AUTHOR)
       
        register_clcmd("say /resetscore",       "reset_score")
        register_clcmd("say /rs",                       "reset_score")
 
        gi_Spown_counter        = register_cvar("amx_f_every_spowns",           "10")
        gi_Rs_Save              = register_cvar("amx_reconnect_stime",          "20")
 
        RegisterHam(Ham_Spawn,"player","player_respawn")
        register_event("TeamInfo","outspec","a")
}
 
public player_respawn(id){
        new iPlayer[32], iNum
        get_players(iPlayer, iNum)
 
        for(new i; i < iNum; i++)
        {
                g_Spown_counter[iPlayer[i]]++
        }
}
 
public reset_score(id){
        if((g_Spown_counter[id] >= get_pcvar_num(gi_Spown_counter))||(get_user_flags(id)&ADMIN_LEVEL_B))
        {
                set_user_frags(id, 0)
                set_user_deaths(id, 0)
 
                new name[33]
                get_user_name(id, name, 32)
                client_print(0,print_chat,"^x04[AMXX] ^x03Player %s has reset his score!", name)
                set_hudmessage(150, 150, 150, -1.0, 0.71, 2, 6.0, 3.0, 0.1, 1.5 )
                show_hudmessage(id, "%s, You have successfully reset your score :-)", name)
                client_cmd(id, "spk fvox/bell")
 
                g_Spown_counter[id] = 0
                }else{
                 client_print(id,print_chat,"^x04[AMXX] ^x03 this command will be available through,the %d reborn",get_pcvar_num(gi_Spown_counter)-g_Spown_counter[id])
        }
}
 
public client_connect(id){
        new ip[24]
        get_user_ip(id,ip,23,0)
 
        new Float:nexTime = get_gametime()
 
        if(t_scoresave[id] <= nexTime)
        {
                sfrags[id]              =0
                sdeaths[id]     =0
                useretry[id]    =0
        }
}
 
public outspec(){
        new id=read_data(1)
        if((useretry[id]==1) && (is_user_connected(id)))
        {
                set_user_frags(id,sfrags[id])
                set_user_deaths(id,sdeaths[id])
                sfrags[id]              =0
                sdeaths[id]     =0
                useretry[id]    =0
        }
        return PLUGIN_CONTINUE
}
 
public client_disconnect(id){
        new maxstata = get_pcvar_num(gi_Rs_Save)
 
        new Float:theTime = get_gametime()
        t_scoresave[id] = floatround(theTime) + maxstata
        get_user_ip(id,ips[id],23,0)
        {
                sfrags[id]      = get_user_frags(id)
                sdeaths[id]     = get_user_deaths(id)
                useretry[id]    =1
        }
}
 
stock set_user_deaths(const player, const deaths){
        const m_iDeaths = 377
        static msgidScoreInfo
 
        if(msgidScoreInfo || (msgidScoreInfo=get_user_msgid("ScoreInfo")))
        {
                set_pdata_int(player, m_iDeaths, deaths)
                message_begin(MSG_BROADCAST, msgidScoreInfo)
                write_byte(player)
                write_short(get_user_frags(player))
                write_short(deaths)
                write_short(0)
                write_short(get_user_team(player))
                message_end()
        }
}
 
 


Существует ошибка TEAM Плай сервер в счет rekonekt остается, как это было






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

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

Сообщение 9iky6 » 13 июн 2012, 12:04

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 ips[33][24]

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

  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",           "10")

  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 has reset his score!", 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 have successfully reset your score :-)", 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 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.                 g_Spown_counter[id] = 100

  73.                 sfrags[id]              =0

  74.                 sdeaths[id]             =0

  75.                 useretry[id]            =0

  76.         }

  77. }

  78.  

  79. public outspec(){

  80.         new id=read_data(1)

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

  82.         {

  83.                 set_user_frags(id,sfrags[id])

  84.                 set_user_deaths(id,sdeaths[id])

  85.                 sfrags[id]              =0

  86.                 sdeaths[id]             =0

  87.                 useretry[id]            =0

  88.         }

  89.         return PLUGIN_CONTINUE

  90. }

  91.  

  92. public client_disconnect(id){

  93.         new maxstata = get_pcvar_num(gi_Rs_Save)

  94.  

  95.         new Float:theTime = get_gametime()

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

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

  98.         {

  99.                 sfrags[id]              = get_user_frags(id)

  100.                 sdeaths[id]     = get_user_deaths(id)

  101.                 useretry[id]            =1

  102.         }

  103. }

  104.  

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

  106.         const m_iDeaths = 377

  107.         static msgidScoreInfo

  108.  

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

  110.         {

  111.                 set_pdata_int(player, m_iDeaths, deaths)

  112.                 message_begin(MSG_BROADCAST, msgidScoreInfo)

  113.                 write_byte(player)

  114.                 write_short(get_user_frags(player))

  115.                 write_short(deaths)

  116.                 write_short(0)

  117.                 write_short(get_user_team(player))

  118.                 message_end()

  119.         }

  120. }

  121.  
[/pawn]

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

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

Сообщение smurfavr » 13 июн 2012, 13:39

При нулевых результатов из сервера и снова войти в систему, в результате старые. Он не опирается, это только team play game

Вы должны зарегистрироваться, чтобы видеть ссылки.
при reconnect score i deatsh быть старый






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

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

Сообщение 9iky6 » 13 июн 2012, 15:54

koko76, понял. Это не ошибка, это специально так было сделано, чтобы игроки не сбрасывали счет рекконектом. Вот версия без этого.

[pawn]
  1. #include <amxmodx>

  2. #include <hamsandwich>

  3. #include <fakemeta>

  4. #include <fun>

  5.  

  6. #define PLUGIN          "Reset Score for HL"

  7. #define AUTHOR          "maeStro"

  8. #define VERSION         "v1.0"

  9.  

  10. new g_Spown_counter[33] = 0

  11.  

  12. new gi_Spown_counter

  13.  

  14. public plugin_init(){

  15.         register_plugin(PLUGIN,VERSION,AUTHOR)

  16.        

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

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

  19.  

  20.         gi_Spown_counter                = register_cvar("amx_f_every_spowns",           "10")

  21.  

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

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

  24. }

  25.  

  26. public player_respawn(id){

  27.         new iPlayer[32], iNum

  28.         get_players(iPlayer, iNum)

  29.  

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

  31.         {

  32.                 g_Spown_counter[iPlayer[i]]++

  33.         }

  34. }

  35.  

  36. public reset_score(id){

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

  38.         {

  39.                 set_user_frags(id, 0)

  40.                 set_user_deaths(id, 0)

  41.  

  42.                 new name[33]

  43.                 get_user_name(id, name, 32)

  44.                 client_print(0,print_chat,"^x04[AMXX] ^x03Player %s has reset his score!", name)

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

  46.                 show_hudmessage(id, "%s, You have successfully reset your score :-)", name)

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

  48.  

  49.                 g_Spown_counter[id] = 0

  50.                 }else{

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

  52.         }

  53. }

  54.  

  55. public client_connect(id){

  56.         g_Spown_counter[id] = 100

  57. }

  58.  

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

  60.         const m_iDeaths = 377

  61.         static msgidScoreInfo

  62.  

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

  64.         {

  65.                 set_pdata_int(player, m_iDeaths, deaths)

  66.                 message_begin(MSG_BROADCAST, msgidScoreInfo)

  67.                 write_byte(player)

  68.                 write_short(get_user_frags(player))

  69.                 write_short(deaths)

  70.                 write_short(0)

  71.                 write_short(get_user_team(player))

  72.                 message_end()

  73.         }

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

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

Сообщение smurfavr » 13 июн 2012, 17:40

Спасибо, теперь работает, как хотелось :thumbs_up






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

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

Сообщение smurfavr » 13 июн 2012, 17:57

ошибка в конзоле
isplaying debug trace (plugin "Reset_Score_for_HL.amxx")
L 06/13/2012 - 16:56:08: [AMXX] Run time error 19: function not found
L 06/13/2012 - 16:56:08: [AMXX] [0] phpBUqfCd.sma::plugin_init (line 23)






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

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

Сообщение 9iky6 » 13 июн 2012, 18:00

koko76, просто в плагине зарегистрирована функция, у которой нет действий. Забыл стереть :-[

[pawn]
  1. #include <amxmodx>

  2. #include <hamsandwich>

  3. #include <fakemeta>

  4. #include <fun>

  5.  

  6. #define PLUGIN          "Reset Score for HL"

  7. #define AUTHOR          "maeStro"

  8. #define VERSION         "v1.0"

  9.  

  10. new g_Spown_counter[33] = 0

  11.  

  12. new gi_Spown_counter

  13.  

  14. public plugin_init(){

  15.         register_plugin(PLUGIN,VERSION,AUTHOR)

  16.        

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

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

  19.  

  20.         gi_Spown_counter                = register_cvar("amx_f_every_spowns",           "10")

  21.  

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

  23. }

  24.  

  25. public player_respawn(id){

  26.         new iPlayer[32], iNum

  27.         get_players(iPlayer, iNum)

  28.  

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

  30.         {

  31.                 g_Spown_counter[iPlayer[i]]++

  32.         }

  33. }

  34.  

  35. public reset_score(id){

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

  37.         {

  38.                 set_user_frags(id, 0)

  39.                 set_user_deaths(id, 0)

  40.  

  41.                 new name[33]

  42.                 get_user_name(id, name, 32)

  43.                 client_print(0,print_chat,"^x04[AMXX] ^x03Player %s has reset his score!", name)

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

  45.                 show_hudmessage(id, "%s, You have successfully reset your score :-)", name)

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

  47.  

  48.                 g_Spown_counter[id] = 0

  49.                 }else{

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

  51.         }

  52. }

  53.  

  54. public client_connect(id){

  55.         g_Spown_counter[id] = 100

  56. }

  57.  

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

  59.         const m_iDeaths = 377

  60.         static msgidScoreInfo

  61.  

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

  63.         {

  64.                 set_pdata_int(player, m_iDeaths, deaths)

  65.                 message_begin(MSG_BROADCAST, msgidScoreInfo)

  66.                 write_byte(player)

  67.                 write_short(get_user_frags(player))

  68.                 write_short(deaths)

  69.                 write_short(0)

  70.                 write_short(get_user_team(player))

  71.                 message_end()

  72.         }

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

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

Сообщение smurfavr » 13 июн 2012, 18:10

спасибо






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

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

Сообщение Maxim995 » 21 июн 2012, 14:00

Скинте какий инклюд нужен у меня при компиляции ошибка
Аватара пользователя
Maxim995
 
Сообщения: 98
Зарегистрирован: 18 дек 2011, 00:46
Забанен
Благодарил (а): 63 раз.
Поблагодарили: 2 раз.

Пред.След.

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

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

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