×

Langue

Fermer
Atelier 801
  • Forums
  • Dev Tracker
  • Connexion
    • English Français
      Português do Brasil Español
      Türkçe Polski
      Magyar Română
      العربية Skandinavisk
      Nederlands Deutsch
      Bahasa Indonesia Русский
      中文 Filipino
      Lietuvių kalba 日本語
      Suomi עברית
      Italiano Česky
      Hrvatski Slovensky
      Български Latviešu
      Estonian
  • Langue
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Aide] Demandes de codes et d'explications
« ‹ 67 / 70 › »
[Aide] Demandes de codes et d'explications
Yoshoups
« Censeur »
1493657400000
    • Yoshoups#0000
    • Profil
    • Derniers messages
    • Tribu
#1321
  0
Pourquoi quand j'utilise une table et que j'essaye de la print(), ça me donne ça:
table: 6b45b07
Athesdrake
« Citoyen »
1493664060000
    • Athesdrake#0000
    • Profil
    • Derniers messages
    • Tribu
#1322
  1
Parce que tu ne peux pas print() comme ça tout le contenu d'une table en Lua.
Ce que tu obtiens est le type de la variable que tu as print() suivit de son code hexadécimal dans la mémoire. En gros, des données pas très utiles.

Si tu veux print() tout le contenu d'une table, tu peux faire comme ça:
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
tbl = {"ceci", "est", "une", "phrase"}
print(string.format("{%s}", table.concat(tbl, ", ")))
-- Equivalent à:
print("{"..table.concat(tbl, ", ").."}")
-- Les accolades ne sont pas nécessaires, c'est juste pour bien montrer que c'est une table

--[[ resultat = table.concat(maTable, separateur, start, end)
maTable → table que tu veux concatèner
separateur → séparateur entre deux éléments de la table
start → index de début
end → index de fin
resultat → résultat sous forme de string
]]
Yoshoups
« Censeur »
1493737020000
    • Yoshoups#0000
    • Profil
    • Derniers messages
    • Tribu
#1323
  0
Athesdrake a dit :
Parce que tu ne peux pas print() comme ça tout le contenu d'une table en Lua.
Ce que tu obtiens est le type de la variable que tu as print() suivit de son code hexadécimal dans la mémoire. En gros, des données pas très utiles.

Si tu veux print() tout le contenu d'une table, tu peux faire comme ça:
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
tbl = {"ceci", "est", "une", "phrase"}
print(string.format("{%s}", table.concat(tbl, ", ")))
-- Equivalent à:
print("{"..table.concat(tbl, ", ").."}")
-- Les accolades ne sont pas nécessaires, c'est juste pour bien montrer que c'est une table

--[[ resultat = table.concat(maTable, separateur, start, end)
maTable → table que tu veux concatèner
separateur → séparateur entre deux éléments de la table
start → index de début
end → index de fin
resultat → résultat sous forme de string
]]

Merci ça marche ^^

Et sinon j'ai une autre demande assez complète car je sais pas du coup m'y prendre pour les tables, en gros j'aimerais faire un système d'économie, (par exemple une monnaie nommé "fromage"), avec une fonction du genre addMoney(nom du joueur, argent à donner), je sais pas trop si c'est possible en Lua.

Merci
Athesdrake
« Citoyen »
1493739000000
    • Athesdrake#0000
    • Profil
    • Derniers messages
    • Tribu
#1324
  1
Yoshoups a dit :
Athesdrake a dit :
Parce que tu ne peux pas print() comme ça tout le contenu d'une table en Lua.
Ce que tu obtiens est le type de la variable que tu as print() suivit de son code hexadécimal dans la mémoire. En gros, des données pas très utiles.

Si tu veux print() tout le contenu d'une table, tu peux faire comme ça:
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
tbl = {"ceci", "est", "une", "phrase"}
print(string.format("{%s}", table.concat(tbl, ", ")))
-- Equivalent à:
print("{"..table.concat(tbl, ", ").."}")
-- Les accolades ne sont pas nécessaires, c'est juste pour bien montrer que c'est une table

