Fórum WebTuga

Tecnologia => Programação => Topic started by: malaquias_ on June 06, 2006, 11:52:51 PM

Title: Lua Script
Post by: malaquias_ on June 06, 2006, 11:52:51 PM
Aqui fica o exemplo de um script dc++, inacabado, em que ate introduzi o nome do cenourinha e do radikal-rider! cujo a função é saber a informação do hub, como o uptime.

NomeBot = "InformaçãoHub"



Seg = 1000

min = seg*60

hora = min*60

dias = horas*24



tempo = 1*hora



Função Main()

Ajustetempo(tempo)

InicioTempo()

end





função chegadadados(user, data)

-- remova (inacabado)

data=strsub(data,1,strlen(data)-1)

--extracto comando

_,_,cmd=strfind(data, "%b<>%s+(%S+)")

if(cmd == "uptime") então

local sec = hora()

local dias = floor(sec/86400)

local hrs = floor((sec-(dias*86400))/3600)

local min = floor((sec-(dias*86400)-(hrs*3600))/60)

sec = floor(sec-(dias*86400)-(hrs*3600)-(min*60))

user:emitadados("uptime", "*** "..dias.." dias, "..hrs.." horas "..min.." minutos e "..sec.." segundos")

retrodecer 1;

end

end





função notempo()

local sec = hora()

local dias = floor(sec/86400)

local hrs = floor((sec-(dias*86400))/3600)

local min = floor((sec-(dias*86400)-(hrs*3600))/60)

sec = floor(sec-(dias*86400)-(hrs*3600)-(min*60))

EnviaraTudo(nomebot, "Ã,©=============="..frmHub:Nomehub().."=================| Ã,©| ::Owner hub: [SP]PortalinuX | ::Hub Info: Min Share 5 Gb | ::regras hub: escreve !regras ou !ajuda | ::OpÃ,´s hub: [tagISP]Cenourinha [tagISP]radikal-rider | ::E-mail hub: webtuga@hotmail.com | ::Endereço hub: webtuga.no-ip.org ::Uptime = "..dias.." diass, "..hrs.." horas "..min.." minutos e "..sec.." segundos = Ã,©")

EnviaraTudo(nomebot, "Ã,©============="..frmHub:Contausers().." de "..frmHub:MaximoUsers().." Users Ligados==================")

end




-----------------------------------------------




Aqui fica outro, acabado, em inglês feito pelo meu amigo leon. Este script é para jogar o habitual jogo Trivia, o jogo das perguntas, ás quais temos de responder.

Aqui fica
-- TriviaBot.lua by Leon

BotName = "TriviaBot"



guessArray = {}

lngGuessmax = 0

playerArray = {}

pointArray = {}

boolWord = 0

lngPassed = 0

strWord = ""

strQuestion = ""

strSolved = ""

JoinTrigg = "!TrivJoin"

PartTrigg = "!TrivPart"

StartTrigg = "!TrivStart"

StopTrigg = "!TrivStop"

WordTrigg = "!TrivWord"

QuizTrigg = "!TrivQuestion"

RestartTrigg = "!TrivRestart"

PointTrigg = "!TrivPoints"

ScoreTrigg = "!TrivScores"

PlayerTrigg = "!TrivPlayers"

QuestionsTrigg = "!TrivQuestions"

ReloadTrigg = "!TrivReload"

strVer = "v 0.2"

strBanner = "Type \\'"..StartTrigg.."\\' to start Trivia, \\'"..StopTrigg.."\\' to stop Trivia, type \\'"..JoinTrigg.."\\' to Join and \\'"..PartTrigg.."\\' to Part!"

strStart = "TriviaBot "..strVer.." started! "..strBanner

strStopp = "TriviaBot "..strVer.." stopped! "..strBanner



function Main()

  frmHub:RegBot(BotName)

  ReloadQuestions()

end



function UserDisconnected(curUser)

  if (playerArray[curUser.sName] ~= nil) then

