Module tribu vs tribu (IT) pour Vanilla |
V_incentsgm « Citoyen » 1488060960000
| 0 | ||
Bonjour, bonsoir, je vous présente "mon" module IT Vanilla. Mon entre guillemet car j'ai en fait repris un module similaire de racing (trouvé sur la chaîne YouTube de Pgmsule). J'y ai modifié les maps, rajouté une ligne pour désactiver les consommables troll, et mis en langue française (il était en anglais). Il vous servira bien sur à faire des matchs tribu vs tribu ( ou team vs team ). J'espère qu'il vous plaira :) Assurez vous d'avoir les droits nécessaires dans votre tribu pour pouvoir lancer le module, puis allez dans votre maison de tribu. Pour inviter quelqu'un dans la maison de tribu : /inv pseudodujoueur Vous devez copier/coller le script dans l'éditeur qui apparaîtra sur votre écran en écrivant la commande /lua Une fois le code mis et les joueurs présents, cliquez sur valider pour lancer le module. Pour l'arrêter, /module stop Vous devrez l'arrêter si vous voulez lancer une autre partie sinon le message annonçant la team gagnante restera là ! La toute première chose à faire sera de mettre votre pseudo entre guillemet à la 4è ligne du script local ADMINISTRADOR = "votre pseudo" local WINS = 20 et le nom des équipes local names = { "Equipe rouge", "Equipe bleue" } Après avoir lancé le script, utilisez la commande !team1 Joueurs et !team2 Joueurs pour mettre les joueurs dans l'équipe voulue (les pseudos doivent se suivrent et avec un espace, par exemple pour mettre Ilovelevel et Vincentsgm dans l'équipe 2 : !team2 Ilovelevel Vincentsgm ) Vous n'aurez plus qu'à appuyer sur GO ! au milieu du tableau. Tapez !np @codedelamap pour choisir la prochaine carte. Tapez !score team1/team2 et le score que vous voulez mettre ( je veux mettre 10 points à l'équipe 1 : !score team1 10 ) si vous devez changer le score ( arbitrage par exemple ). Tapez !pause pour mettre ou enlever une pause du module. Voici le script : tfm.exec.disableAutoShaman() tfm.exec.disableAutoNewGame() tfm.exec.disableAutoTimeLeft() local ADMINISTRADOR = "Ilovelevel" -- CHEF DU MODULE local WINS = 20 -- POINTS POUR GAGNER system.disableChatCommandDisplay("np", true) system.disableChatCommandDisplay("pause", true) local names = { "Equipe rouge", "Equipe bleue" } local teams = { [1] = {}, [2] = {}, } local points = { [1] = 0, [2] = 0, } local isfirst = false local gameRunning = false local winTime = false local playersInGame = {} local maps = { 1, 2, 6, 10, 11, 12, 19, 22, 24, 26, 27, 30, 40, 41, 42, 44, 45, 49, 53, 55, 57, 58, 59, 61, 62, 67, 69, 70, 71, 73, 74, 75, 76, 77, 79, 80, 85, 86, 96, 100, 119, 121, 122, 123, 127, 138, 142, 145, 149, 150 } local colors = { [1] = "ff6347", [2] = "19b5fe" } local queue = {} function newMap() local mapcode = maps[math.random(#maps)] if #queue > 0 then mapcode = queue[1] table.remove(queue, 1) end tfm.exec.newGame(mapcode) for player, data in pairs(tfm.get.room.playerList) do if not playersInGame[player] then tfm.exec.killPlayer(player) end end tfm.exec.setGameTime(60) tfm.exec.disablePhysicalConsumables (yes) end function eventPlayerWon(player) if not isfirst then isfirst = true tfm.exec.setGameTime(5) if table.contains(teams[1], player) then tfm.exec.setGameTime(5) for i = 0, 3 do defaultEffect(9, {13}, math.random(800), math.random(400), 20) end points[1] = points[1]+1 elseif table.contains(teams[2], player) then tfm.exec.setGameTime(5) for i = 0, 3 do defaultEffect(9, {9}, math.random(800), math.random(400), 20) end points[2] = points[2]+1 else isfirst = false end winner = false if points[1] >= WINS then winner = 1 elseif points[2] >= WINS then winner = 2 end if winner then gameRunning = false winTime = os.time() ui.addTextArea(20, string.format("<p align='center'><font size='37' color='#000000'>L'équipe %s est vainqueur!\nBravo!", names[winner]), nil, 0, 171, 800, 500, 0, 0, 0, true) ui.addTextArea(21, string.format("<p align='center'><font size='37' color='#000000'>L'équipe %s est vainqueur!\nBravo!", names[winner]), nil, 1, 170, 800, 500, 0, 0, 0, true) ui.addTextArea(22, string.format("<p align='center'><font size='37'><font color='#FFFFFF'>L'équipe <font color='#%s'>%s</font> est vainqueur!\nBravo!", colors[winner], names[winner]), nil, 1, 170, 800, 500, 0, 0, 0, true) end displayScore() end end function eventLoop(elapsed, remain) if gameRunning then remain = remain/1000 if remain < 0 then remain = 100 newMap() end else if winTime then if winTime > os.time()-30000 then for i = 0, 2 do defaultEffect(9, {11, 9, 0, 13}, math.random(800), math.random(400), 80) end else winTime = false ui.removeTextArea(20) ui.removeTextArea(21) ui.removeTextArea(22) displayTeams() teams = { [1] = {}, [2] = {}, } points = { [1] = 0, [2] = 0, } playersInGame = {} end end end end function string.title(s) return string.gsub(s, "%a", function(c) return string.upper(c) end, 1) end function eventChatCommand(player, command) if player:lower() == ADMINISTRADOR:lower() then args = string.split(command, " ") if args[1] == "team1" then table.remove(args, 1) teams[1] = {} points[1] = 0 for index, player in pairs(args) do player = string.title(player) table.insert(teams[1], player) playersInGame[player] = true end displayTeams() elseif args[1] == "team2" then table.remove(args, 1) teams[2] = {} points[2] = 0 for index, player in pairs(args) do player = string.title(player) table.insert(teams[2], player) playersInGame[player] = true end displayTeams() elseif args[1] == "score" then if args[2] and args[3] then local team = tonumber(args[2]:match("team(%d+)") or 0) if team > 0 and team < 3 then local newScore = tonumber(args[3]) or points[team] points[team] = newScore displayScore() end end elseif args[1] == "np" then if args[2] then table.insert(queue, args[2]) end elseif args[1] == "pause" then gameRunning = not gameRunning if not gameRunning then ui.addTextArea(90, "<p align='center'><font size='25'><R>P A U S E D", nil, 0, 200, 800, nil, 0, 0, 0, true) tfm.exec.disableAutoTimeLeft(true) else ui.removeTextArea(90) tfm.exec.disableAutoTimeLeft(false) end end end end function eventNewGame() if gameRunning then isfirst = false for i, p in pairs(teams[1]) do tfm.exec.setNameColor(p, "0x"..colors[1]) end for i, p in pairs(teams[2]) do tfm.exec.setNameColor(p, "0x"..colors[2]) end displayScore() end end function displayScore() ui.addTextArea(17, string.format("<p align='center'><font size='23' color='#000000'>%s x %s", points[1], points[2]), nil, 0, 21, 800, 30, 0, 0, 0, true) ui.addTextArea(18, string.format("<p align='center'><font size='23' color='#000000'>%s x %s", points[1], points[2]), nil, 1, 20, 800, 30, 0, 0, 0, true) ui.addTextArea(19, string.format("<p align='center'><font size='23'><font color='#%s'>%s<N> x <font color='#%s'>%s", colors[1], points[1], colors[2], points[2]), nil, 0, 20, 800, 30, 0, 0, 0, true) end function displayTeams() ui.addTextArea(1, "", nil, 199, 69, 400, 260, 0x5A7A8B, 0x5A7A8B, 1, true) ui.addTextArea(2, "", nil, 201, 71, 400, 260, 0x0E1417, 0x0E1417, 1, true) ui.addTextArea(3, "", nil, 200, 70, 400, 260, 0x324650, 0x324650, 1, true) ui.addTextArea(4, "", nil, 209, 79, 142, 22, 0x324650, 0x5A7A8B, 1, true) ui.addTextArea(5, "<p align='center'><V>Team 1", nil, 210, 80, 140, 20, 0x324650, 0x324650, 1, true) ui.addTextArea(6, "", nil, 449, 79, 142, 22, 0x324650, 0x5A7A8B, 1, true) ui.addTextArea(7, "<p align='center'><V>Team 2", nil, 450, 80, 140, 20, 0x324650, 0x324650, 1, true) ui.addTextArea(8, "<p align='center'><font color='#5A7A8B'>|</font>", nil, 210, 102, 140, 200, 0, 0, 0, true) ui.addTextArea(9, "<p align='center'><font color='#5A7A8B'>|</font>", nil, 450, 102, 140, 200, 0, 0, 0, true) ui.addTextArea(10, "", nil, 209, 120, 140, 200, 0x5A7A8B, 0x5A7A8B, 1, true) ui.addTextArea(11, "<p align='center'><font color='#"..colors[1].."'>"..table.concat(teams[1], "\n"), nil, 210, 121, 138, 198, 0x324650, 0x324650, 1, true) ui.addTextArea(12, "", nil, 451, 120, 140, 200, 0x5A7A8B, 0x5A7A8B, 1, true) ui.addTextArea(13, "<p align='center'><font color='#"..colors[2].."'>"..table.concat(teams[2], "\n"), nil, 452, 121, 138, 198, 0x324650, 0x324650, 1, true) ui.addTextArea(14, "<p align='center'><font color='#5A7A8B'>____ ____</font>", nil, 330, 200, 140, 200, 0, 0, 0, true) ui.addTextArea(15, "", nil, 380, 202, 40, 20, 0x5A7A8B, 0x5A7A8B, 1, true) ui.addTextArea(16, "<p align='center'><V>VS", nil, 381, 203, 38, 18, 0x324650, 0x324650, 1, true) ui.addTextArea(16, "<p align='center'><V><a href='event:iniciarJogo'>GO", ADMINISTRADOR, 381, 203, 38, 18, 0x324650, 0x324650, 1, true) end function eventTextAreaCallback(id, player, callback) if callback == 'iniciarJogo' then if #teams[2] > 0 and #teams[1] > 0 then gameRunning = true for i = 1, 16 do ui.removeTextArea(i) end defaultEffect(9, {9}, 400, 212, 80) newMap() end end end function string.split(s, pattern, n) local st = {} for sb in string.gmatch(s, "[^"..pattern.."]+") do if not n or n > -1 then table.insert(st,sb) else st[#st] = st[#st]..pattern..sb end n = n and n-1 or false end return st end function table.contains(tableT, element) for _, value in pairs(tableT) do if value == element then return true end end return false end defaultEffect=function(id,p,x,y,rand) -- thanks for the function santah local minDist = 1 local outerBorder = 20 local maxDist = 30 local totalParticles = rand and 40 or (id == -1 and 35 or 75) for i = 1, totalParticles do if rand then id = p[math.random(#p)] end local dist = math.min(math.random(minDist, maxDist), outerBorder) local angle = math.random(0, 360) local r = math.rad(angle) local dx = math.cos(r) local dy = math.sin(r) local vx = dist * dx / 10 local vy = dist * dy / 10 local ax = -vx / dist / 15 local ay = (-vy / dist / 15) + 0.05 if id == -1 then tfm.exec.displayParticle(9, x + dx, y + dy, vx, vy, ax, ay, nil) tfm.exec.displayParticle(1, x + dx, y + dy, vx, vy, ax, ay, nil) else tfm.exec.displayParticle(id, x + dx, y + dy, vx, vy, ax, ay, nil) end end end displayTeams() function eventPlayerDied() local alive = 0 for k,v in pairs(tfm.get.room.playerList) do if not v.isDead then alive = alive+1 end end if alive < 2 then tfm.exec.setGameTime(5) end end Dernière modification le 1488114360000 |
Flottante « Censeur » 1488061320000
| 0 | ||
C'est comme Tribewar à l'époque ! c'est fun |
Survoltaje « Censeur » 1488061680000
| 1 | ||
Il marche bien ! Enfin des it propres. Il faudrait vraiment une version 2.0 avec un cham et les maps constructions, je pense qu'il aura pas mal de succès, la plupart des gros joueurs sont des vanilleurs maintenant. Dernière modification le 1488061740000 |
V_incentsgm « Citoyen » 1488061800000
| 0 | ||
Si tu veux remettre les chamanes et rajouter les map constructions supprime cette ligne (c'est la 1ère): tfm.exec.disableAutoShaman() et change la liste des maps ici local maps = { 1, 2, 6, 10, 11, 12, 19, 22, 24, 26, 27, 30, 40, 41, 42, 44, 45, 49, 53, 55, 57, 58, 59, 61, 62, 67, 69, 70, 71, 73, 74, 75, 76, 77, 79, 80, 85, 86, 96, 100, 119, 121, 122, 123, 127, 138, 142, 145, 149, 150 } Dernière modification le 1488114600000 |
Nicodoublet « Citoyen » 1488065520000
| 0 | ||
dans le script delete le map 0 sinon beau lua |
Flottante « Censeur » 1488065760000
| 0 | ||
J'ai essayer le module, il y a que des map vanilla ? |
Boueuse « Censeur » 1488065760000
| 0 | ||
Il est super le module ! |
Survoltaje « Censeur » 1488105840000
| 0 | ||
Ya un truc un peu lourd, c'est par exemple quand tout le monde meurt sauf moi, le temps passe à 4s et on peut pas finir la map alors que c'était un point gratuit.. Tu me diras l'arbitre peut changer les scores mais en 1v1 c'est chiant |
V_incentsgm « Citoyen » 1488114480000
| 0 | ||
J'éditerais le post de temps en temps en prenant les remarques en compte et je vous dirais ce qui a changé X) Oui il n'a que des map vanilla c'est le but ^^ Mais tu peux toujours en rajouter (sans le @ au début du code de la carte) Dernière modification le 1488114720000 |
Survoltaje « Censeur » 1488130800000
| 0 | ||
Tout en bas du code "if alive < 2" met 1 à la place de 2 ça devrait régler mon pb |
Ambre8 « Consul » 1488160440000
| 0 | ||
génial ton modulle |
Ahbonnnmec « Citoyen » 1620145500000
| 0 | ||
Survoltaje a dit : pareilll |