Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ Префиксы Перед Ником

Автор: Infernus-pro 7.10.2008, 22:14

Подскажите пожалуйста как можно сделать такое правило на API 2 перед входом на хаб?

Цитата
[22:42:22] <PtokaX> Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)

Можно ли это сделать через саму Птоху? Если да то как?

я точно знаю что в птохе на API 1 это сделать можно но ненашел я этого на API 2 помогите пж

Автор: Nickolya 7.10.2008, 22:16

Вот по-быстрому тебе перевел скрипт inside'а на новый апи, диапазоны впиши свои.

 Префиксы___API_2___.lua ( 2.48 килобайт ) : 78
 

Автор: Infernus-pro 7.10.2008, 22:23

Большое спасибо Nickolya, возник вопрос, вот как сделать так чтобы юзер обязательно ставил цифру его микрарайона а то поставит МК и все, а цифру нет.

Код
PreFixEs = {
["MK-"] =
    {
    ["For"] = "0.0.0.0",
    ["To"] = "255.255.255.255",
    },
}

Автор: Nickolya 7.10.2008, 23:26

Если цифра зависит от ip, тогда тебе надо вбить все диапазоны в таблицу скрипта, если нет - то никак.

Автор: Infernus-pro 8.10.2008, 13:29

Все понял спасибо за объяснение.

Даже незнаю как они так сделали:

Цитата
[22:42:22] <PtokaX> Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)

и это стредствами самой Птохи 0.3.6.0, если смотреть тот скрипт от inside то в нем если поставишь вот так
Код
PreFixEs = {
["MK-"] =
    {
    ["For"] = "0.0.0.0",
    ["To"] = "255.255.255.255",
    },
}

то с цифрой определенного МК уже не зайти.... (( Даже незнаю как быть
Вот покажу скрин:

 

Автор: Nickolya 8.10.2008, 13:47

Попробуй написать не ["MK-"] а ["MK%-%d+"]

Автор: Infernus-pro 8.10.2008, 14:31

вот что вышло:

Цитата
[17:30:01] <[Bot]Leviathan> Ваш ник не соответствует правилам хаба! Поставьте префикс обязательно на английской раскладке [mk%-%d+] перед ником. Т.е. ваш ник должен будет выглядеть так: [mk%-%d+][mk-4]Infernus-pro
[17:30:01] *** Соединение закрыто

Автор: Setuper 8.10.2008, 14:51

Всё гораздо проще)))))
Там где ты на скрине показал у тебя было написано: ([[A-Z]{2}]) надо заменить на: (^\[MK\-[0-9]+\])
А в сообщение написать: "Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)".

Учи регулярные выражения и таких вопросов не возникнет))))))))))))))))))))

Автор: Infernus-pro 8.10.2008, 15:11

Цитата
Там где ты на скрине показал у тебя было написано: ([[A-Z]{2}]) надо заменить на: (^\[MK\-[0-9]+\])
А в сообщение написать: "Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)".

Мне это нужно все на API 2 а не на API 1 Провайдер попросил меня обновить хаб и выставить требование с префиксами этими......Вот и незнаю как на API 2 сделать то
и вот это :
Цитата
[22:42:22] <PtokaX> Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)

писал не я а генеральный директор big_smile.gif

Автор: Setuper 8.10.2008, 15:15

Код
function ValidateNickArrival(tUser)
  if not string.find(tUser.sNick,"^(%[MK%-%d+%])") then
    Core.SendToUser(tUser,"Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)")
    Core.Disconnect(tUser)
  end
end

Автор: Wariner 8.10.2008, 15:15

думаю надо сделать так

Код
PreFixEs = {
["MK-1"] =
    {
    ["For"] = "айпи1",
    ["To"] = "айпи2",
    },
}
["MK-2"] =
    {
    ["For"] = "айпи3",
    ["To"] = "айпи4",
    },
}

и т.д.

Автор: Infernus-pro 8.10.2008, 16:21

