[Minigame] Hangman |
Shamousey « Consul » 1394377800000
| 0 | ||
Leopardrun a dit : There's a link to it in the first post of the thread. http://pastebin.com/nyRGKPB0 |
Stockimages « Citoyen » 1394388960000
| 0 | ||
how do i read that thing? |
Williamkang « Citoyen » 1394646480000
| 0 | ||
what's the room? |
Deathmatic « Citoyen » 1394650320000
| 0 | ||
Williamkang a dit : Follow this link : http://pastebin.com/nyRGKPB0 Copy the code, then go to your tribehouse, write "/lua" and paste the code in the window. |
Nekoava « Citoyen » 1394921340000
| 0 | ||
Nice! :D But i found a bug that i'm too lazy to post right now T.T [Edit] So, I loaded the lua in my tribe house. When one of my friends left, it kept showing her as the person who chooses the word. For excample: Mouse1 makes the word. *Offline friend* makes the word. Mouse2 makes the word. *Offline friend* makes the word. >.< |
Nikuola « Citoyen » 1395676920000
| 0 | ||
Nekoava a dit : Yes! i had same bug. |
Excretion « Citoyen » 1396748640000
| 0 | ||
Is this module for 2 players? |
Deathmatic « Citoyen » 1397128320000
| 0 | ||
Excretion a dit : This module needs minimum 2 players to work. Have you ever tried to play Hangman alone ? ^^ |
Williamkang « Citoyen » 1397408460000
| 0 | ||
Deathmatic a dit : yeah i played it alone |
Vaporous « Citoyen » 1397831880000
| 0 | ||
So perfect! |
0 | ||
Not working. |
0 | ||
[Jordynl] eventChatCommand doesn't detect words smaller then 3 chars this doesn't work anymore |
Wolfclawgem « Citoyen » 1399697280000
| 0 | ||
I'll so just not know... |
Jakejune « Citoyen » 1426940760000
| 0 | ||
where's the code |
0 | ||
Good minigame. :) |
Xblueshadow « Citoyen » 1429240200000
| 0 | ||
How do you put this on the tribe house? ;; |
Woebegone « Citoyen » 1429306980000
| 0 | ||
xblueshadow a dit : Copy everything shown in the spoiler below: tfm.exec.disableAfkDeath(true) tfm.exec.disableAutoShaman(true) tfm.exec.disableAutoNewGame(true) tfm.exec.disableAutoScore(true) tfm.exec.disableAutoTimeLeft(true) chars = {"&","é","~","\"","{","|","è","`","_","à","@","]","+","=","}","¨","ë","ä","ü","ö","£","<",">","0","1","2","3","4","5","6","7","8","9"} lang = {} lang.fr = { ask_word = "Définir le mot à trouver", choose_word = "Choisissez un mot : (entre 2 et 12 caractères inclus, aucun accent)", more_players = "Vous devez être au moins <font color='#FF0000'>2</font> joueurs pour jouer au pendu.", next_turn_1 = "Le prochain tour débutera dans ", next_turn_2 = " seconde(s).", turn_of_1 = "C'est le tour de ", turn_of_2 = " ! ", patientez = "Patientez pendant qu'il choisir son mot...", word_found = "Le mot a été trouvé !", word_not_found = "Pas de chance ! Le mot était ", time_out = "Temps écoulé !", pass_turn = "Le maître du jeu a passé son tour !", quit = "Le maître du jeu a quitté !" } lang.en = { ask_word = "Define the word to find", choose_word = "Choose a word : (between 2 and 12 characters)", more_players = "You have to be at least <font color='#FF0000'>2</font> players to play Hangman.", next_turn_1 = "Next turn in ", next_turn_2 = " second(s).", turn_of_1 = "It's ", turn_of_2 = "'s turn ! ", patientez = "Wait while he's choosing a word...", word_found = "The word was found !", word_not_found = "No luck! The word was ", time_out = "Time out !", pass_turn = "The game master has passed his turn !", quit = "The game master has quit." } text = lang.en players = {} master = "" letters = {} invertLetters = {} word = "" hasDefinedWord = false timer = 0 bestPlayer = "" pendu_level = 0 beginReset = false hasToReset = false resetTimer = 0 isTimeOut = false hasWon = false hasLost = false hasSkipped = false hasQuit = false lettersEntered = {} id = {} id["ask_word_main"] = 1 id["ask_word_button"] = 2 id["ask_word_popup"] = 3 id["pendu"] = 4 id["reset_timer"] = 5 id["reset_timer_label"] = 6 id["turn"] = 7 id["turn_label"] = 8 id["one_player"] = 9 id["one_player_label"] = 10 function eventNewGame() updatePlayersList() ui.removeTextArea(id["one_player"]) ui.removeTextArea(id["one_player_label"]) letters = {} invertLetters = {} word = "" hasDefinedWord = false timer = 0 if getNbPlayers() > 1 then master = randomPlayer() tfm.exec.movePlayer(master, 400, 90, false, 0, 0, false) askWord() drawPendu() else removeAll() ui.addTextArea(id["one_player"], "", nil, 5, 110, 790, 25, 0xC0C0C0, 0x595959, 1f) ui.addTextArea(id["one_player_label"], "<p align='center'><BL><font color='#000000'>"..text.more_players.."</font></p>", nil, 25, 115, 750, 30, 0xC0C0C0, 0xC0C0C0, 0f) drawWord() drawPendu() end end function eventPlayerDied(playerName) tfm.exec.respawnPlayer(playerName) end function eventNewPlayer(playerName) table.insert(players, playerName) if getNbPlayers() == 2 then tfm.exec.newGame("@4488917") else tfm.exec.respawnPlayer(playerName) drawWord() drawPendu() end end function eventPlayerLeft(playerName) local toRemove = 0 for i,p in pairs(players) do if p==playerName then toRemove = i end end table.remove(players, toRemove) if getNbPlayers() == 1 then tfm.exec.newGame("@4488917") else if playerName==master then hasQuit = true reset() end end end function eventLoop(currentTime, timeRemaining) timer = timer + 0.5 if beginReset then ui.removeTextArea(id["ask_word_main"]) ui.removeTextArea(id["ask_word_button"]) resetTimer = resetTimer + 0.5 ui.addTextArea(id["reset_timer"], "", nil, 5, 110, 790, 25, 0xC0C0C0, 0x595959, 1f) if isTimeOut then ui.addTextArea(id["reset_timer_label"], "<p align='center'><BL>"..text.time_out.." <font color='#000000'>"..text.next_turn_1.."<font color='#FF0000'>"..math.floor(10 - resetTimer).."</font>"..text.next_turn_2.."</font></p>", nil, 25, 115, 750, 30, 0xC0C0C0, 0xC0C0C0, 0f) end if hasWon then ui.addTextArea(id["reset_timer_label"], "<p align='center'><BL>"..text.word_found.." <font color='#000000'>"..text.next_turn_1.."<font color='#FF0000'>"..math.floor(10 - resetTimer).."</font>"..text.next_turn_2.."</font></p>", nil, 25, 115, 750, 30, 0xC0C0C0, 0xC0C0C0, 0f) end if hasLost then ui.addTextArea(id["reset_timer_label"], "<p align='center'><font color='#000000'>"..text.word_not_found.."</font><BL>"..word:gsub("^%l", string.upper).."<font color='#000000'> ! "..text.next_turn_1.."<font color='#FF0000'>"..math.floor(10 - resetTimer).."</font>"..text.next_turn_2.."</font></p>", nil, 25, 115, 750, 30, 0xC0C0C0, 0xC0C0C0, 0f) end if hasSkiped then ui.addTextArea(id["reset_timer_label"], "<p align='center'><BL>"..text.pass_turn.."<font color='#000000'> "..text.next_turn_1.."<font color='#FF0000'>"..math.floor(10 - resetTimer).."</font>"..text.next_turn_2.."</font></p>", nil, 25, 115, 750, 30, 0xC0C0C0, 0xC0C0C0, 0f) end if hasQuit then ui.addTextArea(id["reset_timer_label"], "<p align='center'><BL>"..text.quit.."<font color='#000000'> "..text.next_turn_1.."<font color='#FF0000'>"..math.floor(10 - resetTimer).."</font>"..text.next_turn_2.."</font></p>", nil, 25, 115, 750, 30, 0xC0C0C0, 0xC0C0C0, 0f) end end checkBestPlayer() if timer==25 and not hasDefinedWord and getNbPlayers() > 1 then isTimeOut = true reset() end if resetTimer==10 then isTimeOut = false hasWon = false hasLost = false hasSkiped = false hasQuit = false hasToReset = true reset() end end function eventChatCommand(playerName, message) local args = {} for arg in message:gmatch("[^%s]+") do table.insert(args, arg:lower()) end if not hasLost and not hasSkiped and not hasQuit and args[1] ~= nil then if args[1]==word and playerName ~= master and not hasWon then local score = 0 for _,letter in pairs(letters) do if letter=="_" then score = score + 1 end end tfm.exec.setPlayerScore(playerName, score, true) local i = 1 while i <= word:len() do if letters~="_" then invertLetters = letters letters = "_" end i = i + 1 end drawWord() hasWon = true reset() end if args[1]=="skip" and playerName==master and not hasWon and not hasLost and not isTimeOut then hasSkiped = true reset() end if args[1]:len()==1 and hasDefinedWord and args[1]~= "_" and args[1]~="-" and args[1]~="'" and playerName ~= master then local isEntered = false for _,letter in pairs(lettersEntered) do if letter==args[1] then isEntered = true end end if not isEntered then local score = 0 local idsToRemove = {} local isFalse = true table.insert(lettersEntered, args[1]) for id,letter in pairs(letters) do if letter==args[1] then table.insert(idsToRemove, id) isFalse = false end end for _,idToRemove in pairs(idsToRemove) do invertLetters[idToRemove] = letters[idToRemove] letters[idToRemove] = "_" end score = #idsToRemove if isFalse then if tfm.get.room.playerList[playerName].score > 0 then score = -1 end pendu_level = pendu_level + 1 end tfm.exec.setPlayerScore(playerName, score, true) drawWord() drawPendu() end end end end function eventTextAreaCallback(textAreaId, playerName, callback) if callback=="callbackAskWord" then ui.addPopup(id["ask_word_popup"], 2, text.choose_word, master, 300, 175, 200) end end function eventPopupAnswer(popupId, playerName, answer) if popupId==id["ask_word_popup"] and not isTimeOut and master==playerName then local choosedWord = tostring(answer) if checkWord(choosedWord) then defineWord(choosedWord) hasDefinedWord = true askWord() ui.removeTextArea(id["turn"]) ui.removeTextArea(id["turn_label"]) end end end function askWord() ui.removeTextArea(id["reset_timer"]) ui.removeTextArea(id["reset_timer_label"]) ui.removeTextArea(id["ask_word_main"]) ui.removeTextArea(id["ask_word_button"]) if not hasDefinedWord then ui.addTextArea(id["ask_word_main"], "", master, 5, 110, 790, 35, 0xC0C0C0, 0x595959, 1f) ui.addTextArea(id["ask_word_button"], "<p align='center'><a href='event:callbackAskWord'>"..text.ask_word.."</a></p>", master, 300, 120, 190, 16, 0x595959, 0x595959, 1f) for p,_ in pairs(tfm.get.room.playerList) do if p~=master then ui.addTextArea(id["turn"], "", p, 5, 110, 790, 25, 0xC0C0C0, 0x595959, 1f) ui.addTextArea(id["turn_label"], "<p align='center'><font color='#000000'>"..text.turn_of_1.."</font><BL>"..master.."<font color='#000000'>"..text.turn_of_2..text.patientez.."</font></p>", p, 25, 115, 750, 30, 0xC0C0C0, 0xC0C0C0, 0f) end end end end function defineWord(new_word) word = string.lower(string.gsub(new_word, " ", "-")) letters = {} local i = 36 while i < 50 do ui.removeTextArea(i) i = i + 1 end for letter in new_word:gmatch"." do if letter==" " or letter=="-" then table.insert(invertLetters, "-") table.insert(letters, "_") elseif letter=="'" then table.insert(invertLetters, "'") table.insert(letters, "_") else table.insert(letters, letter:lower()) table.insert(invertLetters, "_") end end drawWord() drawPendu() end function drawWord() local textId = 36 local i = 1 local ancreX = 40 if #word==0 then local i = 36 while i < 50 do ui.removeTextArea(i) i = i + 1 end else while i <= word:len() do ui.addTextArea(textId, "<p align='center'><font size='40' color='#000000'>"..invertLetters:upper().."</font></p>", nil, ancreX, 150, 40, 60, 0xC0C0C0, 0xC0C0C0, 1f) ancreX = ancreX + 60 textId = textId + 1 i = i + 1 end local finished = true local j = 1 while j <= word:len() do if invertLetters[j]=="_" then finished = false end j = j + 1 end if finished then hasWon = true reset() end end end function drawPendu() local pendu = "" if pendu_level==1 then pendu = pendu.."<br /><br /><br /><br /><br /><br /><br /><br /><br /> _________" elseif pendu_level==2 then pendu = pendu.."<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==3 then pendu = pendu.." __________.__<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==4 then pendu = pendu.." __________.__<br />" pendu = pendu.." | /<br />" pendu = pendu.." |/<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==5 then pendu = pendu.." __________.__<br />" pendu = pendu.." | / |<br />" pendu = pendu.." |/<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==6 then pendu = pendu.." __________.__<br />" pendu = pendu.." | / |<br />" pendu = pendu.." |/ O<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==7 then pendu = pendu.." __________.__<br />" pendu = pendu.." | / |<br />" pendu = pendu.." |/ O<br />" pendu = pendu.." | /|<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==8 then pendu = pendu.." __________.__<br />" pendu = pendu.." | / |<br />" pendu = pendu.." |/ O<br />" pendu = pendu.." | /|\<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==9 then pendu = pendu.." __________.__<br />" pendu = pendu.." | / |<br />" pendu = pendu.." |/ O<br />" pendu = pendu.." | /|\\<br />" pendu = pendu.." | |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==10 then pendu = pendu.." __________.__<br />" pendu = pendu.." | / |<br />" pendu = pendu.." |/ O<br />" pendu = pendu.." | /|\\<br />" pendu = pendu.." | |<br />" pendu = pendu.." | /<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." |<br />" pendu = pendu.." ____|____" elseif pendu_level==11 then pendu = pendu.." __________.__<br />" pendu = pendu.." | / | <br />" pendu = pendu.." |/ O <br />" pendu = pendu.." | /|\\ <br />" pendu = pendu.." | | <br />" pendu = pendu.." | / \\ <br />" pendu = pendu.." | <br />" pendu = pendu.." | <br />" pendu = pendu.." | <br />" pendu = pendu.." ____|____" hasLost = true reset() end ui.addTextArea(id["pendu"], pendu, nil, 323, 235, 135, 138, 0x010101, 0xFFFFFF, 0.5f) end function reset() beginReset = true if hasToReset then if getNbPlayers() < 2 then tfm.exec.newGame("@4488917") else letters = {} invertLetters = {} word = "" hasDefinedWord = false pendu_level = 0 beginReset = false hasToReset = false resetTimer = 0 lettersEntered = {} drawWord() drawPendu() local randX = math.random(799) tfm.exec.movePlayer(master, randX, 385, false, 0, 0, false) local oldMaster = master if getNbPlayers()~=1 then if bestPlayer==oldMaster then while master==oldMaster do master = randomPlayer() end else master = bestPlayer end else master = bestPlayer end randX = math.random(799) tfm.exec.movePlayer(master, randX, 90, false, 0, 0, false) tfm.exec.setPlayerScore(master, 0, false) timer = 0 askWord() end end end function removeAll() ui.removeTextArea(id["ask_word_main"]) ui.removeTextArea(id["ask_word_button"]) ui.removeTextArea(id["ask_word_popup"]) ui.removeTextArea(id["pendu"]) ui.removeTextArea(id["reset_timer"]) ui.removeTextArea(id["reset_timer_label"]) ui.removeTextArea(id["turn"]) ui.removeTextArea(id["turn_label"]) ui.removeTextArea(id["one_player"]) ui.removeTextArea(id["one_player_label"]) end function checkWord(word_arg) if word_arg:len() >= 2 and word_arg:len() <= 12 then for _,c in pairs(chars) do if string.match(word_arg, c) then return false end end return true else return false end end function checkBestPlayer() topScore = 0 bestPlayer = randomPlayer() for name,player in pairs(tfm.get.room.playerList) do if player.score >= topScore then topScore = player.score bestPlayer = name end end end function getNbPlayers() return #players end function updatePlayersList() players = {} for p,_ in pairs(tfm.get.room.playerList) do table.insert(players, p) end end function randomPlayer() return players[math.random(1,#players)] end for name,player in pairs(tfm.get.room.playerList) do tfm.exec.setPlayerScore(name, 0, false) end updatePlayersList() bestPlayer = randomPlayer() tfm.exec.newGame("@4488917") Then go to your tribe house, type in /lua in your chat, paste the code in the window that pops up and then click on submit. |
Genovandfast « Citoyen » 1431100680000
| 0 | ||
We tried it on our tribe but it didnt work should we try it on utility or something else ? |
Sorrelle « Citoyen » 1449991860000
| 0 | ||
i wuv this minigame <3 |
Mmmmmmmmmmmmmmm « Citoyen » 1450123080000
| 0 | ||
every time iam entering a word, everything just resets, like /module stop |