myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Greeting_in_OpChat, API2 | Пришёл/ушёл для администрации в ОпЧате

Теги
Нет тегов для показа
X-Sky
сообщение 8.10.2009, 18:05
Сообщение #1


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 352
Регистрация: 25.7.2009
Пользователь №: 3 960
Спасибо сказали: 73 раза




Название скрипта: Greeting in OpChat
Версия API: API2
Автор: X-Sky
Дата написания: 8.10.2009
Описание скрипта: Приветствие/прощание состава администрации в ОпЧате
Прикрепленный скрипт: Прикрепленный файл  Greeting_in_OpChat.lua ( 807 байт ) Кол-во скачиваний: 221


P.S. Поздравьте, мой первый написанный "с нуля" скрипт big_smile.gif По голове не бейте, если что не так victory.gif


Спасибо сказали:
Go to the top of the page
+Quote Post
 
Начать новую тему
Ответов
Артём
сообщение 8.10.2009, 18:16
Сообщение #2


Наруто на аваторке
***********

Группа: Пользователи
Сообщений: 2 606
Регистрация: 11.10.2008
Из: Харькова
Пользователь №: 771
Спасибо сказали: 774 раза




unhappy.gif а зачем в опчате это нужно?
Go to the top of the page
+Quote Post
X-Sky
сообщение 8.10.2009, 18:37
Сообщение #3


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 352
Регистрация: 25.7.2009
Пользователь №: 3 960
Спасибо сказали: 73 раза




Так, для удобства big_smile.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 8.10.2009, 18:44
Сообщение #4


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




поздравляю)))))
Go to the top of the page
+Quote Post
X-Sky
сообщение 8.10.2009, 18:45
Сообщение #5


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 352
Регистрация: 25.7.2009
Пользователь №: 3 960
Спасибо сказали: 73 раза




Спасибо, Wariner ;)
Go to the top of the page
+Quote Post
Setuper
сообщение 8.10.2009, 18:52
Сообщение #6


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Когда пишешь скрипт, нужно понимать за что отвечает каждая функция. Нужно писать скрипты как можно более оптимизированными.
Функция Core.GetUserAllData(tUser) бестолку вызывается, при этом нагружая хаб не столько из-за вызова, сколько из-за занесения данных в таблицу tUser.

Переменные sInMes и sOutMes следует сделать локальными, а не глобальными.

Переменные OpChat, sInMessages и sOutMessages также следует снабдить словом local, так как локальные переменные вызываются быстрее, чем глобальные.


Спасибо сказали:
Go to the top of the page
+Quote Post
Wariner
сообщение 8.10.2009, 18:52
Сообщение #7


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




А теперь комментарии в стиле Setuper`а )))

1) таблицы лучше сделать локальными + для удобства вынести в начало скрипта
2) мне тоже задавали этот вопрос:
зачем строчка
Код
Core.GetUserAllData(tUser)

3) не нужно вводить лишнюю переменную при этом ещё и глобальную!
вместо
Код
       sInMes = sInMessages[tUser.iProfile]
       if sInMes then

так
Код
if sInMessages[tUser.iProfile] then

4) не
Код
Core.SendPmToOps(""..OpChat.."", ""..sOutMes.." "..tUser.sNick..";)")

а так
Код
Core.SendPmToOps(OpChat, ("%s %s;)"):format(sOutMes, tUser.sNick))




upd: ну вот я и не успел xDDD


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 8.10.2009, 18:53
Сообщение #8


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Если придерживаешься Венгерской нотации, то переменные нужно писать соответствующим образом: sOpChat, tInMessages, tOutMessages

Интересно из какого скрипта пошла такая петрушка с обрамлением переменной пустыми строками: ""..OpChat.."" ?
Ведь тут не только 2 лишние конкатенации, но и пустые строки "" будут каждый раз выделять под себя память.


Спасибо сказали:
Go to the top of the page
+Quote Post
X-Sky
сообщение 8.10.2009, 18:57
Сообщение #9


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 352
Регистрация: 25.7.2009
Пользователь №: 3 960
Спасибо сказали: 73 раза




Спасибо за советы, парни! big_smile.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 8.10.2009, 18:59
Сообщение #10


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




поправь и перезалей ;)
Go to the top of the page
+Quote Post
X-Sky
сообщение 8.10.2009, 19:36
Сообщение #11


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 352
Регистрация: 25.7.2009
Пользователь №: 3 960
Спасибо сказали: 73 раза




вместо
Код
sInMes = sInMessages[tUser.iProfile]
if sInMes then

так
Код
if sInMessages[tUser.iProfile] then

- не работает, приветствия не выводятся, а так, всё исправил, перезалил в первый пост big_smile.gif
Всем ещё раз спасибо за помощь big_smile.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 8.10.2009, 20:28
Сообщение #12


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Функцию Core.GetUserAllData(tUser) так и не убрал.

Могу сказать одно, разработчики хаба пытались снизить затраты на выполнения скриптов, однако, на мой взгляд, до конца не снизили их, и оставили в таблице часто используемые поля: sNick, sIP, iProfile, хотя для наилучшей оптимизации программист в скрипте сам должен выбирать какие необходимые поля должна содержать таблица.

Думаю должно быть так:
Код
local sOpChat = "[Chat]OpChat"
local tInMessages = {
  [0] = "Пришёл админ",
  [1] = "Пришёл оператор",
}

function UserConnected(tUser)
  if tInMessages[tUser.iProfile] then
    Core.SendPmToOps(sOpChat, ("%s %s;)"):format(tInMessages[tUser.iProfile], tUser.sNick))
  end
end

local tOutMessages = {
  [0] = "Ушёл админ",
  [1] = "Ушёл оператор",
}

function UserDisconnected(tUser)
  if tOutMessages[tUser.iProfile] then
    Core.SendPmToOps(sOpChat, ("%s %s;)"):format(tOutMessages[tUser.iProfile], tUser.sNick))
  end
end

OpConnected, RegConnected = UserConnected, UserConnected
OpDisconnected, RegDisconnected = UserDisconnected, UserDisconnected


Спасибо сказали:
Go to the top of the page
+Quote Post
X-Sky
сообщение 9.10.2009, 7:30
Сообщение #13


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 352
Регистрация: 25.7.2009
Пользователь №: 3 960
Спасибо сказали: 73 раза




Исправил, перезалил big_smile.gif
Ещё раз спасибо спасибо за помощь, Setuper
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
Moved Greeting_in_OpChat
API2 | Пришёл/ушёл для администрации в ОпЧате
0 X-Sky 0 9.10.2009, 7:30 Посл. сообщение: X-Sky

 



RSS Сейчас: 27.11.2024, 3:48