playerArray[curUser.sName] = nil

  end

end



function OpDisconnected(curUser)

  if (playerArray[curUser.sName] ~= nil) then

playerArray[curUser.sName] = nil

  end

end



function DataArrival(curUser, data)

  if (strsub(data, 1, 1) == "<") then



if (strfind(strlower(data), strlower(BotName))) then

 curUser:SendPM(BotName, "Commands:")

 curUser:SendPM(BotName, "No commands are case-sensitive!!!")

 curUser:SendPM(BotName, "No commands are case-sensitive!!!")

 curUser:SendPM(BotName, "---------------------------------------------------------")

 curUser:SendPM(BotName, JoinTrigg.." - Joins you to Trivia")

 curUser:SendPM(BotName, PartTrigg.." - Parts you from Trivia")

 curUser:SendPM(BotName, StartTrigg.." - Starts the TriviaBot")

 curUser:SendPM(BotName, StopTrigg.." - Stops the TriviaBot")

 curUser:SendPM(BotName, WordTrigg.." - Shows current word (solve)")

 curUser:SendPM(BotName, QuizTrigg.." - Shows current question")

 curUser:SendPM(BotName, RestartTrigg.." - Restarts the bot (only for OPs)")

 curUser:SendPM(BotName, PointTrigg.." - Shows your points")

 curUser:SendPM(BotName, ScoreTrigg.." - Shows all scores")

 curUser:SendPM(BotName, PlayerTrigg.." - Shows all players in current game")

 curUser:SendPM(BotName, QuestionsTrigg.." - Shows all questions (only for OPs)")

 curUser:SendPM(BotName, ReloadTrigg.." - Reloads question file (only for OPs)")

 curUser:SendPM(BotName, "---------------------------------------------------------")

 curUser:SendPM(BotName, "all commands only work in mainwindow")

end



data=strsub(data, 1, strlen(data)-1)



_,_,firstWord = strfind(data, "%b<>%s+(%S+)")



if (strlower(firstWord) == strlower(JoinTrigg)) then

 if (playerArray[curUser.sName] == "Player") then

SendToAll(BotName, "You are already a player "..curUser.sName.."!")

 else

playerArray[curUser.sName] = "Player"

SendToAll(BotName, curUser.sName.." is now a player!")

 end

elseif (strlower(firstWord) == strlower(PartTrigg)) then

 if (playerArray[curUser.sName] == nil) then

SendToAll(BotName, "You are not a player "..curUser.sName.."!")

 else

playerArray[curUser.sName] = nil

SendToAll(BotName, curUser.sName.." is no longer a player!")

 end

elseif (strlower(firstWord) == strlower(RestartTrigg)) then

 if (curUser.bOperator) then

StopQuiz()

pointArray = {}

SendToAll(BotName, "TriviaBot restarted All points etc is lost!")

 end

elseif (strlower(firstWord) == strlower(PointTrigg)) then

 if (pointArray[curUser.sName] ~= nil) then

curUser:SendPM(BotName, "You have "..pointArray[curUser.sName].." points!")

 else

curUser:SendPM(BotName, "You have 0 points!")

 end

elseif (strlower(firstWord) == "!admin") then

 --local highscore = {}

 --for index, value in pointArray do

 --  tinsert (highscore, index..": "..value)

 --end

elseif (strlower(firstWord) == strlower(ScoreTrigg)) then

 SendToAll(BotName, "SCORES:")

 SendToAll(BotName, "---------------------------------------------------------")

 for index, value in pointArray do

SendToAll(BotName, index.."\\'s points: "..value)

 end

 SendToAll(BotName, "---------------------------------------------------------")

elseif (strlower(firstWord) == strlower(PlayerTrigg)) then

 curUser:SendPM(BotName, "PLAYERS:")

 curUser:SendPM(BotName, "---------------------------------------------------------")

 for index, value in playerArray do

curUser:SendPM(BotName, index)

 end

 curUser:SendPM(BotName, "---------------------------------------------------------")

 curUser:SendPM(BotName, " ")

elseif (strlower(firstWord) == strlower(QuestionsTrigg)) then

 if (curUser.bOperator) then

curUser:SendPM(BotName, "QUESTIONS:")

curUser:SendPM(BotName, "---------------------------------------------------------")

for index,value in guessArray do

 if (index ~= "n") then

arrTmp = tokenize(guessArray[index], "Ã,§")

strTmp = arrTmp[1]

curUser:SendPM(BotName, "["..index.."] "..strTmp)

 end

end

curUser:SendPM(BotName, "---------------------------------------------------------")

curUser:SendPM(BotName, " ")

 end

elseif (strlower(firstWord) == strlower(StartTrigg)) then

 if (boolWord == 0) then

playerArray[curUser.sName] = "Player"

StopQuiz()

SendToAll(BotName, strStart)

StartQuiz()

 else

SendToAll(BotName, "There is allready a game going on! "..strBanner)

 end

elseif (strlower(firstWord) == strlower(StopTrigg)) then

--  if (curUser.bOperator) then

if (boolWord ~= 0) then

 StopQuiz()

 SendToAll(BotName, strStopp)

else

 SendToAll(BotName, "No game going on! "..strBanner)

end

--  end

elseif (strlower(firstWord) == strlower(WordTrigg)) then

 if (boolWord ~= 0) then

SendToAll(BotName, "Current word is: "..strSolved.." ("..strlen(strSolved)..")")

 else

SendToAll(BotName, "No game active!")

SendToAll(BotName, strBanner)

 end

elseif (strlower(firstWord) == strlower(QuizTrigg)) then

 if (boolWord ~= 0) then

SendToAll(BotName, "Question is: "..strQuestion)

 else

SendToAll(BotName, "No game active!")

SendToAll(BotName, strBanner)

 end

elseif (strlower(firstWord) == strlower(ReloadTrigg)) then

 if (curUser.bOperator) then

ReloadQuestions()

 end

else

 if (boolWord ~= 0) then

if (playerArray[curUser.sName] == "Player") then

 

 --/ _,_,msg = strfind(data,"%b<>%s+([%w]*)")

 msg = strsub(data, 4+strlen(curUser.sName))

 if (strlen(msg) >= strlen(strWord)) then

local boolDisc = 0



strTurn = ""

for x=1,strlen(strSolved) do

 if (strsub(strSolved, x, x) == "*") then

if (strlower(strsub(msg, x, x)) == strlower(strsub(strWord, x, x))) then

 strTurn = strTurn..strsub(strWord, x, x)

 boolDisc = 1

else

 strTurn = strTurn..strsub(strSolved, x, x)

end

 else

strTurn = strTurn..strsub(strSolved, x, x)

 end

end



if (boolDisc == 1) then

 strSolved = strTurn

end

if (boolDisc == 1) then

 if (strlower(msg) ~= strlower(strWord)) then

SendToAll(BotName, "Word is now: "..strSolved)

 end

end

if (strlower(msg) == strlower(strWord)) then

 if (pointArray[curUser.sName] == nil) then

pointArray[curUser.sName] = 0

 end

 pointArray[curUser.sName] = pointArray[curUser.sName] + strlen(strSolved)

 SendToAll(BotName, "Word was: "..strSolved)

 SendToAll(BotName, "Word was solved by: "..curUser.sName)

--  SendToAll(BotName, curUser.sName.."\\'s points: "..pointArray[curUser.sName])

--  curUser:SendPM(BotName, "You now have "..pointArray[curUser.sName].." points!")

 StopQuiz()

 StartQuiz()

end

 end

end

 end

end

  end

end



function StopQuiz()

--  playerArray = {}

  boolWord = 0

  lngPassed = 0

  strWord = ""

  strQuestion = ""

  strSolved = ""

  StopTimer()

end