--[[ resultat = table.concat(maTable, separateur, start, end)
maTable → table que tu veux concatèner
separateur → séparateur entre deux éléments de la table
start → index de début
end → index de fin
resultat → résultat sous forme de string
]]

Merci ça marche ^^

Et sinon j'ai une autre demande assez complète car je sais pas du coup m'y prendre pour les tables, en gros j'aimerais faire un système d'économie, (par exemple une monnaie nommé "fromage"), avec une fonction du genre addMoney(nom du joueur, argent à donner), je sais pas trop si c'est possible en Lua.

Merci

Si c'est possible ^^

code

Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function main() -- Cette fonction permet de charger tout le code avant de faire quoi que ce soit, pour éviter certaines erreurs (et puis, c'est plus propre)
players = {} --table avec les données des joueurs

table.foreach(tfm.get.room.playerList, function(pl) eventNewPlayer(pl) end)
--[[équivaut à :
for pl in pairs(tfm.get.room.playerList) do
eventNewPlayer(pl)
end
]]
end

function eventNewPlayer(name)
if not players[name] then -- Pour pas effacer ses données s'il part et revient du salon
players[name] = {money=0}
end
add_money(name, 0) -- pour afficher le texte
end

function eventTextAreaCallback(id, name, call)
local args = {}
for arg in call:gmatch("%S+") do -- pour avoir tous les arguments (séparés par un espace)
table.insert(args, arg)
end
if args[1]=="func" then
local sub = {} -- les arguments que l'on va envoyer à la fonction donnée en args[2]
for s in args[3]:gmatch("[^,]+") do --on sépare avec les virgules
table.insert(sub, s=="name" and name or s) -- si l'argument est "name", on le remplace par name (:
end
_G[args[2]](table.unpack(sub)) -- Pour l'exemple, ça équivaut à add_money(name, 10)
-- _G → c'est LA table du Lua, tu as toutes les valeurs GLOBALES dedans (les valeurs non-globales sont les variables précédées de 'local' comme à la ligne 20 ou un argument de function par ex: name)
end
end

function add_money(name, nbr)
players[name].money = players[name].money +nbr
ui.addTextArea(1, string.format("<a href='event:func add_money name,10'>ajouter 10 fromages à ton compte</a>\n\nNombre de fromages: %d", players[name].money), name)
end

main() --pas oublier d'appeller cette fonction


N'hésite pas à me poser des questions, j'ai utilisé certains trucs que tu ne maîtrises peut-être pas trop en Lua ^^

Dernière modification le 1493739120000
Yoshoups
« Censeur »
1493740380000
    • Yoshoups#0000
    • Profil
    • Derniers messages
    • Tribu
#1325
  0
Athesdrake a dit :
Yoshoups a dit :
Athesdrake a dit :
Parce que tu ne peux pas print() comme ça tout le contenu d'une table en Lua.
Ce que tu obtiens est le type de la variable que tu as print() suivit de son code hexadécimal dans la mémoire. En gros, des données pas très utiles.

Si tu veux print() tout le contenu d'une table, tu peux faire comme ça:
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
tbl = {"ceci", "est", "une", "phrase"}
print(string.format("{%s}", table.concat(tbl, ", ")))
-- Equivalent à:
print("{"..table.concat(tbl, ", ").."}")
-- Les accolades ne sont pas nécessaires, c'est juste pour bien montrer que c'est une table

--[[ resultat = table.concat(maTable, separateur, start, end)
maTable → table que tu veux concatèner
separateur → séparateur entre deux éléments de la table
start → index de début
end → index de fin
resultat → résultat sous forme de string
]]

Merci ça marche ^^

Et sinon j'ai une autre demande assez complète car je sais pas du coup m'y prendre pour les tables, en gros j'aimerais faire un système d'économie, (par exemple une monnaie nommé "fromage"), avec une fonction du genre addMoney(nom du joueur, argent à donner), je sais pas trop si c'est possible en Lua.

Merci

Si c'est possible ^^

code

Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
function main() -- Cette fonction permet de charger tout le code avant de faire quoi que ce soit, pour éviter certaines erreurs (et puis, c'est plus propre)
players = {} --table avec les données des joueurs

table.foreach(tfm.get.room.playerList, function(pl) eventNewPlayer(pl) end)
--[[équivaut à :
for pl in pairs(tfm.get.room.playerList) do
eventNewPlayer(pl)
end
]]
end

function eventNewPlayer(name)
if not players[name] then -- Pour pas effacer ses données s'il part et revient du salon
players[name] = {money=0}
end
add_money(name, 0) -- pour afficher le texte
end

function eventTextAreaCallback(id, name, call)
local args = {}
for arg in call:gmatch("%S+") do -- pour avoir tous les arguments (séparés par un espace)
table.insert(args, arg)
end
if args[1]=="func" then
local sub = {} -- les arguments que l'on va envoyer à la fonction donnée en args[2]
for s in args[3]:gmatch("[^,]+") do --on sépare avec les virgules
table.insert(sub, s=="name" and name or s) -- si l'argument est "name", on le remplace par name (:
end
_G[args[2]](table.unpack(sub)) -- Pour l'exemple, ça équivaut à add_money(name, 10)
-- _G → c'est LA table du Lua, tu as toutes les valeurs GLOBALES dedans (les valeurs non-globales sont les variables précédées de 'local' comme à la ligne 20 ou un argument de function par ex: name)
end
end

function add_money(name, nbr)
players[name].money = players[name].money +nbr
ui.addTextArea(1, string.format("<a href='event:func add_money name,10'>ajouter 10 fromages à ton compte</a>\n\nNombre de fromages: %d", players[name].money), name)
end

main() --pas oublier d'appeller cette fonction


N'hésite pas à me poser des questions, j'ai utilisé certains trucs que tu ne maîtrises peut-être pas trop en Lua ^^

Merci beaucoup de ton aide!!!
Et pour l'instant je pense que j'ai eu assez de truc, je vais commencer mon module et je posterais ici si j'ai un problème/doute sur quelque chose ^^
Encore merci :D
Athesdrake
« Citoyen »
1493740560000
    • Athesdrake#0000
    • Profil
    • Derniers messages
    • Tribu
#1326
  1
Yoshoups a dit :
Merci beaucoup de ton aide!!!
Et pour l'instant je pense que j'ai eu assez de truc, je vais commencer mon module et je posterais ici si j'ai un problème/doute sur quelque chose ^^
Encore merci :D

Derien (:
Yoshoups
« Censeur »
1494073860000
    • Yoshoups#0000
    • Profil
    • Derniers messages
    • Tribu
#1327
  0
J'ai 3 tables,
Code Lua

1
2
3
policiers = {}
delinquants = {}
prisonniers = {}
Et j'aimerais avoir 2 fonctions, une qui insert du texte dans une table, l'autre qui cherche un joueur en question dans la table et qu'il la déplace dans une autre liste (par exemple policiers vers prisonniers)

Voila merci, si t'arrivent à me faire ça, sa serais très gentil car au moins mon module sera quasi fini.
Athesdrake
« Citoyen »
1494083940000
    • Athesdrake#0000
    • Profil
    • Derniers messages
    • Tribu
#1328
  0
Yoshoups a dit :
J'ai 3 tables,
Code Lua

1
2
3
policiers = {}
delinquants = {}
prisonniers = {}
Et j'aimerais avoir 2 fonctions, une qui insert du texte dans une table, l'autre qui cherche un joueur en question dans la table et qu'il la déplace dans une autre liste (par exemple policiers vers prisonniers)

Voila merci, si t'arrivent à me faire ça, sa serais très gentil car au moins mon module sera quasi fini.

Quand tu dis "une fonction qui insert du texte dans une table", il y a simplement
Code Lua

1
2
3
4
5
6
7
8
9
10
11
--[[
table.insert(maTable, position, value)
ça équivaut à append() dans d'autre langage de programmation (n'existe pas en Lua) si tu ne mets pas la position
Par exemple:
]]
texte_table = {}
table.insert(texte_table, "Ceci")
table.insert(texte_table, "Cela")
print("table_texte = {"..table.concat(texte_table, ", ").."}") -- table_texte = {Ceci, Cela}
table.insert(texte_table, 2, "ou") -- Avec Lua, l'indexation ou la numérotation des champs, ne commence pas à 0, mais à 1.
print("table_texte = {"..table.concat(texte_table, ", ").."}") -- table_texte = {Ceci, ou, Cela}


Chercher dans un table, c'est pas très compliqué, la seule chose que je sais pas, c'est ce que tu cherches.(key ou value)
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
meuchants1 = {Athesdrake=1, Jean_michel=1, Yoshoups=1}
meuchants2 = {"Athesdrake", "Jean_michel", "Yoshoups"}
prisonniers = {}

--Si c'est une valeur de la table
function search(tbl, element)
local result = {}
for k,pl in ipairs(tbl) do --ipairs est important si jamais la table contient des trous
if pl==element then
table.insert(result, k)
end
end
return result
end

test = search(meuchants2, "Jean_michel")
for _,v in pairs(test) do
table.insert(prisonniers, meuchants2[v])
table.remove(meuchants2, v)
end
print("meuchants2 = {"..table.concat(meuchants2, ", ").."}")
print("prisonniers = {"..table.concat(prisonniers, ", ").."}")

--Si c'est une key de la table
function deplace(tbl, newtbl, key)
if type(tbl)=="table" and type(newtbl)=="table" and (not newtbl[key]) and tbl[key] then
newtbl[key] = tbl[key]
tbl[key] = nil
end
end

deplace(meuchants1, prisonniers, "Jean_michel")
for k,v in pairs(meuchants1) do
print(k.." "..v)
end
print("")
for k,v in pairs(prisonniers) do
print(k.." "..v)
end


Je sais pas si j'ai été clair pour tout, tu peux tjrs me poser de questions si tu comprends pas ^^
Flacanaille
« Citoyen »
1495108020000
    • Flacanaille#0000
    • Profil
    • Derniers messages
#1329
  0
Salut ! Je suis en train d'essayer d'améliorer un module d'IT (match inter team) que j'ai trouvé. J'ai fait des modifications sans problème au début, et je suis maintenant confronté à un problème que je n'arrive pas à résoudre : souvent quand j'entre dans le trou, à l'instant d'entrer je meurs. J'ai d'autant plus de mal à comprendre que tfm.exec.killPlayer() n'est pas appelé (la fonction est dans le code, mais j'ai mis un debug qui ne s'active pas), et l'event eventPlayerWon() n'est pas déclenché.

Si quelqu'un a des éléments de réponse (ou a le lien du topic d'aide en anglais ^^'), je lui serai reconnaissant !

Voici le code :
http://textup.fr/201981cl

Pour faire les équipes :
!team1 joueur1 joueur2 joueur3
!team2 joueur4 joueur5
NB : un joueur peut faire partie de deux équipes (pour tester seul par exemple), par contre il peut encore y avoir des effets étranges (notamment au niveau des scores individuels).
Podoko
« Citoyen »
1495117680000
    • Podoko#0000
    • Profil
    • Derniers messages
    • Tribu
#1330
  0
C'est probablement un bug du jeu sans rapport avec ton module, tu as essayé de déco/reco pour retester ?
Flacanaille
« Citoyen »
1495123860000
    • Flacanaille#0000
    • Profil
    • Derniers messages
#1331
  0
OK alors en effet, c'est un bug du jeu, mais qui ne dépend pas que de moi car d'autres l'ont testé (et même après déco/reco, ça continue). Quand je teste le code original, qui fonctionnait très bien, ça bug aussi. Du coup faudrait le report parce que j'imagine que ça fait ça à d'autres et ça doit bien handicaper le développement de modules. Je sais pas trop comment report ce genre de choses par contre...

PS : comme je suis un gros noob du forum, je sais pas comment edit, donc désolé du double-post !

EDIT : Merci pour l'édition. :p
Oui donc apparemment c'est ça. Ça n'a pas l'air d'être un bug connu, je l'ai posté sur le forum anglais et je suis en train de voir avec quelqu'un qui a l'air de bien s'y connaître, Shamousey tu connais peut-être.

Dernière modification le 1495203300000
Athesdrake
« Citoyen »
1495124940000
    • Athesdrake#0000
    • Profil
    • Derniers messages
    • Tribu
#1332
  1
Flacanaille a dit :
OK alors en effet, c'est un bug du jeu, mais qui ne dépend pas que de moi car d'autres l'ont testé (et même après déco/reco, ça continue). Quand je teste le code original, qui fonctionnait très bien, ça bug aussi. Du coup faudrait le report parce que j'imagine que ça fait ça à d'autres et ça doit bien handicaper le développement de modules. Je sais pas trop comment report ce genre de choses par contre...

PS : comme je suis un gros noob du forum, je sais pas comment edit, donc désolé du double-post !

C'est un bug qui arrive plus souvent avec les maps jouées en mode miroir. (Une bonne partie des maps vanilla joué en mode miroir font bugguer le jeu, comme tu le disait, on meurt lorsque qu'on rentre dans le trou. )

Exécute cette fonction et joue la map, tu comprendras ^^ (change de salon pour débugguer)
Code Lua

1
 tfm.exec.newGame(0, true)


Et pour éditer un message, il te suffit de cliquer sur ta photo de profil à gauche de ton message et cliquer ensuite sur "éditer" :)
Sourialp
« Citoyen »
1498725300000
    • Sourialp#0000
    • Profil
    • Derniers messages
    • Tribu
