Greeting_in_OpChat, API2 | Пришёл/ушёл для администрации в ОпЧате |
Здравствуйте, гость ( Вход | Регистрация )
Greeting_in_OpChat, API2 | Пришёл/ушёл для администрации в ОпЧате |
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. Поздравьте, мой первый написанный "с нуля" скрипт По голове не бейте, если что не так |
|
|
8.10.2009, 18:16
Сообщение
#2
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
а зачем в опчате это нужно?
|
|
|
8.10.2009, 18:37
Сообщение
#3
|
|
Освоившийся участник Группа: Модераторы Сообщений: 352 Регистрация: 25.7.2009 Пользователь №: 3 960 Спасибо сказали: 73 раза |
Так, для удобства
|
|
|
8.10.2009, 18:44
Сообщение
#4
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
поздравляю)))))
|
|
|
8.10.2009, 18:45
Сообщение
#5
|
|
Освоившийся участник Группа: Модераторы Сообщений: 352 Регистрация: 25.7.2009 Пользователь №: 3 960 Спасибо сказали: 73 раза |
Спасибо, Wariner ;)
|
|
|
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, так как локальные переменные вызываются быстрее, чем глобальные. |
|
|
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 |
|
|
8.10.2009, 18:53
Сообщение
#8
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Если придерживаешься Венгерской нотации, то переменные нужно писать соответствующим образом: sOpChat, tInMessages, tOutMessages
Интересно из какого скрипта пошла такая петрушка с обрамлением переменной пустыми строками: ""..OpChat.."" ? Ведь тут не только 2 лишние конкатенации, но и пустые строки "" будут каждый раз выделять под себя память. |
|
|
8.10.2009, 18:57
Сообщение
#9
|
|
Освоившийся участник Группа: Модераторы Сообщений: 352 Регистрация: 25.7.2009 Пользователь №: 3 960 Спасибо сказали: 73 раза |
Спасибо за советы, парни!
|
|
|
8.10.2009, 18:59
Сообщение
#10
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
поправь и перезалей ;)
|
|
|
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 - не работает, приветствия не выводятся, а так, всё исправил, перезалил в первый пост Всем ещё раз спасибо за помощь |
|
|
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 |
|
|
9.10.2009, 7:30
Сообщение
#13
|
|
Освоившийся участник Группа: Модераторы Сообщений: 352 Регистрация: 25.7.2009 Пользователь №: 3 960 Спасибо сказали: 73 раза |
Исправил, перезалил
Ещё раз спасибо спасибо за помощь, Setuper |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Greeting_in_OpChat API2 | Пришёл/ушёл для администрации в ОпЧате |
0 | X-Sky | 0 | 9.10.2009, 7:30 Посл. сообщение: X-Sky |
|
Сейчас: 27.11.2024, 3:35 |