Это канечно хорошая идея но у меня нету диапазонов ВСЕХ Микрорайнов к сожалению

Может есть что нибудь полезно в этом скрипте чтобы создать правило для API 2 с префиксами?

 Nick_Prefix.lua ( 4.35 килобайт ) : 20
 

Автор: Wariner 8.10.2008, 17:44

Если ты не знаешь всех диапазонов то это не реально! Потому что если сделать как предлагают [mk-] то юзер будет выбирать цифру по своему усмотрению и тогда это будет только отводом глаз для твоего провайдера(если не найдётся умника который проверит сию функцию). А вообще если провайдер попросил тебя сделать такое обновление потребуй от них диапазонов!

Автор: Infernus-pro 8.10.2008, 19:25

Цитата
Если ты не знаешь всех диапазонов то это не реально! Потому что если сделать как предлагают [mk-] то юзер будет выбирать цифру по своему усмотрению и тогда это будет только отводом глаз для твоего провайдера

На ихнем хабе также можно выбрать любую цифру)) мне это пойдет но дело в том если ты ставишь [mk-] и вибираешь цифру например [mk-4] то пишет при входе на хаб что ваш ник должен выглядеть так [mk-]Infernus-pro и только)) И еще хотел спросить можно в этом скрипте сделатть исключения для Админов чтобы их ники непрефиксились?

Автор: Setuper 8.10.2008, 20:02

чем мой код не устраивает?
а админы наоборот должны пример подавать, зачем им делать какие то исключения?

Автор: Infernus-pro 8.10.2008, 20:35

Цитата
а админы наоборот должны пример подавать, зачем им делать какие то исключения?

Опять же этого не я хочу....

Автор: Nickolya 8.10.2008, 20:43

Илюх, ты забыл про запарку с ValidateNickArrival?

Код
tProfiles = { -- какие профили проверяем
    [2] = true,
    [3] = true,
    [-1] = true,
}

function UserConnected(tUser)
  if tProfiles[tUser.iProfile] and not string.find(tUser.sNick,"^(%[MK%-%d+%])") then
    Core.SendToUser(tUser,"Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK на английском языке)")
    Core.Disconnect(tUser)
  end
end
RegConnected = UserConnected
OpConnected = UserConnected

Автор: Setuper 8.10.2008, 20:55

Тогда уж вот так:

Код
tProfiles={ --какие профили проверяем
  [2]=true,
  [3]=true,
  [-1]=true,
}

function ValidateNickArrival(tUser)
  if tProfiles[tUser.iProfile] and not string.find(tUser.sNick,"^(%[[MmМм][KkКк]%-%d+%].+)") then
    Core.SendToUser(tUser,"Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш_ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках)")
    Core.Disconnect(tUser)
  end
end
UserConnected=ValidateNickArrival
RegConnected=ValidateNickArrival
OpConnected=ValidateNickArrival


Это более оптимизированно, так как функция ValidateNickArrival выполняется первой, а если клиент не поддерживает её выполнение, то будут выполняться функции UserConnected, RegConnected, OpConnected
big_smile.gif

Автор: Infernus-pro 9.10.2008, 14:01

Всем спасибо что помогли, отдельно спасибо Setuper big_smile.gif

Автор: chicha 12.11.2008, 16:17

А для 4 птоки что написать, чтоб админов и опов небыло проверки на ip, и ещё один баг:

