Помогите Исправить Ошибку, API 2 |
Здравствуйте, гость ( Вход | Регистрация )
Помогите Исправить Ошибку, API 2 |
29.12.2008, 1:00
Сообщение
#1
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
в скрипте выдаёт ошибку "asciitalk_i.lua:388: attempt to index local 'file' (a nil value)" помогите исправить плиз.
ASCII.rar ( 12.91 килобайт ) Кол-во скачиваний: 12 |
|
|
30.12.2008, 20:10
Сообщение
#2
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
помогите плиз,я испробовал что мог,не не могу его ожевить...
|
|
|
30.12.2008, 21:21
Сообщение
#3
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
поробуй заменить self.Path на ATalk.Path
|
|
|
30.12.2008, 21:32
Сообщение
#4
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Функция OnStartup() переписывается так:
Код function OnStartup() и все запускается ATalk.Path = Core.GetPtokaXPath().."scripts/"..ATalk.Path ATalk:Main() end поробуй заменить self.Path на ATalk.Path Не в этом суть... self тут выражает переданный скрыто первый параметр, это таблица ATalk (делается это методом как раз двоеточия: ATalk:Main()), видимо это некоторый метод оптимизации, возможно так быстрее идет обращение к переменным, Сетапер, Илюх, так ли это? А ошибка в том что файл не может быть открыт, все из-за путей, как и всегда. |
|
|
30.12.2008, 21:37
Сообщение
#5
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Исправил (71 строка) ошибка пропала,а меню как небыло так и нету...
|
|
|
30.12.2008, 21:45
Сообщение
#6
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Давай доделывать скрипт дальше... Ищи
Код OpConnected = UserConnected ниже дописывайКод RegConnected = UserConnected
|
|
|
31.12.2008, 10:10
Сообщение
#7
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
спасибо за помощь,за перевод скрипта возьмусь в свободное время.
:P кое-как перевёл,если кому интересно выкладую скрипт Веслые_к...ки_в_чат.rar ( 13.4 килобайт ) Кол-во скачиваний: 6 P.S. если кто сможет перевести поподробней буду благодарен Алфавит.txt ( 16.17 килобайт ) Кол-во скачиваний: 9 - русский алфавит,заменить место англ букв,работает прикольно CODE [10:24:09] <UzVeR> !blowup БАБА •••••• •• •••••• •• •• •• •• •• •• •• •• •• •• •• •• •• •••••• •• •• •••••• •• •• •• •• •• •• •• •• •• •• •• •• •••••••••• •• •• •••••••••• •• •• •• •• •• •• •• •• •••••• •• •• •••••• •• •• только команду в чат посылет,как можно исправить это? |
|
|
2.1.2009, 19:38
Сообщение
#8
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Не в этом суть... self тут выражает переданный скрыто первый параметр, это таблица ATalk (делается это методом как раз двоеточия: ATalk:Main()), видимо это некоторый метод оптимизации, возможно так быстрее идет обращение к переменным, Сетапер, Илюх, так ли это? "Метод" по быстродействию ничем не уступает простой функции, однако, использование методов говорит о направленности к объектно-ориентированному программированию, что в свою очередь считается хорошим стилем. Синтаксис метода такой же как у функции, но любой метод содержит родительскую таблицу, которая указывается перед именем функции и отделяется от имени двоеточием. Метод: Код function Test:Func(param1, param2) равносилен функции:Код function Test.Func(Test, param1, param2) Всегда лучше использовать методы вместо функций (если их использование логично и возможно). Использование методов позволяет не заботиться о названии переменной, путём замены этой переменной словом self. Пример: Можно написать так: Код tTest={ а можно написать так:sMsg="Hello world!" } function tTest.Func1() Core.SendToAll(tTest.sMsg) ... end tTest.Func1() Код tTest={ sMsg="Hello world!" } function tTest:Func1() Core.SendToAll(self.sMsg) ... end tTest:Func1() Потом, например, мы решили изменить имя таблицы с tTest на tTable, при этом, средствами замены редактора (Ctrl-H) воспользоваться нельзя, допустим из-за того, что в этом скрипте есть такие же имена локальных параметров (tTest). Также допустим, что кроме написанных действий в указанной функции есть очень много других действий, в которых используются переменные глобальной таблицы tTest. При таком раскладе в первом способе нужно будет проделать большую работу по замене переменной, во втором же способе нужно будет заменить только таблицу метода, так как в теле метода будут везде вместо tTest встречаться self. В данном примере метод работает быстрее, чем функция из-за того, что у функции 3 параметра, а у метода их 2 (каждый параметр передаётся через стек, а следовательно под локальную переменную каждого параметра выделяется дополнительная память). Переменная self передаётся в метод по ссылке, а не через стек как все переменные. Это означает, что эту переменную можно использовать как для чтения, так и для записи! Не мало важным фактом является и то, что эта переменная является переменной-указателем, то есть все операции над этой переменной происходят в памяти, которая выделена под переменную, на которую ссылается данная переменная self. Как раз из-за этого метод и обычная функция являются равносильными, однако повторю ещё раз, что использование методов является хорошим стилем программирования. Под обычной функцией подразумевается следующее: Код с обычной функцией: Код tTest={} function F(param1, param2) ... end или вот с такой обычной функцией: Код tTest={} function tTest.F(param1, param2) ... end по быстродействию ничем не уступает следующему методу: Код tTest={} function tTest:F(param1, param2) ... end Однако, функция, которая равносильна методу выше: Код tTest={} будет работать медленнее чем метод из-за передачи параметра tTest через lua-стек.
function tTest.F(tTest, param1, param2) ... end |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 6:17 |