Награды, скрипт награждения юзеров для API2 |
Здравствуйте, гость ( Вход | Регистрация )
Награды, скрипт награждения юзеров для API2 |
19.1.2011, 15:10
Сообщение
#1
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Уважаемый Nickolya!
По просьбе своих пользователей Хаба нашёл поиском здесь в корзине скрипт наград для API1, в котором Вы принимали участие (сообщение 7): корзина Я конвертером: (PtokaX LUA API Converter v0.9c) перевёл скрипт в API2 открыть -- This script is converted with PtokaX LUA API Converter v0.9c at 01/19/11 14:37:21 --[[ Скрипт Awarder v0.01 для PtokaX 0.3.6.0 Автор Berkut Автор оригинальной идеи железяка Релиз от 03.04.2008 Совместимость с PtokaX 0.3.5.1 и ниже, 0.4.0.0 и выше не гарантирована Предварительный релиз скрипта наград. Реализован механизм награждения, просмотра наград пользователя и списка наград на хабе. Первой командой пользуется только админ, остальными все. Команды снятия наград и просмотра информации о наградах реализую после обкатки базовых механизмов. Имя бота меняем ниже. Больше ничего менять не рекомендую. Список наград находится в файле Awards.txt. Внимание! Количество наград должно оставаться неизменным (если вы не можете самостоятельно откорректировать тело скрипта) Список наград составлен от балды. В принципе вместо наград можно использовать титулы. Звания не рекомендую, т.к. как правило, при получении следующего звания предыдущие анулируются. Все предложения и замечания об ошибках просьба отсылать в приват или на хабах РКС, или на форуме. Обязательно укажите версию хаба и клиента. ]] MainBot="Награды" dofile ("AwardsDB.txt") dofile ("Awards.txt") dofile ("Awarder\\TechFunc.lua") function OpConnected(user) LineSpline(user) Create(user) if user.iProfile==0 then for i,n in pairs(Awards) do Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Администратора:•:.\\.:•:Служебное Меню:•:.\\Наградить пользователя\\"..n.."$<%[mynick]> !setaw %[nick] "..i.."||") end end Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Награды пользователя$<%[mynick]> !getusaw %[nick]||") Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Список награждённых$<%[mynick]> !getaw||") end function UserConnected(user) LineSpline(user) Create(user) Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Награды пользователя$<%[mynick]> !getusaw %[nick]||") Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Список награждённых$<%[mynick]> !getaw||") end function UserDisconnected(curUser) Decreate(curUser) end OpDisconnected=UserDisconnected function ChatArrival(user,data) s,e,cmd1,nick1,aw=string.find(data,"^%b<>%s+(%S+)%s(%S+)%s(%S+)|") s,e,cmd2,nick2=string.find(data,"^%b<>%s+(%S+)%s(%S+)|") s,e,cmd3=string.find(data,"^%b<>%s+(%S+)|") aw=tonumber(aw) aUser=GetItemByName(nick1) if cmd1=="!setaw" then if user.iProfile==0 then if ADB[aUser.sIP]==nil then ADB[aUser.sIP]={} ADB[aUser.sIP]["Nick"]=aUser.sNick ADB[aUser.sIP]["Award"]={} ADB[aUser.sIP]["Award"]={0,0,0,0,0,0,0,0,0,0} WriteTable(ADB,"ADB","AwardsDB.txt") end if aUser.sNick~=ADB[aUser.sIP]["Nick"] then Core.SendToUser(user,"<"..MainBot.."> Внимание! Под этим IP награду получал пользователь с ником "..ADB[aUser.sIP]["Nick"]..". Текущая награда будет записана за ним. На данный момент награждение двух разных пользователей под одним IP невозможно.") end if ADB[aUser.sIP]["Award"][aw]==1 then Core.SendToUser(user,"<"..MainBot.."> У этого пользователя данная награда уже есть.") else ADB[aUser.sIP]["Award"][aw]=1 Core.SendToUser(user,"<"..MainBot.."> Пользователь "..aUser.sNick.." получает в награду "..Awards[aw]..".") WriteTable(ADB,"ADB","AwardsDB.txt") end end return true end if cmd2=="!getusaw" then if nick2==0 or nick2==nil then Core.SendToUser(user,"<"..MainBot.."> Вы не указали ник") else aUser=GetItemByName(nick2) if ADB[aUser.sIP]==nil then Core.SendToUser(user,"<"..MainBot.."> Этот пользователь наград не имеет") else local hr = string.rep("_",60).."\r\n" repuaw="\r\n"..hr.."\r\n\t -= Пользователь "..ADB[aUser.sIP]["Nick"].." имеет следующие награды: =-\r\n"..hr.."\r\n\t" if aUser.sNick~=ADB[aUser.sIP]["Nick"] then Core.SendToUser(user,"<"..MainBot.."> Внимание! Под этим IP в базе находится пользователь с ником "..ADB[aUser.sIP]["Nick"]..".") end cw=0 awl="" for k,v in pairs(ADB[aUser.sIP]["Award"]) do if v~=0 then awl=awl..Awards[k]..". " cw=cw+1 end end if cw~=0 then repuaw=repuaw..awl.."\r\n"..hr.."\r\n" Core.SendToUser(user,"<"..MainBot.."> "..repuaw) else Core.SendToUser(user,"<"..MainBot.."> Пользователь присутствует в базе данных, но наград не имеет.") end end return true end end if cmd3=="!getaw" then local hr = string.rep("_",60).."\r\n" repaw="\r\n"..hr.."\r\n\t -= Список награждённых =-\r\n"..hr.."\r\n" awl="" for a,b in pairs(ADB) do for c,d in pairs(ADB[a]) do awu="" for e,f in pairs(ADB[a]["Award"]) do if f~=0 then awu=awu..Awards[e]..". " end end awu="-<"..ADB[a]["Nick"]..">-\t"..awu end awl=awl..awu.."\r\n" end repaw=repaw..awl.."\r\n"..hr.."\r\n" Core.SendToUser(user,"<"..MainBot.."> "..repaw) return true end end function ToArrival(curUser,data) ConvTake(curUser,data) collectgarbage(collect) end function Serialize(tTable,sTableName,hFile,sTab) sTab = sTab or ""; hFile:write(sTab..sTableName.." = {\n"); for key,value in pairs(tTable) do if (type(value)~="function") then 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 end hFile:write(sTab.."}"); end function WriteTable(table,tablename,file) local hFile = io.open(file,"w+") Serialize(table,tablename,hFile); hFile:close() end RegConnected = UserConnectedRegDisconnected = UserDisconnected в результате, скрипт запускаться даже не стал, из-за ошибки: Awarder_newapi.lua:157: unexpected symbol near '=' Просил бы Вас помочь с запуском скрипта в API2 0.4.1.2 Также неплохо бы добавить (изменить) количество наград туда на 18 и меню (добавить) для списка профилей... |
|
|
19.1.2011, 16:24
Сообщение
#2
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Marc, ну так открой скрипт и посмотри что
Код RegConnected = UserConnectedRegDisconnected = UserDisconnected слились, сделай Код RegConnected = UserConnected
RegDisconnected = UserDisconnected |
|
|
19.1.2011, 18:24
Сообщение
#3
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Артём!
Спасибо! Это я поправил и попробовал туда сам профили добавить! Вот, что получилось: открыть -- This script is converted with PtokaX LUA API Converter v0.9c at 01/19/11 14:37:21 --[[ Скрипт Awarder v0.01 для PtokaX 0.3.6.0 Автор Berkut Автор оригинальной идеи железяка Релиз от 03.04.2008 Совместимость с PtokaX 0.3.5.1 и ниже, 0.4.0.0 и выше не гарантирована Предварительный релиз скрипта наград. Реализован механизм награждения, просмотра наград пользователя и списка наград на хабе. Первой командой пользуется только админ, остальными все. Команды снятия наград и просмотра информации о наградах реализую после обкатки базовых механизмов. Имя бота меняем ниже. Больше ничего менять не рекомендую. Список наград находится в файле Awards.txt. Внимание! Количество наград должно оставаться неизменным (если вы не можете самостоятельно откорректировать тело скрипта) Список наград составлен от балды. В принципе вместо наград можно использовать титулы. Звания не рекомендую, т.к. как правило, при получении следующего звания предыдущие анулируются. Все предложения и замечания об ошибках просьба отсылать в приват или на хабах РКС, или на форуме. Обязательно укажите версию хаба и клиента. ]] bot = "Награды" --Имя бота sFolder = "Awarder/" --Главная папка скрипта sFolder.."Awards.txt" sFolder.."AwardsDB.txt dofile ("Awarder\\TechFunc.lua") tControl = { --Профили, имеющие доступ к настройкам [0] = 1, -- =[Master]= [1] = 1, -- =[OP]= [2] = 0, -- =[ViP]= [3] = 0, -- =[Reg]= [-1] = 0, -- =[UnReg]= } function OpConnected(user) LineSpline(user) Create(user) if user.iProfile==0 then for i,n in pairs(Awards) do Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Администратора:•:.\\.:•:Служебное Меню:•:.\\Наградить пользователя\\"..n.."$<%[mynick]> !setaw %[nick] "..i.."||") end end Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Награды пользователя$<%[mynick]> !getusaw %[nick]||") Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Список награждённых$<%[mynick]> !getaw||") end function UserConnected(user) LineSpline(user) Create(user) Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Награды пользователя$<%[mynick]> !getusaw %[nick]||") Core.SendToUser(user,"$UserCommand 1 2 .:•:Опции Пользователя:•:.\\.:•:Ваше Меню:•:.\\Награды\\Список награждённых$<%[mynick]> !getaw||") end function UserDisconnected(curUser) Decreate(curUser) end OpDisconnected=UserDisconnected function ChatArrival(user,data) s,e,cmd1,nick1,aw=string.find(data,"^%b<>%s+(%S+)%s(%S+)%s(%S+)|") s,e,cmd2,nick2=string.find(data,"^%b<>%s+(%S+)%s(%S+)|") s,e,cmd3=string.find(data,"^%b<>%s+(%S+)|") aw=tonumber(aw) aUser=GetItemByName(nick1) if cmd1=="!setaw" then if user.iProfile==0 then if ADB[aUser.sIP]==nil then ADB[aUser.sIP]={} ADB[aUser.sIP]["Nick"]=aUser.sNick ADB[aUser.sIP]["Award"]={} ADB[aUser.sIP]["Award"]={0,0,0,0,0,0,0,0,0,0} WriteTable(ADB,"ADB","AwardsDB.txt") end if aUser.sNick~=ADB[aUser.sIP]["Nick"] then Core.SendToUser(user,"<"..MainBot.."> Внимание! Под этим IP награду получал пользователь с ником "..ADB[aUser.sIP]["Nick"]..". Текущая награда будет записана за ним. На данный момент награждение двух разных пользователей под одним IP невозможно.") end if ADB[aUser.sIP]["Award"][aw]==1 then Core.SendToUser(user,"<"..MainBot.."> У этого пользователя данная награда уже есть.") else ADB[aUser.sIP]["Award"][aw]=1 Core.SendToUser(user,"<"..MainBot.."> Пользователь "..aUser.sNick.." получает в награду "..Awards[aw]..".") WriteTable(ADB,"ADB","AwardsDB.txt") end end return true end if cmd2=="!getusaw" then if nick2==0 or nick2==nil then Core.SendToUser(user,"<"..MainBot.."> Вы не указали ник") else aUser=GetItemByName(nick2) if ADB[aUser.sIP]==nil then Core.SendToUser(user,"<"..MainBot.."> Этот пользователь наград не имеет") else local hr = string.rep("_",60).."\r\n" repuaw="\r\n"..hr.."\r\n\t -= Пользователь "..ADB[aUser.sIP]["Nick"].." имеет следующие награды: =-\r\n"..hr.."\r\n\t" if aUser.sNick~=ADB[aUser.sIP]["Nick"] then Core.SendToUser(user,"<"..MainBot.."> Внимание! Под этим IP в базе находится пользователь с ником "..ADB[aUser.sIP]["Nick"]..".") end cw=0 awl="" for k,v in pairs(ADB[aUser.sIP]["Award"]) do if v~=0 then awl=awl..Awards[k]..". " cw=cw+1 end end if cw~=0 then repuaw=repuaw..awl.."\r\n"..hr.."\r\n" Core.SendToUser(user,"<"..MainBot.."> "..repuaw) else Core.SendToUser(user,"<"..MainBot.."> Пользователь присутствует в базе данных, но наград не имеет.") end end return true end end if cmd3=="!getaw" then local hr = string.rep("_",60).."\r\n" repaw="\r\n"..hr.."\r\n\t -= Список награждённых =-\r\n"..hr.."\r\n" awl="" for a,b in pairs(ADB) do for c,d in pairs(ADB[a]) do awu="" for e,f in pairs(ADB[a]["Award"]) do if f~=0 then awu=awu..Awards[e]..". " end end awu="-<"..ADB[a]["Nick"]..">-\t"..awu end awl=awl..awu.."\r\n" end repaw=repaw..awl.."\r\n"..hr.."\r\n" Core.SendToUser(user,"<"..MainBot.."> "..repaw) return true end end function ToArrival(curUser,data) ConvTake(curUser,data) collectgarbage(collect) end function Serialize(tTable,sTableName,hFile,sTab) sTab = sTab or ""; hFile:write(sTab..sTableName.." = {\n"); for key,value in pairs(tTable) do if (type(value)~="function") then 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 end hFile:write(sTab.."}"); end function WriteTable(table,tablename,file) local hFile = io.open(file,"w+") Serialize(table,tablename,hFile); hFile:close() end RegConnected = UserConnected RegDisconnected = UserDisconnected Но теперь другую ошибку стало выдавать: Awarder_newapi.lua:22: '=' expected near '..' И ещё! Где надо ввести количество наград, мне надо число 18 и непонятная строка для меня: "dofile ("Awarder\\TechFunc.lua")" Пробую вот сам конвертировать, добавлять и исправлять, не всегда получается, вот и спрашиваю) |
|
|
19.1.2011, 18:31
Сообщение
#4
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Marc, скрипт прикрепляй, а не код под спойлером.
Цитата И ещё! Где надо ввести количество наград, мне надо число 18 и непонятная строка для меня: "dofile ("Awarder\\TechFunc.lua")" а теперь зайди в тему которая в корзине и глянь на скрипт из первого поста, там ещё и папка есть с тремя файлами, один из которых (lua) с закрытым кодом. а его тоже надо (скорей всего) конвертировать под апи2 |
|
|
19.1.2011, 18:53
Сообщение
#5
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Артём!
тот файл: TechFunc.lua бинарный, скрытый... Его конвертер у меня не видит( |
|
|
19.1.2011, 18:54
Сообщение
#6
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Marc, декомпилируй его и конвертируй
|
|
|
19.1.2011, 19:10
Сообщение
#7
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Артём!
Легко тебе говорить, когда ты знаешь, как сделать... Я, правда, тут на форуме уже где-то читал про декомпиляцию, пробовал найти щас, не получилось. Ты мне ссылку не подскажешь, как это сделать, правда боюсь, что у меня не получится, но попробовать постараюсь. |
|
|
19.1.2011, 19:12
Сообщение
#8
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
|
|
|
19.1.2011, 19:30
Сообщение
#9
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Артём!
понятно. А список профилей я правильно в скрипт добавил? Остаётся подождать того, кто знает все тонкости и сможет помочь! |
|
|
|
Сейчас: 27.11.2024, 3:41 |