CODE
["mar"] =
{
["For"] = "10.185.0.0",
["To"] = "10.185.96.250",
},
["boss"] =
{
["For"] = "10.185.96.251",
["To"] = "10.185.96.251",
},
["mar"] =
{
["For"] = "10.185.96.252",
["To"] = "10.185.255.255",

[boss] это прификс мой still_dreaming.gif , а вот User: [inet]Manan IP: 10.185.32.228 заходит с таким прификсом

Автор: Setuper 12.11.2008, 16:34

что-то не понял вопроса

Автор: chicha 12.11.2008, 17:04

Цитата(Setuper @ 12.11.2008, 16:34) *
что-то не понял вопроса

я перефразировал, посмотри его ещё раз

Автор: Setuper 12.11.2008, 17:18

чтобы не было проверки для админов и опов, достаточно первой строчкой в функции UserConnected написать

Код
if user.iProfile==0 or user.iProfile==1 then return end

Автор: chicha 12.11.2008, 17:43

сообщение удалено мною из-за моих кривых рук. Setuper спасибо за помощь!

Автор: Goblin 13.11.2008, 11:21

Как сделать чтобы он пускал все ники хоть они английские или русские.
Мне надо сделать чтобы он не пускал ники где цифры и все

Автор: Setuper 13.11.2008, 12:13

Код
function ValidateNickArrival(tUser)
  if string.find(tUser.sNick,"(%d)") then
    Core.Disconnect(tUser)
  end
end

Автор: epson950 14.11.2008, 14:55

Вопрос в догонку- а нельзя ли чтобы юзер себе ник не менял, а в списке при отображении добавлялся бы префикс прописаный в скрипте изходя из диапазона ip?

Автор: Setuper 14.11.2008, 14:56

Ответ нельзя!

Автор: Jesprit 21.12.2008, 20:26

Цитата(chicha @ 12.11.2008, 19:17) *
А для 4 птоки что написать, чтоб админов и опов небыло проверки на ip, и ещё один баг:
CODE
["mar"] =
{
["For"] = "10.185.0.0",
["To"] = "10.185.96.250",
},
["boss"] =
{
["For"] = "10.185.96.251",
["To"] = "10.185.96.251",
},
["mar"] =
{
["For"] = "10.185.96.252",
["To"] = "10.185.255.255",

[boss] это прификс мой still_dreaming.gif , а вот User: [inet]Manan IP: 10.185.32.228 заходит с таким прификсом

Все же баг есть.
Код
["OKC"] =
    {
    ["For"] = "217.25.208.0",
    ["To"] = "217.25.223.255",
    },
["OKC"] =
    {
    ["For"] = "94.137.0.0",
    ["To"] = "94.137.15.255",
    },
["dom.ru"] =
    {
    ["For"] = "94.181.0.0",
    ["To"] = "94.181.255.255",
    },

У одной сети два диапазона IP ..выдаться может любой и по этому у одного и того же префикса должны быть два диапазона ип.
Сейчас это выглядит так...при попытке подключения предлагает указать "внешний" префикс [ext], хотя должен быть [OKC]
..
как бы решить проблему?

Автор: Infernus-pro 28.12.2008, 12:58

Setuper, подскажи пожалуйста как можно запретить чтобы не ставили например это:
[MK-VIP],
ибо это не префикс микрорайона,
и вообще можно ли вносить исключения и можно ли их вывести через меню, ибо доступа к хабу нету?

 префикс.lua ( 639 байт ) : 14
 

Автор: Setuper 28.12.2008, 23:23

Код
local tExceptions = {
  "%[[MmМм][KkКк]%-[VvВв][IiИи][PpРрПп]%]",
  "%[[MmМм][KkКк]%-[OoОо][PpРрПп]%]"
}

function ValidateNickArrival(tUser)
  for i,v in ipairs(tExceptions) do
    if tUser.sNick:find(v) then
      Core.SendToUser(tUser,"Данный ник запрещён!")
      Core.Disconnect(tUser)
      return
    end
  end
  if tProfiles[tUser.iProfile] and not string.find(tUser.sNick,"^(%[[MmМм][KkКк]%-[%wАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя]+%].+)") then
    Core.SendToUser(tUser,"Ваш ник должен содержать префикс микрорайона [MK-цифра]Ваш ник, например [MK-1]Bomberman (префикс стоит в квадратных скобках и буквы MK - можно на русском либо на английском языке)")
    Core.Disconnect(tUser)
  end
end

Автор: Infernus-pro 28.12.2008, 23:57

щас проверю)
UPD спасибо работает замечательно big_smile.gif