Собственные Clan Privileges

 
+
-
edit
 

Ene_ECL

новичок
Примерно месяц занимаюсь сервером ЛА2, сборка Балансёра. Примерно месяц стоит сервер в локалке диалапной. С недавних пор игроки начали стонать: не работают привилегии в кланах. Начал проверять сам, дома. Скачал свежую сборку, запустился, создал 2 аккаунта, два чара, один клан, вошёл в клан чаром. Нажимаю alt+n клан-лидером, в списке новый член есть, нажимаю кнопку "Привелегии", выводится список моих привелегий. Выделяю в списке члена клана, нажимаю "Авторизация"(у меня "руссифицированный" клиент) - пишет: "Цель не найдена в мире" и предлагает нажать "ОК". Нажимаю, повторяю - то же самое. Рестарт сервера и клиентов не помог. Тогда я решил, что у разработчиков дел и так хватает, поэтому напишу сам. Сел, писал часов 6 убил - первый опыт "игры" на Форте. Получилась такая вещица:
code text
  1.  Change clan priveleges
  2.  
  3.  called as ".privs"
  4.  
  5. : bypass_privs  ( "Clan" -- )  
  6.  
  7.         1 args                                                                                           указыаем число аргументов (???)
  8.         int                                                                                                      делаем из строкового аргумента численный
  9.         DUP                                                                                                      копируем его
  10.         0                                                                                                        нижний предел
  11.         1024                                                                                                     верхний предел
  12.         WITHIN                                                                                           проверяем, входит ли число(аргумент) в наши пределы
  13.         IF                                                                                                       если?
  14.                 "into diapazon" show                                                                     "входит"
  15.  
  16.                 clan-leader?                                                                             проверяем вызывающего слово на лидера клана
  17.                         if                                                                                       если?
  18.                                 "clan leader OK" show                                                    "лидер, точно"
  19.                                 "select clanid from characters where char_name like '"   вписываем первую половину Мускул запроса
  20.                                 player@ "Name" p@ >slashes s+                                    выбираем имя вызывавшего
  21.                                 "';" s+ parse query                                                      заканчиваем запрос
  22.                                 drop                                                                             скидываем со стека нолик
  23.                                 player@                                                                  выбираем идентификатор плеера
  24.                                 target@ "Name" p@                                                        считываем имя цели вызывавшего
  25.                                 "select clanid from characters where char_name like '"   первая половина запроса
  26.                                 swap                                                                             меняем местами элементы стека, чтобы подсунуть имя цели в середину запроса
  27.                                 >slashes                                                                         ??
  28.                                 s+                                                                               клеим строку, как я понял
  29.                                 "';" s+ parse query                                                      заканчиваем запрос
  30.                                 drop                                                                             дропаем нолик со стека
  31.                                         = if                                                                     сравнивает clanid двух чаров - вызывавшего и указанного
  32.                                                 "Change Clan Privileges Successfull" show        "успех"
  33.                                                 player@ target@                                                  выбираем цель
  34.                                                 "setClanPrivileges" { int.class } jexec                  записываем цели привилегии клана
  35.                                                 player@ target@                                                  выбираем цель
  36.                                                 "store" 0 jexec                                                  сохраняем значения в БД
  37.                                                 else
  38.                                                 "Not your clan member!" show                             облом
  39.                                         then
  40.                                 else
  41.                                 "You are not clan leader" show                                   облом
  42.                         then
  43.                 else                           
  44.                 "Input number is incorrect" show                                                         облом
  45.         then
  46. ;
  47.  
  48.  
  49. : user_privs                                                                                     далее я делал "по подобию" поэтому не объясню :) -- мне бы кто объяснил
  50.         '<font color="LEVEL">Target a clan member and choose privileges for him:</font>'       
  51.         '<table width=250>' s+ 
  52.         '<tr><td><a action="bypass -h jbf_privs 0 "><font color="LEVEL">None Rights</font></a></td></tr>' s+
  53.         '<tr><td><a action="bypass -h jbf_privs 1 "><font color="LEVEL">Join a Clan</font></a></td></tr>' s+
  54.         '<tr><td><a action="bypass -h jbf_privs 2 "><font color="LEVEL">Give a Title</font></a></td></tr>' s+
  55.         '<tr><td><a action="bypass -h jbf_privs 4 "><font color="LEVEL">Viewing the Contents of a Warehouse</font></a></td></tr>' s+
  56.         '<tr><td><a action="bypass -h jbf_privs 8 "><font color="LEVEL">Registration of a Clans Crest</font></a></td></tr>' s+
  57.         '<tr><td><a action="bypass -h jbf_privs 16 "><font color="LEVEL">Open a Door</font></a></td></tr>' s+
  58.         '<tr><td><a action="bypass -h jbf_privs 32 "><font color="LEVEL">Other Clan Hall Rights</font></a></td></tr>' s+
  59.         '<tr><td><a action="bypass -h jbf_privs 64 "><font color="LEVEL">Dismiss(Clan Hall)</font></a></td></tr>' s+
  60.         '<tr><td><a action="bypass -h jbf_privs 128 "><font color="LEVEL">Opening a Door</font></a></td></tr>' s+
  61.         '<tr><td><a action="bypass -h jbf_privs 256 "><font color="LEVEL">Other Castle Rights</font></a></td></tr>' s+
  62.         '<tr><td><a action="bypass -h jbf_privs 512 "><font color="LEVEL">Dismiss(Castle)</font></a></td></tr>' s+
  63.         '<tr><td><a action="bypass -h jbf_privs 1023 "><font color="LEVEL">All Rights</font></a></td></tr></table>' s+
  64.        
  65.        
  66.         show
  67. ;


Протестил, обрадовался, понравилось... Визжал как поросёнок. Однако сразу же обнаружил, что кнопка "Авторизация" тоже заработала... Задумался. Не могу понять: что повлияло на работоспособность кнопки "Авторизация"? Так как польза данного листинга для меня только как обучение, то я разместил комменты почти на всё - пусть другие учатся. Уважаемые "папы" Форта, раскритикуйте мой код, чтобы я увидел ошибки.
 

Beast

разработчик l2j-сервера
Привилегии не работают у тебя из-за клиента, я уже сталкивался с таким.
 
AD Реклама Google — средство выживания форумов :)
+
-
edit
 

Ene_ECL

новичок
Не отрицаю, однако почему неработающие привелегии до использования моего кода, начали работать после? И до сих пор работают... :)
Я не спец в ЛА2 - заниматься только начали. Вопрос: а папка system в клиенте "основная" ? Если качнуть 100% рабочую, может вылечиться??
З.Ы.: может кто-нить выложит данную папочку для скачивания? Спасибо.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru