Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- IceRace 0.5 BETA
- Module développé par Ceelebia
- Basé sur l'exemple de module du sujet "[Tutoriel] Syntaxe lua et exemple de module" de Podoko ;)
- En cas de redistribution de la version originale ou d'une version modifiée :
- vous DEVEZ citer les auteurs d'origine (Ceelebia & Podoko)
- ]]
- admin = "Ceelebia" -- Pseudo de l'administrateur du salon
- delaiEntreDeuxGlacons = 10 -- Délai (en millisecondes) d'attente entre le spawn de deux glaçons
- --- Le code du module. Evitez d'y toucher ;) ---
- function main() -- Fonction de lancement du module
- tfm.exec.disableAutoNewGame(true) -- Désactivation du changement de cartes
- tfm.exec.disableAutoShaman(true) -- Désactivation des chamanes sur les cartes
- mapList = { "125204","159903","176885","185685","197214","198028","212956","263777","270489","294822","322898","343455","350169","352617","404907","414991","421583","422305","465849","476573","481925","484218","497904","498707","506950","508252","509145","515913","542870","544675","570888","593948","609552","626107","742744","898449","1089882","1095753","1100306","1296882","1341133","1365330","1380404","1390764","1405207","1452753","1474189","1518389","1568962","1651220","1653564","1662853","1696100","1703817","1709353","1721620","1758349","1789491","1805044","1821046","1830591","1887755","1901078","1912644","2002867","2099300","2110278","2170579","2190794","2472355","2476452","2479717","2541893","2562533","2564902","2574988","2611862","2768546","2781563","2785680","2850049","2854223","2859994","2866657","2873024","2876773","2877342","2902195","2993038","3036001","3056988","3165231","3175580","3210210","3265149","3296020","3296027","3296031","3418308","3460996","3482188","3518304","3537721","3605225","3611506","3630912","3688810","3755513","3797905","3810119","3866756"}
- offsets = {} -- Création de la table qui contiendra les offsets de chaque joueur.
- glacons = {} -- Création de la table qui contiendra les glacons (ou plutôt leur ID) de chaque joueur.
- lastSpirit = {} -- Création de la table qui contiendra l'heure à laquel chaque joueur a lancé un esprit
- bans = {} -- Création de la table qui contient les bans (muhahah)
- for name in pairs(tfm.get.room.playerList) do -- Pour tous les joueurs déjà dans le salon
- eventNewPlayer(name) -- On fait comme s'ils venaient d'entrer pour activer l'écoute des touches du clavier
- end
- message = "IceRace v0.5 BETA\nJeu développé par Ceelebia\nBasé un module de Podoko\n\nReproduction interdite\n\nAdministrateur du salon : " .. admin
- ui.addPopup (103, 0, message, nil, nil, nil, nil, nil)
- system.disableChatCommandDisplay("offset", true)
- system.disableChatCommandDisplay("next", true)
- system.disableChatCommandDisplay("cheatlol", true)
- system.disableChatCommandDisplay("ban", true)
- end
- function eventNewPlayer(name) -- Se déclenche automatiquement quand un joueur entre dans le salon
- tfm.exec.bindKeyboard(name, 40, true, true) -- On écoute la touche 39 (flèche bas)
- tfm.exec.bindKeyboard(name, 83, true, true) -- On écoute la touche 38 (S)
- tfm.exec.bindKeyboard(name, 32, true, true) -- On écoute la touche 32 (espace)
- offsets[name] = {x=0, y=10} -- On ajoute l'offset du joueur dans la liste
- lastSpirit[name] = os.time() -- renvoie l'heure au moment de l'appel en millisecondes.
- glacons[name] = "pasencore"
- end
- function eventKeyboard(name, key, down, x, y)
- if (key==40 or key==83) and not tfm.get.room.playerList[name].isDead and os.time()-lastSpirit[name]>=delaiEntreDeuxGlacons and glacons[name] ~= "pasencore" then
- local tid = glacons[name]
- tfm.exec.removeObject(tid)
- local id = tfm.exec.addShamanObject(54, x+offsets[name].x, y+offsets[name].y, 0, 0, 0, false) -- On met l'esprit
- lastSpirit[name] = os.time() -- On sauvegarde l'heure où on lance l'esprit
- glacons[name] = id
- elseif (key==40 or key==83) and glacons[name] ~= "STOP" and os.time()-lastSpirit[name]>=delaiEntreDeuxGlacons then
- local id = tfm.exec.addShamanObject(54, x+offsets[name].x, y+offsets[name].y, 0, 0, 0, false) -- On met l'esprit
- lastSpirit[name] = os.time() -- On sauvegarde l'heure où on lance l'esprit
- glacons[name] = id
- elseif (key==32) then
- eventChatCommand(name, "cheatlol")
- end
- end
- function eventLoop(timePast, timeLeft)
- if timeLeft <= 0 then -- S'il reste moins de 0 millisecondes
- tfm.exec.newGame( mapList[math.random(#mapList)] ) -- On lance une carte de la liste
- end
- end
- function eventPlayerDied(name)
- if playerLeft() == 0 then -- S'il n'y a plus de joueurs sur la carte ...
- tfm.exec.newGame( mapList[math.random(#mapList)] ) -- On lance une carte de la liste
- end
- glacons[name] = "STOP"
- end
- function eventPlayerWon(name, timeBegin, timeRes)
- if playerLeft() == 0 then -- Comme pour eventPlayerDied
- tfm.exec.newGame( mapList[math.random(#mapList)] )
- end
- end
- function playerLeft()
- local i = 0 -- Compteur de souris
- for _, prop in pairs(tfm.get.room.playerList) do
- if not prop.isDead then -- Si le joueur est encore sur la carte ...
- i = i+1 -- On ajoute 1 au compteur
- end
- end
- return i -- On renvoie le nombre de souris vivantes
- end
- function secureEventChatCommand(playerName, command)
- local nextWord = string.gmatch(command, '%S+') -- on sauvegarde la fonction qui renverra les mots de command
- local word1 = nextWord()
- if word1 == "offset" then -- si le premier mot est la commande "offset"
- local a, b = tonumber(nextWord()), tonumber(nextWord()) -- on sauvegarde l'x et l'y du nouvel offset sous forme de nombre
- offsets[playerName] = { x = a and math.abs(a)<30 and a or offsets[name].x, y = b and math.abs(b)<30 and b or offsets[name].y }
- elseif word1 == "next" and playerName == admin then
- tfm.exec.newGame( mapList[math.random(#mapList)] ) -- On lance une carte de la liste
- elseif word1 == "cheatlol" and playerName == admin then
- tfm.exec.killPlayer(playerName)
- tfm.exec.respawnPlayer(playerName)
- tfm.exec.giveCheese(playerName)
- tfm.exec.playerVictory(playerName)
- elseif word1 == "cheatlol" and playerName ~= admin then
- tfm.exec.killPlayer(playerName)
- message = playerName .. " a tenté de tricher sans avoir l'autorisation de l'administrateur " .. admin .. "\nAttention : vous risquez un bannissement du salon !"
- ui.addPopup (103, 0, message, nil, nil, nil, nil, nil)
- elseif word1 == "ban" and playerName == admin then
- local name = nextWord()
- local temps = nextWord()
- local raison = nextWord()
- if name == admin then -- Si on tente de ban l'admin
- name = nil -- On fait tout crash ;)
- end
- bans[name] = temps
- tfm.exec.killPlayer(name)
- message = "L'administrateur " .. playerName .. " a banni " .. name .. " du salon pour ".. temps .." parties. Raison : " .. raison
- ui.addPopup (103, 0, message, nil, nil, nil, nil, nil)
- end
- end
- function eventChatCommand(playerName, command) -- Les commandes
- pcall(secureEventChatCommand, playerName, command)
- end
- function banMotor()
- for name in pairs(tfm.get.room.playerList) do -- Pour tous les joueurs déjà dans le salon
- if bans[name] == nil then
- -- pass
- else
- bans[name] = tonumber(bans[name])
- end
- if bans[name] == nil then
- -- pass
- elseif bans[name] == 0 then
- message = "Votre bannissement est terminé. Ne faites plus les mêmes erreurs ;)"
- ui.addPopup (103, 0, message, name, nil, nil, nil, nil)
- bans[name] = nil
- elseif bans[name] ~= 0 then
- message = "Vous êtes banni pendant encore " .. bans[name] .. " parties ! Courage :D"
- ui.addPopup (103, 0, message, name, nil, nil, nil, nil)
- tfm.exec.killPlayer(name)
- bans[name] = bans[name] - 1
- end
- end
- end
- function eventNewGame()
- if pcall(banMotor) then
- -- pass
- else
- print("Une erreur est survenue lors du checkban.\nReset des bans...")
- bans = {}
- end
- tfm.exec.setUIShamanName("- IceRace 0.5 BETA")
- end
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement