| 
 | 
Здравствуйте, гость ( Вход | Регистрация )
|   | 
| 
 | 
|  15.11.2009, 13:43 
				 Сообщение
					#21
					
				
			 | |
|  Продвинутый участник     Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза  | Свистопляска с кроссплатформенностью мультистрок. Переводы строк для различных платформ: \r\n для DOS формата, \n - для UNIX формата, \r - для Mac формата. У меня под CentOS 5.3 нормально работают скрипты с \r\n А вот в указании пути потребовалось вводить ДВОЙНОЙ прямой слеш - "//" Вместе с тем НЕ ВСЕ скрипты, содержащие относительный путь работают. Из-за некоторых таких скриптов Птоха просто отключается в какой-то момент. Подскажите КАК заменить относительный путь на абсолютный, к примеру в скрипте AnekBot.lua Впрочем проблема может быть в ином: скрипт Kinozal_tv.lua не имеет папки с файлами, и в нем не прописан путь к ней, однако, как и с AnekBot.lua, после включения скрипта Птоха через некоторое время отключается полностью. | 
|  | |
|  15.11.2009, 18:41 
				 Сообщение
					#22
					
				
			 | |
|  RusHub team lead               Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз  | 
				\r\n в юниксах может работать, тут ничего удивительного нету, однако принято что в юниксах перенос строки это \n. Придерживаясь стандарта, можно в будущем избежать ошибок. По поводу двойного слеша // - это не так. Как любая юникc система сентос использует одиночный слеш / | 
|  | |
|  16.11.2009, 6:43 
				 Сообщение
					#23
					
				
			 | |
|  Продвинутый участник     Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза  | 
				\r\n слишком много по всем скриптам у меня, чтобы их изменять на \n для юникса. Напомните, влияет ли такое положение на быстродействие? - в дереве сообщений по теме не просто найти что нужно, а как раскрыть все сообщения, я пока не нашел...  Касательно двойного слеша: я не помню полностью ситуацию (за неимением достаточных познаний подбирал опытно), но в любом случае скрипты, содержащие в указании пути одиночные прямые и обратные слеши, согласились работать в сентос только с двойным прямым... | 
|  | |
|  16.11.2009, 7:51 
				 Сообщение
					#24
					
				
			 | |
|  Самый главный активист :-D            Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз  | |
|  | |
|  16.11.2009, 18:11 
				 Сообщение
					#25
					
				
			 | |
|  Продвинутый участник     Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза  | |
|  | |
|  16.11.2009, 18:16 
				 Сообщение
					#26
					
				
			 | |
|  RusHub team lead               Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз  | 
				Не критично. Чисто соглашение, которое в некоторых системах может иметь и другие представления. Однако \n - это основное, которое поддерживается всеми unix системами без исключения.
				
				
				
			 | 
|  | |
|  1.12.2009, 12:03 
				 Сообщение
					#27
					
				
			 | |
|  Продвинутый участник     Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза  | заменить надо следующие строчки: Код path = Core.GetPtokaXPath().."scripts/dats" -- имя папки gbfile=path.."/guestbook.dat" --имя файлв nfile=path.."/news.dat" -- директория для файла rfile=path.."/requests.dat" -- директория для файла os.execute("mkdir ".."\""..path.."\"") В данном примере нет завершения: какой именно строкой их заменить? А иллюстрация здесь необходима для объяснения теоретических выкладок. У меня есть другой пример: Код local sScriptsPath = Core.GetPtokaXPath():gsub("/", "\\").."scripts\\" local sPath = "PM.Offline-No.Gemorroy\\" local sPostFile = "tPost.tbl" local sLogFile = "OfflinePostLog.log" -- лог-файл Я несколько раз прочел все сообщения данной темы, но не смог понять как применить способ sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" в моем случае. | 
|  | |
|  1.12.2009, 12:20 
				 Сообщение
					#28
					
				
			 | |
|  Главный ра******й тут...          Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 777 раз  | 
				просто убери  Код :gsub("/", "\\")и везде поменяй \\ на / | 
|  | |
|  1.12.2009, 13:07 
				 Сообщение
					#29
					
				
			 | |
|  Продвинутый участник     Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза  | просто убери  Код :gsub("/", "\\")и везде поменяй \\ на / Спасибо, работает. Только вот ясности в применении кроссплатформенного метода sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" не прибавилось, которым, надо полагать, можно было заменить указания пути в обоих упомянутых случаях. Это было б необходимо для какого-нибудь третьего случая, что бы уже править самостоятельно...   | 
|  | |
|  1.12.2009, 13:14 
				 Сообщение
					#30
					
				
			 | |
