Histoire de Stringtable et Mission.sqm


#1

Bonjour à tous, le code n’a pas d’heure et je requière votre aide sur un problème que j’ai rencontré durant ma nuit blanche =)

Je suis entrain de m’occuper de la traduction de mon serveur. Et comme beaucoup d’entre-vous, j’ai bien remarqué que la stringtable.xml ne traduisait que 60% du jeu.

J’ai donc commencé à ajouter mes propres clé dans la stringtable.xml afin de pouvoir être modulaire à l’avenir.

J’ai bien compris qu’il fallait utiliser le mot clé localize “Key” dans les fichier .sqf et $Key dans les .hpp, mais en ce qui concerne le .sqm j’ai essayé beaucoup de variante, sans succès.

J’ai essayé personnellement de traduire les actions des pnj “Market”, “General Store” en créant donc un lient avec la stringtable en faisant par exemple

Edit : il n’y pas d’espace entre le @ et STR , le forum qui me cherche des profils ^^

init="this allowDamage false; this enableSimulation false; this addAction[@ STR_Shop_Name_Market,life_fnc_virt_menu,""market""];";```

ou

init=“this allowDamage false; this enableSimulation false; this addAction[”@ STR_Shop_Name_Marke"t,life_fnc_virt_menu,"“market”"];";```

ou

init="this allowDamage false; this enableSimulation false; this addAction[""@ STR_Shop_Name_Market"",life_fnc_virt_menu,""market""];";```

ou

init=“this allowDamage false; this enableSimulation false; this addAction[(localize “STR_Shop_Name_Market”),life_fnc_virt_menu,”“market”"];";```

à la place du code de base :

init="this allowDamage false; this enableSimulation false; this addAction[""Market"",life_fnc_virt_menu,""market""];";```

Mais cela ne fonctionne pas T_T

Donc si quelqu'un a une solution à me proposer, je suis preneur =).

Merci d'avance de votre aide !

PS: Je sais très bien que je peux modifier sans passer par la stringtable, mais je souhaite pouvoir faire ça bien et donc de manière pouvoir modifier tous les pnj d'un coup depuis la stringstable.

#2

Es-tu sur que l’ont peux integrer quelque chose de la stringtable dans le mission.sqm?


#3

Oui

localize "testlolmdr"```

et dans le stringtable

