AMX MOD X
Пятница, 03.05.2024, 01:18:14



Приветствую Вас Гость | RSS
[ Главная ] [ Почему не работает? - AMX Mod X Форум ] [ Регистрация ] [ Вход ]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/

  • Страница 1 из 1
  • 1
Модератор форума: slogic, AlMod  
AMX Mod X Форум » Плагины » Обсуждение сторонних плагинов » Почему не работает? (No reconnect)
Почему не работает?
RushДата: Среда, 22.11.2006, 23:47:05 | Сообщение # 1
Лейтенант
Группа: Пользователи
Сообщений: 51
Репутация: 1
Статус: Не в сети
Можете обеснить почему не работает вот это!!!
Какие модули для этова нужны?хотя у меня все они вкл.

Code
/* AMX Mod X script. 

* No reconnect
* (c) Copyright 2002, SYZo
* This file is provided as is (no warranties). 
*
* amx_minreconnecttime 20 (in seconds)
*
* *******************************************************************************
*  
*   Ported By KingPin( kingpinservers@gmail.com ). I take no responsibility 
*   for this file in any way. Use at your own risk. No warranties of any kind. 
*
* *******************************************************************************
*  Updated Feb 14 2006

*/ 

#include <amxmodx> 
#include <engine> 
#define MAX_PLAYERS 32

#define PLUGIN "No reconnect"
#define VERSION "2.11"
#define AUTHOR "SYZo" 

new pip[MAX_PLAYERS][22]
new Float:minreconnecttime

public delayed_kick(user[]) {
   server_cmd("kick #%d",user[0])
}

public clean_blackip(ind[]) {
   pip[ind[0]][0] = 0
}

public client_connect(id) {
   if (!is_user_bot(id)) {
 minreconnecttime = get_cvar_float("amx_minreconnecttime")
 new userip[21+1]
 new uname[33+1]
   get_user_ip(id, userip, 21, 0)
 get_user_name(id, uname, 33)
 for(new i = 1; i <= MAX_PLAYERS; i++) {
   if (equal(userip, pip[i], 21)) {
    new userid[1]
    userid[0] = get_user_userid(id)
    new authid[32]
    get_user_authid(id,authid,32)
    log_amx("^"%s<%s><%d><%s><>^"", uname, userip, get_user_userid(id), authid)
    if (!(get_user_flags(id)&ADMIN_IMMUNITY)) {
    new text[128]
    format(text, 128, "Player %s kicked after usage reconnect command", uname)
    set_hudmessage(255, 0, 0, 0.05, 0.70, 0, 5.0, 6.0, 6.0, 0.15, 3)
    show_hudmessage(0,"%s",text)
    client_cmd(id,"echo [AMXX] You used command RECONNECT within %f, please reconnect after %f sec", minreconnecttime)
    set_task(1.0,"delayed_kick",0,userid,1)
    }
    return PLUGIN_CONTINUE
   }
 }
   }
   return PLUGIN_CONTINUE
}

public client_disconnect(id) {
   if (!is_user_bot(id)) {
 for(new i = 1; i <= MAX_PLAYERS; i++) {
   if(pip[i][0] == 0) {
    new userip[21+1]
    get_user_ip(id, userip, 21, 0)
    copy(pip[i], 21, userip)
    new userid[1]
    userid[0] = i
    set_task(minreconnecttime, "clean_blackip", 0, userid[0], 1)
    return PLUGIN_CONTINUE
   }
 }
   }
   return PLUGIN_CONTINUE
}

public plugin_init() { 
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_cvar("amx_minreconnecttime","20")
   return PLUGIN_CONTINUE 
}



Сообщение отредактировал Rush - Среда, 22.11.2006, 23:48:21
 
VENДата: Четверг, 23.11.2006, 10:14:19 | Сообщение # 2
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Ты наверное слышал про dedicated.server.ru?
Впервые я встретил "No reconnect" by SYZo в разделе "Кузница софта" -> "AMX/X плагины", и вот что я тогда написал по этому поводу:

Quote
Наверное, я "слегка" припоздал с критикой кода плагина, но "лучше поздно, чем никогда".
Я не буду критиковать каждую строку кода, а лишь отмечу самое главное на мой взгляд.
Первое: критическая ошибка. Количество элементов массива "pip" должно быть не 32, а на один больше (32+1), т.к. первый элемент массива "pip[0]" не используется.
Второе: логическая ошибка. Предположим, что за время "amx_minreconnecttime" один или несколько клиентов попытались совершить реконнект "MAX_PLAYERS" раз, тогда все остальные клиенты смогут совершать реконнект как минимум в течение времени "amx_minreconnecttime". Это происходит потому, что плагин не делает проверку на присутствие в "блэк-листе" IP клиента, пытающегося присоединиться к серверу.
Третье: иммунитет не действует. Плагин проверяет наличие иммунитета клиента при попытке коннекта его на сервер ("client_connect(id)"), т.е. когда иммунитет еще не присвоен. Нужно использовать вместо функции "client_connect(id)" функцию "client_authorized(id)".
Четвертое: логическая ошибка. Плагин выдает при попытке реконнекта всегда одно и то же оставшееся время ожидания, не зависимо от того, сколько фактически времени осталось ждать.

Учитывая вышеизложенное, я решил написать подобный плагин "Reconnect Delay", который не имеет подобных ошибок.

Этот плагин был написан мной в первую очередь как достойная замена "No reconnect" by SYZo
Этот плагин действует так же, как и "No reconnect", но не содержит ошибок, указанных мной в теме, посвященной плагину "No reconnect".
Этот плагин использует более рациональную техническую идею: вместо функции задания ("set_task") используется функция игрового времени ("get_gametime"), что в свою очередь позволяет управлять минимальной задержкой реконнекта немедленно.

 
RushДата: Четверг, 23.11.2006, 14:39:12 | Сообщение # 3
Лейтенант
Группа: Пользователи
Сообщений: 51
Репутация: 1
Статус: Не в сети
Про dedicated.server.ru слышал вот тока я там не зарегин..... weep
Если не сложно можеш выложить этот плагин

Добавлено (2006-11-23, 2:39 Pm)
---------------------------------------------
а вот это незнаеш почему не работает??
http://forums.alliedmods.net/showthread.php?t=47109

 
VENДата: Четверг, 23.11.2006, 15:37:19 | Сообщение # 4
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Репутация: 45
Статус: Не в сети
Хех, у меня работает. CS1.6? CS:CZ? Что выдает по команде amxx plugins в серверной консоли? Подробней нужно описывать проблему, чтобы получить решение.

reconnectdelay.sma прикреплен снизу.

Прикрепления: 73707866.sma (4.0 Kb)
 
RushДата: Четверг, 23.11.2006, 18:00:45 | Сообщение # 5
Лейтенант
Группа: Пользователи
Сообщений: 51
Репутация: 1
Статус: Не в сети
Не всё работае извини что побиспокоил smile
И спасибо за плагин...


Сообщение отредактировал Rush - Четверг, 23.11.2006, 18:01:12
 
AMX Mod X Форум » Плагины » Обсуждение сторонних плагинов » Почему не работает? (No reconnect)
  • Страница 1 из 1
  • 1
Поиск:

AMX Mod X Russian Community © 2006-2024