myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> Помогите пожалуйста в написании скрипта

Теги
Нет тегов для показа
intlive
сообщение 19.5.2009, 19:38
Сообщение #1


Продвинутый участник
****

Группа: Пользователи
Сообщений: 134
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 7 раз




Собственно вот.. Пытался по примерам делать небольшой скрипт рекордов still_dreaming.gif
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 - вот такая штуковина... подскажите как правильно записать данные в таблицу.. а потом брать и использовать при необходимости embarrassed.gif
Go to the top of the page
+Quote Post
Wariner
сообщение 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)
Go to the top of the page
+Quote Post
intlive
сообщение 19.5.2009, 20:14
Сообщение #3


Продвинутый участник
****

Группа: Пользователи
Сообщений: 134
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 7 раз




Спасибо большое, а как как оптимальней будет? Как с таймером поступать?
Go to the top of the page
+Quote Post
Wariner
сообщение 19.5.2009, 20:19
Сообщение #4


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




пустить секундный таймер на какую нибудь функцию
Код
TmrMan.AddTimer(1000, "название функциии")

и перенести всё из функции UserConnected в эту функцию
Go to the top of the page
+Quote Post
intlive
сообщение 19.5.2009, 20:25
Сообщение #5


Продвинутый участник
****

Группа: Пользователи
Сообщений: 134
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 7 раз




Помоги пожалуйста еще (я наглый, извините) big_smile.gif :
сделал так:
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


И запутался..
Go to the top of the page
+Quote Post
Wariner
сообщение 19.5.2009, 20:51
Сообщение #6


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




ну вроде всё так, в чём проблема?

PS: конечно же должен присутствовать код функция WriteTable и Serialize
Go to the top of the page
+Quote Post
intlive
сообщение 19.5.2009, 20:59
Сообщение #7


Продвинутый участник
****

Группа: Пользователи
Сообщений: 134
Регистрация: 18.6.2008
Из: подземелье
Пользователь №: 41
Спасибо сказали: 7 раз




Спасибо, работает big_smile.gif что-то я уснул за клавой.. Большенство функций смотрел как сделано в твоих скриптах, пасиба surrender.gif
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Запрос скрипта: От подвисания пользователей
0 Sezam 4 142 22.1.2018, 7:10 Посл. сообщение: Sezam
No New Posts Помогите собрать пакет хаб софта для прошивки роутера OpenWRT (РЕШЕНО)
ptokax и opendchub
2 мамин_парень 5 807 5.5.2017, 5:21 Посл. сообщение: мамин_парень
No new ПОМОГИТЕ
Как дать определенному нику права администратора в любом скрипте ?
25 probest 23 226 18.1.2015, 1:17 Посл. сообщение: probest
No New Posts От: ПОМОГИТЕ
От темы с ID: 5730
0 dimetro 3 963 17.1.2015, 23:57 Посл. сообщение: dimetro
No New Posts Topic has attachmentsНужна помощь в доработке скрипта greylink
Отложить запуск скрипта на определенное время
0 kirill_td 4 740 17.10.2014, 20:13 Посл. сообщение: kirill_td
No New Posts Topic has attachmentsПомогите !
3 Dani_Filth 6 840 4.10.2014, 14:52 Посл. сообщение: Артём
No new Topic has attachmentsTriviaMods - мод скрипта для командной игры
API2
16 снег 21 163 10.9.2014, 19:23 Посл. сообщение: alphex3xx
No New Posts Topic has attachmentsПомогите Новичку разобрать со скрипами.
НЕ могу понять,после того как загрузил скрипт,его ещё надо настраивать
2 Prizrak333 6 184 27.4.2014, 10:53 Посл. сообщение: Prizrak333
No New Posts Метод взятия имени/пути скрипта
Метод взятия имени/пути этого скрипта в самом скрипте и других
2 Karumo 6 643 6.4.2014, 22:24 Посл. сообщение: Alexey
No New Posts помогите мне пожалуйста настроить dc++
1 sdncn 5 987 29.9.2013, 9:37 Посл. сообщение: Delia
No new Помогите с Хабом!
26 cpr 30 896 7.2.2013, 17:20 Посл. сообщение: DEN 007
No New Posts Помогите разобрать ситуацию с хабом, создал хаб на птокеX 0.5.0.0
Помогите разобрать ситуацию с хабом
12 mambob 13 858 30.1.2013, 0:03 Посл. сообщение: Yamakasi
No New Posts Конвертирование скрипта до AP2
Скрипт афоризмы
4 GULAM33 8 159 21.1.2013, 16:30 Посл. сообщение: Артём
No New Posts Помогите наполнить Юзерами свежий хаб Help
Help me please
1 mambob 4 695 20.1.2013, 3:42 Посл. сообщение: Артём
No New Posts помогите с ip_zone4_min
2 ruslanlee 7 140 9.1.2013, 20:43 Посл. сообщение: ruslanlee

 



RSS Сейчас: 16.4.2024, 19:51