| 
	 
	 
Здравствуйте, гость ( Вход | Регистрация )
 | 
	 
	 
			
			  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 байт )
Кол-во скачиваний: 221P.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 | 
 
 | 
Сейчас: 4.11.2025, 11:41 |