PtokaX forum

Archive => Archived 4.0 boards => Help with Lua 4 scripts => Topic started by: enema on 01 October, 2004, 09:15:22

Title: Newyears script
Post by: enema on 01 October, 2004, 09:15:22
Hi, this script have some mayor errors in it, hope you can fix it, i now i cant. It suposed to countdown. But it is showing something like this -   Time left till new year: -275 Day's, 14 Hours, 16 Minutes, 34 Seconds. Hours, minutes and seconds are counted correctly, but days arent. It doesnt count down but up from last newyear. and day count is negative...

heres the bot itself, maybe some one could fix it till christmas :)

------------------------------------------------------------------------------
------- countdown bot by plop -------
------- original julian day made by tezlo -------
------- modifyd by chilla 2 also handle hours, mins, seconds -------
------------------------------------------------------------------------------

------------------------------------------------------------------------------
------- THE TEXT FILE LOADS ON BOT START -------
------------------------------------------------------------------------------
------- this may sound weird but this 2 make sure it shows on time, -------
------- as i allready seen some big ascii's come by -------
------------------------------------------------------------------------------


------------------------------------------------------------------------------
Bot = "newyear"
--This the date the timer has 2 stop @ midnight
-- year (2 numbers), month, day
SylYear,SylMonth,SylDay = 03,12,31
-- this is the file 2 be shown
file = "happynewyear.txt"
------------------------------------------------------------------------------


------------------------------------------------------------------------------
function OnTimer()
if last == 0 then
SendToAll(Bot, TimeLeft())
Sync()
elseif last == 1 then
SendAscii() -- send the msg
StopTimer() -- kill the timer
end
end
------------------------------------------------------------------------------
function jdatehms(d, m, y,ho,mi,se)
local a, b, c = 0, 0, 0
if m <= 2 then
y = y - 1
m = m + 12
end
if (y*10000 + m*100 + d) >= 15821015 then
a = floor(y/100)
b = 2 - a + floor(a/4)
end
if y <= 0 then c = 0.75 end
return floor(365.25*y - c) + floor(30.6001*(m+1) + d + 1720994 + b),ho*3600+mi*60+se
end
------------------------------------------------------------------------------
function TimeLeft()
local curday,cursec = jdatehms(tonumber(date("%d")),tonumber(date("%m")),tonumber(date("%y")),tonumber(date("%H")),tonumber(date("%M")),tonumber(date("%S")))
local sylday,sylsec = jdatehms(SylDay,SylMonth,SylYear,24,0,0)
local tmp = sylsec-cursec
local hours, minutes,seconds = floor(mod(tmp/3600, 60)), floor(mod(tmp/60, 60)), floor(mod(tmp/1, 60))
return ("Time left till new year: "..sylday-curday.." Day's, "..hours.." Hours, "..minutes.." Minutes, "..seconds.." Seconds")
end
------------------------------------------------------------------------------
function ShowAscii()
text ="\r\n\r\n"
readfrom(file)
while 1 do
local line = read()
if line == nil then
readfrom()
break
end
text = text..line.."\r\n"
end
end
------------------------------------------------------------------------------
function SendAscii()
SendToAll(Bot, text.." |")
SendToAll(Bot, "happy new year 2 everybody from all the guy's/girls/bot's from the lua forum|")
end
------------------------------------------------------------------------------
function DataArrival(user, data)
if( strsub(data, 1, 1) == "<" ) then
data=strsub(data,1,strlen(data)-1)
s,e,cmd = strfind(data,"%b<>%s+(%S+)")
if cmd == "!daysleft" then
user:SendData(Bot, TimeLeft().."|")
return 1
end
end
end
------------------------------------------------------------------------------
function NewUserConnected(user)
user:SendData(Bot, TimeLeft().."|")
end
------------------------------------------------------------------------------
function OpConnected(user)
user:SendData(Bot, TimeLeft().."|")
end
------------------------------------------------------------------------------
function Main()
SetTimer(100 * 1000)
StartTimer()
SendToAll(Bot, TimeLeft().."|")
Sync()
ShowAscii()
last = 0
end
------------------------------------------------------------------------------
function Sync()
local curday,cursec = jdatehms(tonumber(date("%d")),tonumber(date("%m")),tonumber(date("%y")),tonumber(date("%H")),tonumber(date("%M")),tonumber(date("%S")))
local sylday,sylsec = jdatehms(SylDay,SylMonth,SylYear,24,0,0)
local tmp = sylsec-cursec
local hours, minutes,seconds = floor(mod(tmp/3600, 60)), floor(mod(tmp/60, 60)), floor(mod(tmp/1, 60))
local day = sylday-curday
if day ~= 0 then
adjust = (floor(mod(minutes, 60))*60)+seconds
if adjust ~= 0 then
SetTimer(adjust * 1000)
else
SetTimer(3600 * 1000)
end
else
if tmp > 3600 then --- every hours a msg
adjust = (floor(mod(minutes, 60))*60)+seconds
if adjust ~= 0 then
SetTimer(adjust * 1000)
else
SetTimer(3600 * 1000)
end
elseif tmp > 900 then -- every 15 mins a msg
adjust = (floor(mod(minutes, 15))*60)+seconds
if adjust ~= 0 then
SetTimer(adjust * 1000)
else
SetTimer(900 * 1000)
end
elseif tmp > 300 then -- every 5 mins a msg
adjust = (floor(mod(minutes, 5))*60)+seconds
if adjust ~= 0 then
SetTimer(adjust * 1000)
else
SetTimer(300 * 1000)
end
elseif tmp > 60 then -- every min a msg
adjust = (floor(mod(minutes, 1))*60)+seconds
if adjust ~= 0 then
SetTimer(adjust * 1000)
else
SetTimer(60 * 1000)
end
elseif tmp > 15 then -- every 15 secs a msg
adjust = floor(mod(seconds, 15))
if adjust ~= 0 then
SetTimer(adjust * 1000)
else
SetTimer(15 * 1000)
end
elseif tmp > 10 then -- every 10 secs a msg
adjust = floor(mod(seconds, 10))
if adjust ~= 0 then
SetTimer(adjust * 1000)
else
SetTimer(5 * 1000)
end
elseif tmp > 1 then
SetTimer(1 * 1000)
else
last = 1
SetTimer(1 * 1000)
end
end
end  
Title:
Post by: plop on 01 October, 2004, 16:39:40
logical.
SylYear,SylMonth,SylDay = 03,12,31
your counting back from 31 - 12 - 2003.

plop
Title:
Post by: enema on 01 October, 2004, 16:51:38
How I hate when i try everything... possible and unpossible... smart and dumb stuff... and the answer seems to be so simple :D