Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
Здравствуйте, гость ( Вход | Регистрация )
Вопросы Разработчикам Скриптов, вопросы по скриптам (мелкие вопросы) |
18.8.2008, 14:14
Сообщение
#21
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Хаха эта менюшка наверняка не закрывает окно, а просто разъединяет пользователя - такое сделать можно!
Вот код: Код bNewApi=true function Main() bNewApi=false end function SendToUser(tUser,sMsg) if bNewApi then Core.SendToUser(tUser,sMsg) else tUser:SendData(sMsg) end end function UserConnected(tUser) SendToUser(tUser,"$UserCommand 1 3 Закрыть соединение$&# 36;Quit %[mynick]&# 124;") end NewUserConnected=UserConnected OpConnected=UserConnected RegConnected=UserConnected В функции UserConnected не забудь убрать пробелы после "&#" (перед "36;" и перед "124;")!!!!!!!! Для того, чтобы менюшка была последней, необходимо скрипт поставить последним в списке скриптов! |
|
|
18.8.2008, 19:05
Сообщение
#22
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Точно помню что менюшка закрывало окно... но тогда скриптами я не интересовался и не спросил(((
|
|
|
18.8.2008, 22:16
Сообщение
#23
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
средствами хаба никак нельзя закрыть окно клиента!!!
|
|
|
18.8.2008, 22:34
Сообщение
#24
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
|
|
|
18.8.2008, 22:52
Сообщение
#25
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Такого тоже не может быть. Контекстное меню устроено так, что в него добавляются менюшки ни сверху а снизу. Так устроено любое контекстное меню. Поэтому никак не получиться.
|
|
|
19.8.2008, 11:36
Сообщение
#26
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Помогите написать функцию!!! Смысл её вот в чём:
Когда скрипт выводит ник юзера он должен быть определённой длинны. Т.е на хабе есть ограничение на длину ника(скажем 20 символов), при выводе ника скрипт считает колличество символов в нике и если оно меньше 20 добавляет в конце него нужное пробелов. |
|
|
19.8.2008, 11:45
Сообщение
#27
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Зачем это? Тупость какая то!
Программно этого сделать нельзя, то есть нельзя сделать так, чтобы сама программа PtokaX хранила в своей памяти список модифицированных ников. Можно только это сделать внутри скрипта, переопределяя вначале каждой функции поле sNick таблицы пользователя. |
|
|
19.8.2008, 16:41
Сообщение
#28
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Зачем это? Тупость какая то! Смысл в том чтоб в таблицах со статистикой выводимых скриптами чатранкс и топхаберс ники сделать в первом столбце и при этом чтобы хоть чуть чуть уровнять столбцы вот что то я сделал токо не работает((( CODE function getLenght(Name) local Nick = Name sLength = string.len(Nick) if sLength < 20 then tLength = 20 - sLength end for i =1, tLength do Nick = Nick.." " end return Nick end что не так? |
|
|
19.8.2008, 20:15
Сообщение
#29
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Все верно сделал, но есть метод лучше.
Для выравнивания можно использовать табуляцию. |
|
|
19.8.2008, 20:22
Сообщение
#30
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Блин не работает(((( Я ставлю вывод с этой функцией и пусто((((
Прошу прощения сам разобрался)))) |
|
|
20.8.2008, 10:52
Сообщение
#31
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
вот есть это
Код function ChatArrival(sUser,sData) sData = string.sub(sData,1,-2) local _,_,cmd =string.find(sData, "%b<>%s+(%S+)") if cmd == "!topranks" then Core.SendToNick(sUser.sNick,"<"..gBot.."> "..ShowRanks(tRankingTable, 2)) return true end end и это CODE function ShowRanks(tQWERTY, number) local tTemp = {} for i,v in pairs(tQWERTY) do table.insert(tTemp,{i,v}) end table.sort(tTemp,function(a,b) return (a[2] > b[2]) end) if number == 1 then local disp = " ¤ Текущий Toп ранжирования ¤\r\n\r\n" disp = disp.."\t№:\tНик:\t\t\tШара\r\n" disp = disp.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» «»«»«»«»«\r\n" for i = 1,MaxShowed do if tTemp[i] then disp = disp..i..getLenght(tTemp[i][1])..getNormalShare(tTemp[i][2]).."\r\n" end end disp = disp.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» «»«»«»«»«\r\n" end if number == 1 then local disp = " ¤ Текущий Toп ранжирования ¤\r\n\r\n" disp = disp.."\t№:\tНик:\tОчки:\tРанг:\t\r\n" disp = disp.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» «»«»«»«»«\r\n" for i = 1,MaxShowed do if tTemp[i] then disp = disp..i..getLenght(tTemp[i][1])..tTemp[i][2]..tFunctions.GetRankName(tTemp[i][2]).."\r\n" end end disp = disp.."\t»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«»«» «»«»«»«»«\r\n" end return disp end выдаёт ошибку [11:43] Синтаксис Копия MyBoT.lua:xx: attempt to concatenate a nil value где я ошибся? |
|
|
20.8.2008, 11:04
Сообщение
#32
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Ошибка во 2 части кода, а именно:
1) два раза одно условие "if number == 1 then", исправь во втором на двойку 2) конструкция Код if number == 1 then вернет nil в свзяи с правилами видимости локальных переменных. Почитать можно про это тут: local disp = "текст" end return disp Код local disp
if number == 1 then disp = "текст" end return disp |
|
|
24.8.2008, 18:29
Сообщение
#33
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Вот выкладываю кусок скрипта. Он должен при команде сохранять данные в таблицу, но есть какой то глюк... Толи есть какая то задержка сохранения толи не всегда срабатывает, так как я жму на менюшку, потом проверяю таблицу а в ней пусто((( что делать?
Прикрепленные файлы
|
|
|
24.8.2008, 18:54
Сообщение
#34
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код function AddFriends(Name, Friend)
if not tFriends[Name] then tFriends[Name] = {} end if tFriends[Name][Friend] then Core.SendToNick(Friend, "<"..gBot.."> Вы уже являетесь другом "..Name) else tFriends[Name][Friend] = 1 WriteFile(tFriends, "tFriends",gFriends) end end |
|
|
24.8.2008, 20:33
Сообщение
#35
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Как можно забрать ник юзера вводящего команду(в функции ChatArrival) и запихнуть его в ToArrival... Не знаю насколько понятно написал, попробую ещё раз... Первый юзер вводит команду(ChatArrival) и второму отправляется запрос о подтверждении, если он подтверждает(ToArrival), ники заносятся в таблицу. Ник подтверждающего не проблема а того кто вводит команду... не понимаю как это сделать(((
|
|
|
25.8.2008, 0:47
Сообщение
#36
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Вот своял под апи2, но на работоспособность не проверял!
CODE function OnStartup()
sBot=SetMan.GetString(21) iTime=60 --Время в минутах, в течение которого нужно отправить подтверждение tTmp={} tFriends={} --база друзей TmrMan.AddTimer(60000,"ClearRequests") end function ChatArrival(tUser,sData) sData=sData:sub(string.len(tUser.sNick)+4,-2) local _,_,sCmd,sNick=string.find(sData,"[+!/](%S+)%s+(%S+).*") if sCmd and sNick and sCmd=="friend" then if sNick==tUser.sNick then Core.SendToUser(tUser,"*** О боже... Что я вижу... Вы хотите подружиться с собой! Перед тем как подружиться с собой навестите психиатора.") end local tUs=Core.GetUser(sNick) if tUs then for i,v in pairs(tFriends) do if v[1]==tUser.sNick and v[2]==sNick or v[2]==tUser.sNick and v[1]==sNick then Core.SendToUser(tUser,"*** Вы с '"..sNick.."' уже являетесь друзьями!") return true end end if not tTmp[tUser.sNick] then tTmp[tUser.sNick]={} tTmp[tUser.sNick].sNick=sNick tTmp[tUser.sNick].iTime=os.time()+iTime*60 if tTmp[sNick] and tTmp[sNick].sNick==tUser.sNick then tTmp[sNick]=nil tTmp[tUser.sNick]=nil table.insert(tFriends,{tUser.sNick,sNick} Core.SendToUser(tUser,"$To: "..tUser.sNick.." From: "..sBot.." $<"..sBot.."> ".. "Запрос подтвержден! Вы с '"..sNick.."' с данного момента являетесь друзьями") Core.SendToUser(tUs,"$To: "..sNick.." From: "..sBot.." $<"..sBot.."> ".. "Запрос подтвержден! Вы с '"..tUser.sNick.."' с данного момента являетесь друзьями") else Core.SendToUser(tUser,"*** Запрос на поддержание дружбы с пользователем '"..sNick.. "' успешно отправлен. Ждите подтверждения!") end else Core.SendToUser(tUser,"*** Запрос на поддержание дружбы уже был отправлен пользователю '"..sNick.."'") end Core.SendToUser(tUs,"$To: "..sNick.." From: "..sBot.." $<"..tUser.sNick.."> ".. "Поступил запрос на подтверждение дружбы. Для подтверждения отправьте в чат +friend "..tUser.sNick) else Core.SendToUser(tUser,"*** Пользователь '"..sNick.."' оффлайн!") end return true end end function ClearRequests() for i,v in pairs(tTmp) do if os.time()>v.iTime then tTmp[i]=nil end end end |
|
|
25.8.2008, 9:31
Сообщение
#37
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Появились две ошибки:
[10:09] Синтаксис test.lua:6: bad argument #2 to 'AddTimer' (string expected, got function) [10:10] Синтаксис test.lua:25: attempt to index field '?' (a nil value) Честно говоря полностью так и не смог разобраться в работе скрипта... Он здесь полностью? |
|
|
25.8.2008, 11:50
Сообщение
#38
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Ошибки исправил.
Скрипт не полный. Я думаю, что тебе хватит знаний, чтобы дописать к нему менюшку, а также загрузку и сохранение таблицы tFriends |
|
|
25.8.2008, 15:00
Сообщение
#39
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
[15:51] Синтаксис test.lua:27: attempt to call global 'time' (a nil value)
[15:51] Синтаксис test.lua:53: attempt to call global 'time' (a nil value) time() - вроде это вызов функции, но такой функции в скрипте нет. Я правильно понял? |
|
|
25.8.2008, 16:44
Сообщение
#40
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
os.time()
з.ы. писал на скорую руку и не тестил, так как мне такой скрипт не нужен)))) |
|
|
Похожие темы
|
Сейчас: 27.11.2024, 3:53 |