#1334
  0
cc tlm;
j'aurais une question:
comment définir le "x" et "y" d'un seul jouer en particulier ??
Mais qu'il y ai d'autre joueur sur la carte...(en gros qu'il ne soit pas tout seul )

Car je pense savoir comment faire, mais il me manque UNE PARTIE ;(

c'est le moment où il faut dire en gros: x"sourialp" (pour définir le x de la personne et la réutilisé... :/ )

Et je sais qu'il y a d'autre moyen en mettant le joueur dans un groupe spécial et ensuite vérifié qu'il est dans un groupe en particulier, mais sa ne fonctionnerai pas totalement pour se que je cherche :/

je pense utilisé "tbl.x et tbl.y" mais je ne sais pas trop comment sa fonction ^^'

ou alors et je pense que se serai plus rapide, comment faire une table pour chaque personne pour que chacun fasse un esprit sous lui en se baissant par ex, je pense que pour cela il faut utilisé les table mais s a c pas mon fort ^^'

Dernière modification le 1498730340000
Athesdrake
« Citoyen »
1498735260000
    • Athesdrake#0000
    • Profil
    • Derniers messages
    • Tribu
#1335
  0
API a dit :

tfm.exec.movePlayer (playerName, xPosition, yPosition, offset, xSpeed, ySpeed, offset)
Déplace un joueur.

playerName:string → pseudo du joueur
xPosition:int → nouvelle position, selon l'axe horizontal, du joueur
yPosition:int → nouvelle position, selon l'axe vertical, du joueur
offset:boolean → true pour rajouter xPosition et yPosition à la position actuelle du joueur, false pour la remplacer
xSpeed:int → nouvelle vitesse, selon l'axe horizontal, du joueur
ySpeed:int → nouvelle vitesse, selon l'axe vertical, du joueur
offset:boolean → true pour rajouter xSpeed et ySpeed à la vitesse actuelle du joueur, false pour la remplacer

C'est ça non ?

Pour obtenir les coordonnées d'un joueur, c'est :
tfm.get.room.playerList[playerName].x
tfm.get.room.playerList[playerName].y
Sourialp
« Citoyen »
1498737480000
    • Sourialp#0000
    • Profil
    • Derniers messages
    • Tribu
#1336
  0
e c pas le truc de l'api pck sa on peut le faire sur un seul joueur effectivement,

mais en gros g besoins de quelque choses qui sépare plusieurs joueur du lot dans une playlist
Et il n'y a pas mieux que tfm.get.room... pck en général lorsque le joueur est en mouvement sa le tp en arriéré ... donc c pas top :/


mais merci pour ses info jv essayer de creuser ;p
Sourialp
« Citoyen »
1498743780000
    • Sourialp#0000
    • Profil
    • Derniers messages
    • Tribu
#1338
  0
ow :( mrc;
mais après réflexion, on a pas besoin de prendre sa potion mais juste de définir les x d'un joueur en particulier, pour sa je doit faire quoi ??
genre

Code Lua

1
2
3
4
5
tfm.get.room.playerList[sourialp].x
tfm.get.room.playerList[sourialp].y

(et quand je veut le réutilisé je dis);
sourialp.x, sourialp.y

??

et je le met ou se tfm.playeurlist...? ^^'

edit: Mais en fait, se qu'il faudrait c juste faire par ex sourialp.x mais j'ai jamais tester, donc je vais tester et je vous dis ce qu'il en est

re édit: les x.sourialp ne marche pas :/

Dernière modification le 1498814820000
Leshamane
« Citoyen »
1498832400000
    • Leshamane#0000
    • Profil
    • Derniers messages
    • Tribu
#1339
  0
Sourialp a dit :
ow :( mrc;
mais après réflexion, on a pas besoin de prendre sa potion mais juste de définir les x d'un joueur en particulier, pour sa je doit faire quoi ??
genre

Code Lua

1
2
3
4
5
tfm.get.room.playerList[sourialp].x
tfm.get.room.playerList[sourialp].y

(et quand je veut le réutilisé je dis);
sourialp.x, sourialp.y

??

et je le met ou se tfm.playeurlist...? ^^'

edit: Mais en fait, se qu'il faudrait c juste faire par ex sourialp.x mais j'ai jamais tester, donc je vais tester et je vous dis ce qu'il en est

re édit: les x.sourialp ne marche pas :/

Déjà, crée toi une variable sourialp, ensuite tu peut lui définir des x, y voici un exemple :
a dit :
sourialp = {}
sourialp[playername] = {x=0, y=0}

Et tu pourra l'appeler comme ça :
a dit :
sourialp[playername].x
sourialp[playername].y

Ce n'est pas exactement ce que tu veux mais au moins c'est plus rapide que tfm.get.room.playerList[playername].x/y et tu peux définir ce que tu veux à l'intérieur, donc c'est assez pratique.

Sinon tu fais deux variables :
a dit :
sourialpX = tfm.get.room.playerList[sourialp].x
sourialpY = tfm.get.room.playerList[sourialp].y

Dernière modification le 1498832580000
Sourialp
« Citoyen »
1498937340000
    • Sourialp#0000
    • Profil
    • Derniers messages
    • Tribu
#1340
  0
hmmm je vais éssayer la premier solution mais c pas sûr que j'y arrive, mais c géniale pck tu m'as donner une deuxieme solution au pire des cas :)

ba je testerais je vous dis se qu'il en est :D merci !!!!

edit; rien ne fonction mdr
j'ai pris un code bidon pour tester :
Code Lua

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
admin = {Sourialp=1, Jtmlucile=1}
hacker = "sourialp"

sourialpX = tfmgetroomPlayerList[sourialp].x
sourialpY = tfm.get.room.playerList[sourialp].y


function eventNewPlayer(name)
tfm.exec.bindKeyboard(hacker,32,true,true)
end

for name,player in pairs(tfm.get.room.playerList) do
eventNewPlayer(name)
end




function eventKeyboard(name,key,down,x,y)
if 0<sourialpY and sourialpY<800 and 0<sourialpX and sourialpX<2000 and key==32 then -- espace
tfm.exec.movePlayer(hacker,0,0,true,0,-60,false) -- en gros quand le joueurs est dans la map et qu'il fais espace il s'envole
end
end

le problème c que je ne sais pas si l'on peut utiliser le "tfm.get.room.playerList[sourialp].y" direct dans le code "x>0"

Dernière modification le 1498999800000
  • Forums
  • /
  • Transformice
  • /
  • Modules
  • /
  • [Aide] Demandes de codes et d'explications
« ‹ 67 / 70 › »
© Atelier801 2018

Equipe Conditions Générales d'Utilisation Politique de Confidentialité Contact

Version 1.27