```

#4

Merci pour vos réponse,

1- Je ne sais pas si l’intégration du stringtable est possible justement ^^

2- Vous avez réellement testé le localize “key” dans le mission.sqm dans un addaction ? et ça fonctionne pour vous ? vous avez une démo à montrer (une ligne de code) ?


#5

C’est comme ça que c’est utilisez pour la 3.1.4 après je n’est pas réellement tester :wink: Après pour la mission.sqm je pense que oui à essayé :wink:


#6

Pourquoi traduire le INIT ? (c’est que du code).

c’est ton marqueur que tu dois traduire !


#7

Traduire le init ? Je parlais du mission.sqm (cf le fichier éditable par l’éditeur d’arma), sauf que bah j’aurais bien aimé utiliser la stringtable pour traduire les pnj qui ont des addactions (des onglets accessibles via la molette).

Comme ça à l’avenir si on veut modifier quelque chose on passe par la stringtable et osef du fichier .sqm et de l’éditeur.

Le marqueur sur la map est déjà traduit.

En gros je veux bien faire et séparer les chaînes de caractères du code car elles ont rien foutre en dure dedans. Ça été fait comme ça car le gars n’avait pas le temps, ce qui est compréhensible.

Pour résumer j’ai bien l’impression que c’est impossible de toute façon, où il faut que j’étudie plus le langage d’ARMA 3.


#8

Les addactions sont des requettes. ils renvoyent sur un fichier.

Ex : this addAction[@ STR_Shop_Name_Market,life_fnc_virt_menu,"“market”"];";

 this addAction c'est la commande qui lance l'action. STR_Shop_Name_Market,life_fnc_virt_menu donne comme référence lui indique de lire le fichier virtualmenu. "market"  le nom du magasin à prendre en référence.

Le stringtable.xml ne sert qu’a traduire ce qui s’affiche comme informations que reçoit le joueur ex( j’ai acheté une voiture à tel prix ou j’ai ramassé une pomme). là il ne s’agit que d’une ligne lu par le jeu. si tu traduit “market” il faudra qu’il soit traduit aussi dans le ficher virtual menu.

Ce que tu peux traduire c’est dans le fichier fn_virt_shops.sqf

EX

case “market”: {[“Market”,[“water”,“rabbit”,“apple”,“redgull”,“meat”,"tbacon"ect…

case “market”: {[“Magasin de bouffe”,[“water”,“rabbit”,“apple”,“redgull”,“meat”,"tbacon"ect…

Lui sera afficher en français.


#9

Les addactions sont des requettes. ils renvoyent sur un fichier.

Ex : this addAction[@ STR_Shop_Name_Market,life_fnc_virt_menu,"“market”"];";

 this addAction c'est la commande qui lance l'action. STR_Shop_Name_Market,life_fnc_virt_menu donne comme référence lui indique de lire le fichier virtualmenu. "market"  le nom du magasin à prendre en référence.

Le stringtable.xml ne sert qu’a traduire ce qui s’affiche comme informations que reçoit le joueur ex( j’ai acheté une voiture à tel prix ou j’ai ramassé une pomme). là il ne s’agit que d’une ligne lu par le jeu. si tu traduit “market” il faudra qu’il soit traduit aussi dans le ficher virtual menu.

Ce que tu peux traduire c’est dans le fichier fn_virt_shops.sqf

EX

case “market”: {[“Market”,[“water”,“rabbit”,“apple”,“redgull”,“meat”,"tbacon"ect…

case “market”: {[“Magasin de bouffe”,[“water”,“rabbit”,“apple”,“redgull”,“meat”,"tbacon"ect…

Lui sera afficher en français.

Effectivement j’ai déjà fait les traductions dans les virt et dans le varToStr.sqf (qui contient la plupart des truc de bouffe etc…)

Mais là le problème c’est que lorsque tu vas cibler le pnj, tu auras une chaîne vide car il comprend pas @ STR_Shop_Name_Marke il arrive pas à faire de lien avec la stringtable, ce qui fait que le pnj ne devient même plus cliquable ^^. Effectivement la chaine de caractère market est envoyé en paramètre de la fonction life_fnc_virt_menu et il va t’afficher le menu correspondant, ça je l’ai bien compris ^^.

En fait ce que je veux traduire c’est les chaines de caractères (la liste des addactions) qui s’affiche quand tu cibles un pnj et que tu cliques sur la molette.

Or je veux pas que les trad soit écrite en dure dans le mission.sqm (ce qui est le cas actuellement) mais je veux faire le lien avec la stringtable.

Je pense qu’en fait la stringtable n’est accessible qu’après le chargement de la mission, ce qui rend toute traduction “propre” impossible ou sinon il doit exister une pirouette pour le faire, mais pas forcément évidente.

Je suis entrain de regarder s’il faut pas passer par le description.ext pour rendre la stringtable visible.

Les russes on fait un truc plus ou moins proche à ce que je veux mais pas dans le sqm :

http://www.flashpoint.ru/threads/%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82%D1%81%D1%82%D0%B2%D0%B8%D1%8F-%D0%B2-server-cfg.48250/

Bon après ce que je cherche à faire c’est simplement faire la trad de la bonne manière, en d’autres termes, dissocier le texte affiché en jeu du code qui l’exécute.

D’ailleurs, je vous remercie pour vos interventions ! Content de voir une communauté qui participe et qui aide autant !


#10

Désolé, mais le stringtable est incapable de prendre en charge des traductions sur le mission.sqm.

Le SQM n’est qu’un positionnement d’objet et n’est lu que par le core du jeu, mais n’est pas accessible par la partie mod.

C’ est un peu difficile à éxpliquer.

Disons que tu as 2 partie distinctes : Arma 3 et Altis life. une “Mission” est créée par la partie core (Arma3) sur laquelle tu ajoute la partie MPmission (Altis).

La partie arma 3 lance en premier lieu la map, sur cette map sont positionnés des intérupteurs personnages batiments et pnj.

on est toujours dans la partie CORE (don le SQM fait parti).

Une fois chargé en mémoire le jeu vas lancer le spawn du joueur, et c’est là que lorsque le joueur spawn, que sont chargés tous les scripts qui forme la partie ALTIS. Le joueutr apparait, le camps est choisi, blufor ou civil, et selon il vas charger d’autre sqf ainsi de suite.

le Stringtable ne pourra avoir une action que sur la partie lu après le spawn de ton perso. Que la partie script.

J’ai essayé d’être le pus simple possible,(ce qui n’est pas facile). afin que tu vois la façon pour laquelle je te parlait du fait que tu ne peux pas traduire les init, c 'est juste qu’ils sont figés dès le lancement du jeu et que le stringtable n’a pas possibilité d’aller lire son contenu.

Voila. Désolé si c’est pas toujours très claire, mais la subtilité est un peu difficile à expliquer.

A+


#11

Merci c’est parfaitement claire !