|  RusHub team lead               Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз  | 
				А что тут непонятного? Функция Core.GetPtokaXPath() есть только а птохе. А конструкция Код sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$"будет работать в любом LUA скрипте. В переменной sMainPath будет содержаться абсолютный путь до интерпретируемого скрипта, а в переменной sMainSlash будет содержаться слеш, кторый используется в вашей системе. | 
|  | |
|  1.12.2009, 13:18 
				 Сообщение
					#31
					
				
			 | |
|  Продвинутый участник     Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза  | |
|  | |
|  1.12.2009, 13:29 
				 Сообщение
					#32
					
				
			 | |
|  RusHub team lead               Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз  | 
				Заметьте, что функция Core.GetPtokaXPath() возвращает абсолютный путь выполняемого файла (в данном случае путь до файла PtokaX.exe), а предложенная конструкция возвращает путь до интерпретируемого скрипта. Например, у нас в папке scripts есть скрипт test.lua. Тогда для того, чтобы определить абсолютный путь, по которому находится этот скрипт, мы можем сделать так: Цитата sMainPath = Core.GetPtokaXPath().."scripts/"или же так: Код sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" Другой пример. В папке scripts находится некая папка folder, и в этой папке folder находится некий файл test2.lua, который мы хотим подключить из скрипта test.lua. В этом случае можно сделать так: Код sMainPath = Core.GetPtokaXPath().."scripts/"или же так: sPath2 = sMainPath.."folder/" dofile(sPath2.."test2.lua") Код sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" sPath2 = sMainPath.."folder"..sMainSlash dofile(sPath2.."test2.lua") Надеюсь теперь понятны тонкости обращения с тем и другим способом? | 
|  | |
|  1.12.2009, 14:14 
				 Сообщение
					#33
					
				
			 | |
|  Продвинутый участник     Группа: Пользователи Сообщений: 162 Регистрация: 19.8.2009 Из: Москва Пользователь №: 4 201 Спасибо сказали: 24 раза  | |
|  | |
|  2.12.2009, 8:04 
				 Сообщение
					#34
					
				
			 | |
|  Белый Волк          Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз  | Цитата Надеюсь теперь понятны тонкости обращения с тем и другим способом? Setuper, ты меня извини, конечно, но ты этот способ - sMainPath, sMainSlash = debug.getinfo(1).source:match"^@?(.+([/\\])).-$" - проталкиваешь уже больше года, наверно, но вот только сейчас снизошёл до объяснения, как применить на практике...Лично я тоже не понимал, как применить. До этого момента. Хотя прекрасно обходился без него, ставя / вместо \\ | 
|  | |
|  2.2.2011, 22:35 
				 Сообщение
					#35
					
				
			 | |
|  Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 31.1.2011 Пользователь №: 8 691 Спасибо сказали: 0 раз  | 
				Здравия ! Я пути в скриптах исправил, но они не загружаются на ptokax_0.4.1.2c-2~eglibc_i386.deb !getscripts показывает,что скрипты есть но не загруженные. Как их загрузить и проверить правильность написания ? Может кто выложит рабочие скрипты (на ptokax_0.4.1.2c-2~eglibc_i386.deb) для примера ? | 
|  | |
|  3.2.2011, 1:42 
				 Сообщение
					#36
					
				
			 | |
|  Белый Волк          Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз  | 
				По-моему, на безгуйных птоках надо до запуска Птоки открыть файл Scripts.xml и там поставить 1 вместо 0 для каждого названия скрипта вот так: Цитата <Enabled>1</Enabled> Либо попробуй при запущенной Птоке применить команду Цитата !startscript <название скрипта> | 
|  | |
|  3.2.2011, 2:02 
				 Сообщение
					#37
					
				
			 | |
|  Абсолютный новичок Группа: Пользователи Сообщений: 2 Регистрация: 31.1.2011 Пользователь №: 8 691 Спасибо сказали: 0 раз  | 
				Благодарю за ответ,вопрос решён. Только скрипт для управления в меню теперь сразу показывает все возможные команды,надо будет другой поискать А так хорошо бы скрипты для ptokax под линуксом где-то опубликовать | 
|  | |
|  3.2.2011, 3:16 
				 Сообщение
					#38
					
				
			 | |
|  Белый Волк          Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз  | 
				Скрипты для Птоки не делятся на линуксовые или иные, они все работают и на линуксах (с учётом оговорок в данной теме), ну и с заменой виндовых библиотек на линуксовые при необходимости.
				
				
				
			 | 
|  | |
|   | 
 Похожие темы
 Похожие темы
|   | Сейчас: 27.10.2025, 5:25 |