| 
	 
	 
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]()  | 
	
 | 
	 
	 
			
			  19.5.2009, 19:38
			
				 Сообщение
					#1
					
				
			 
		 | 
	|
        	
				
					![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 134 Регистрация: 18.6.2008 Из: подземелье Пользователь №: 41 Спасибо сказали: 7 раз  | 
       
			
			 
				Собственно вот.. Пытался по примерам делать небольшой скрипт рекордов  
			
			
			
					
		CODE bot = SetMan.GetString(21) nTime = 30 -- время сохранения таблицы в минутах tHub = {} function OnStartup() sAway = Core.GetPtokaXPath().."scripts/silka1.txt" if loadfile(sAway) then dofile(sAway) end OnlineUsers = Core.GetOnlineUsers() OnlineShare = Core.GetCurrentSharedSize() tHub = {} tHub["MaxUsers"] = 0 tHub["MaxShare"] = 0 tHub["MaxUsersDate"] = 0 tHub["MaxShareDate"] = TmrMan.AddTimer(nTime*60000, "OnExit") end function OnExit() WriteTable(tHub, "tHub", sAway) end function UserConnected(user) Core.GetUserAllData(user) if tHub["MaxUsers"] < OnlineUsers then tHub["MaxUsers"] = OnlineUsers tHub["MaxUsersDate"] = os.date("[%H:%M-%d.%m.%y]") end if tHub["MaxShare"] < OnlineShare then tHub["MaxShare"] = OnlineShare tHub["MaxShareDate"] = os.date("[%H:%M-%d.%m.%y]") end end OpConnected = UserConnected RegConnected = UserConnected function WriteTable(tTable, tablename, file) local handle = io.open(file, "w") Serialize(tTable, tablename, handle) handle:close() end function Serialize(tTable, sTableName, hFile, sTab) sTab = sTab or ""; hFile:write(sTab..sTableName.." = {\n" ); for key, value in pairs(tTable) do local sKey = (type(key) == "string") and string.format("[%q]",key) or string.format("[%d]",key); if(type(value) == "table") then Serialize(value, sKey, hFile, sTab.."\t"); else local sValue = (type(value) == "string") and string.format("%q",value) or tostring(value); hFile:write(sTab.."\t"..sKey.." = "..sValue); end hFile:write(",\n"); end hFile:write(sTab.."}"); end 0.4.1.1\scripts\records.lua:31: attempt to compare number with table - вот такая штуковина... подскажите как правильно записать данные в таблицу.. а потом брать и использовать при необходимости  | 
	
| 
			
			 | 
	|
			
			  19.5.2009, 20:12
			
				 Сообщение
					#2
					
				
			 
		 | 
	|
        	
				
					![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз  | 
       
			
			 
				тут много ошибок! в основном даже просто в концепции скрипта! 
			
			
			
					
		начнём пожалуй с твоей написанной птокой ошибки: Код if tHub["MaxUsers"] < OnlineUsers then читая описание ошибки видим что tHub["MaxUsers"] даёт нам число а OnlineUsers даёт таблицу, смотрим почему: Код OnlineUsers = Core.GetOnlineUsers() читаем скрипт интерфейс Цитата Return table with all logged user tables. это означает что это нам даёт таблицу с юзерами на хабе а не их количество! поэтому надо так: Код OnlineUsers = Core.GetUsersCount() теперь о самом скрипте Код function OnStartup() sAway = Core.GetPtokaXPath().."scripts/silka1.txt" if loadfile(sAway) then dofile(sAway) end OnlineUsers = Core.GetOnlineUsers() OnlineShare = Core.GetCurrentSharedSize() tHub = {} tHub["MaxUsers"] = 0 tHub["MaxShare"] = 0 tHub["MaxUsersDate"] = 0 tHub["MaxShareDate"] = 0 TmrMan.AddTimer(nTime*60000, "OnExit") end тут ты загружаешь данные, а потом действием Код tHub = {} tHub["MaxUsers"] = 0 tHub["MaxShare"] = 0 tHub["MaxUsersDate"] = 0 tHub["MaxShareDate"] = 0 их обнуляешь! да и потом не рационально проверять рекорды при входе юзера! лучше делать это по таймеру! но если хочешь чтоб было именно так то вид будет такой: Код local bot = SetMan.GetString(21) 
				
				
				
			local nTime = 30 -- время сохранения таблицы в минутах tHub = {} function OnStartup() sAway = Core.GetPtokaXPath().."scripts/silka1.txt" if loadfile(sAway) then dofile(sAway) end if not TmrMan.AddTimer(nTime*60000, "OnExit") end function OnExit() WriteTable(tHub, "tHub", sAway) end function UserConnected(user) if not tHub["MaxUsers"] or tHub["MaxUsers"] < Core.GetUsersCount() then tHub["MaxUsers"] = Core.GetUsersCount() tHub["MaxUsersDate"] = os.date("[%H:%M-%d.%m.%y]") end if not tHub["MaxShare"] or tHub["MaxShare"] < Core.GetCurrentSharedSize() then tHub["MaxShare"] = Core.GetCurrentSharedSize() tHub["MaxShareDate"] = os.date("[%H:%M-%d.%m.%y]") end end OpConnected = UserConnected RegConnected = UserConnected function WriteTable(tTable, tablename, file) function Serialize(tTable, sTableName, hFile, sTab)  | 
	
| 
			
			 | 
	|
			
			  19.5.2009, 20:14
			
				 Сообщение
					#3
					
				
			 
		 | 
	|
        	
				
					![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 134 Регистрация: 18.6.2008 Из: подземелье Пользователь №: 41 Спасибо сказали: 7 раз  | 
       
			
			 
				Спасибо большое, а как как оптимальней будет? Как с таймером поступать?
				
				
				
			 
			
			
			
					
		 | 
	
| 
			
			 | 
	|
			
			  19.5.2009, 20:19
			
				 Сообщение
					#4
					
				
			 
		 | 
	|
        	
				
					![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз  | 
       
			
			 
				пустить секундный таймер на какую нибудь функцию 
			
			
			
					
		Код TmrMan.AddTimer(1000, "название функциии") и перенести всё из функции UserConnected в эту функцию  | 
	
| 
			
			 | 
	|
			
			  19.5.2009, 20:25
			
				 Сообщение
					#5
					
				
			 
		 | 
	|
        	
				
					![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 134 Регистрация: 18.6.2008 Из: подземелье Пользователь №: 41 Спасибо сказали: 7 раз  | 
       
			
			 
				Помоги пожалуйста еще (я наглый, извините)  
			
			
			
					
		сделал так: CODE local bot = SetMan.GetString(21) local nTime = 30 -- время сохранения таблицы в минутах tHub = {} function OnStartup() sAway = Core.GetPtokaXPath().."scripts/silka1.txt" if loadfile(sAway) then dofile(sAway) end TmrMan.AddTimer(nTime*60000, "OnExit") TmrMan.AddTimer(1000, "hubstat") end function hubstat() if not tHub["MaxUsers"] or tHub["MaxUsers"] < Core.GetUsersCount() then tHub["MaxUsers"] = Core.GetUsersCount() tHub["MaxUsersDate"] = os.date("[%H:%M-%d.%m.%y]") end if not tHub["MaxShare"] or tHub["MaxShare"] < Core.GetCurrentSharedSize() then tHub["MaxShare"] = Core.GetCurrentSharedSize() tHub["MaxShareDate"] = os.date("[%H:%M-%d.%m.%y]") end end function OnExit() WriteTable(tHub, "tHub", sAway) end OpConnected = UserConnected RegConnected = UserConnected function WriteTable(tTable, tablename, file) end function Serialize(tTable, sTableName, hFile, sTab) end И запутался..  | 
	
| 
			
			 | 
	|
			
			  19.5.2009, 20:51
			
				 Сообщение
					#6
					
				
			 
		 | 
	|
        	
				
					![]() Самый главный активист :-D ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз  | 
       
			
			 
				ну вроде всё так, в чём проблема? 
			
			
			
					
		PS: конечно же должен присутствовать код функция WriteTable и Serialize  | 
	
| 
			
			 | 
	|
			
			  19.5.2009, 20:59
			
				 Сообщение
					#7
					
				
			 
		 | 
	|
        	
				
					![]() Продвинутый участник ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 134 Регистрация: 18.6.2008 Из: подземелье Пользователь №: 41 Спасибо сказали: 7 раз  | 
       
			
			 
				Спасибо, работает  
			
			
			
					
		 | 
	
| 
			
			 | 
	|
![]() ![]()  | 
	
 Похожие темы
 
 | 
Сейчас: 4.11.2025, 15:07 |