function StartQuiz()

  boolWord = random(1, lngGuessmax)

  QWarray=tokenize(guessArray[boolWord], "Ã,§")

  strQuestion = QWarray[1]

  strWord = QWarray[2]

  strSolved = ""

  for x=1,strlen(strWord) do

strSolved = strSolved.."*"

  end

  lngPassed = 0

  SetTimer(15000)

  StartTimer()

  SendToAll(BotName, "Question: "..strQuestion)

  SendToAll(BotName, "Word: "..strSolved.." ("..strlen(strSolved)..")")

end



function OnTimer()

--  SendToAll(BotName, "Current solve is: "..strSolved)

  lngPassed = lngPassed+1

  if lngPassed > 3 then

SendToAll(BotName, "Word was: "..strWord)

SendToAll(BotName, "Word was not solved!")

StopQuiz()

StartQuiz()

  end

end



function tokenize (inString,token)  

  _WORDS = {}  

  local matcher = "([^"..token.."]+)"  

  gsub(inString, matcher, function (w) tinsert(_WORDS,w) end)  

  return _WORDS  

end



function ReloadQuestions()

  guessArray = {}

  lngGuessmax = 0

  local boolRestart = 0

  if (boolWord ~= 0) then

SendToAll(BotName, "Reloading questions, game will be shut down!")

StopQuiz()

boolRestart = 1

  end

  handle=openfile("Trivia.txt","r")

  if (handle ~= nil) then

local line

line = read(handle,"*a")

line=strsub(line,1,strlen(line)-1)



guessArray=tokenize(line,"nr")

for i=1,guessArray.n do

 lngGuessmax = lngGuessmax + 1

end

  else

  guessArray = {

"The finest car there is?Ã,§Honda CRX del Sol"

  }

  end

  closefile(handle)

  if (boolRestart == 1) then

SendToAll(BotName, "Reloaded questions, game will be restarted! Current # of questions: "..lngGuessmax)

StartQuiz()

  end

end
Title: Lua Script
Post by: KTachyon on June 07, 2006, 01:14:58 AM
Isto é a linguagem .lua, certo? Não estou a ver mto mais poder que outras linguagens conhecidas (como Java ou C).
Title: Lua Script
Post by: PT-NGS- on June 07, 2006, 02:52:17 AM
Boas..

KhAoTiK_TaChYoN, o que se passou foi o seguinte, eu e i lynux queria-mos dizer poderoso em termos de scripts ( .lua ) para correr no PtoKax para servir um hub..

Na área de scripts para hubs, este é o mais poderoso..

OBS: Mas como eu disse, este assunto não vou debater contigo, pq não estou à tua altura..
Title: Lua Script
Post by: radikal-rider on June 07, 2006, 01:48:15 PM
QuoteIsto é a linguagem .lua, certo? Não estou a ver mto mais poder que outras linguagens conhecidas (como Java ou C).

Yap, é lua sem dúvida nenhuma, título do tópico alterado.
Title: Lua Script
Post by: malaquias_ on June 07, 2006, 03:01:38 PM
QuoteIsto é a linguagem .lua, certo? Não estou a ver mto mais poder que outras linguagens conhecidas (como Java ou C).
Sim é lua, esquecime de especificar. Eu quando disse que era poderoso, é em termos de sript para hubs. Mas podes crer que não fica atrás de outra linguagem qualquer. Eu pessoalmente o que sei de lua aprendi sozinho, com muito esforço e compreensão. Não sei muito, confesso, mas vou tentanto perceber e desenvolver scripts para  a comunidade portuguesa direct connet.
Title: Lua Script
Post by: KTachyon on June 07, 2006, 03:23:30 PM
Uma coisa é certa, não é mais poderosa que asm, nem que a linguagem com que é feito o compilador/interpretador (com já referi no outro post onde falámos disto) e que adivinho que seja o C (e consequentemente, todas as suas variantes: C++, C#, Obj-C, Obj-C++,...).