Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account

Updating an old character sheet

Hi roll20 ! I'am a French Game Master and Web developper. I would like to update a character sheet for the game "Le donjon de Naheulbeuk", if the previous author allows it. My html file is not ready yet but i would like to know if : - my sheet will replace the old one or it will be a v2.0 ? - what will happen to current players's sheets if we swap sheet ? - do i have to use the same attr_ name to keep a certain level of compatibilty ? - can i test my sheet without the pro account ( like a developper edition ) ? (i susbribed to Plus this week) - do a i have to make a new github repository or i have to comit on the old one ? - it's ok to use some images ? where do we upload them ? Thanks, Kaias
1520502987

Edited 1520503096
Natha
KS Backer
Sheet Author
API Scripter
Salut Katias. Pour essayer de répondre à tes questions : - Remplacer: si tu pousses ta modif sur le Github de Roll20 avec le même nom de répertoire, de fichiers etc... oui, cela remplacerait (après validation) la feuille existante. - Si les attributs de ta feuille sont différents de l'existante ET que tu n'as pas prévu de procédure (sheet worker) de mise à jour automatique, cela va "mettre le bazarre" dans les parties existantes. Et probablement que ta Pull Request sera donc refusée. - Non tu ne peux pas tester sans compte pro (ou en utilisant celui d'un ami). Et honnêtement/en toute amitié, je te déconseille fortement d'envoyer une pull request avec une feuille modifiée et non testée. - Pour github, il faut que tu te fasses un fork, ajoute/modifie tes fichiers, et envoie une pull request quand tu as fini. - C'est tout à fait ok d'utiliser des images (pas trop lourdes ;). Le mieux est de les héberger sur github. D'abord dans ta fork (il faut des chemins complets/non relatifs), puis, après que ta PR ait été acceptée, tu refais une modif pour changer le chemin des images vers le github de Roll20. Sincèrement, je ne sais pas trop quoi te conseiller. Si tes modifications apportent vraiment un plus aux joueurs de Naheulbeuk, ça vaut le coup soit de : - s'assurer la compatibilité entre ta nouvelle feuille et l'ancienne, pour être sûr que que les parties existantes resteront jouables. Mais du coup, à ta place, je discuterai de tes modifications avec l'auteur initial ( <a href="https://github.com/BlackyB" rel="nofollow">https://github.com/BlackyB</a>), même si la feuille n'a pas été modifiée depuis 3 ans a priori.&nbsp; - ou créer une deuxième version (donc un nouveau répertoire sur le github, par exemple "Naheulbeuk_Katias") mais pour que ce soit accepté, il va falloir justifier un peu en expliquant dans ta PR pourquoi tu proposes une deuxième version. Voilà, j'espère que ça va t'aider un peu.
Merci, ça m'aide déjà pas mal. J'ai pris contact avec BlackyB ce matin, j’espère qu'il est encore actif. Je vais également regarder pour prendre un compte pro, ça servira toujours à mes joueurs :D Je ne suis pas renseigné sur les procédures sheet worker, mais si je reprend exactement les mêmes attr_ que Blacky il ne devrait pas y avoir de problème ? Idem pour les zones répétables, dois-je reprendre les mêmes noms de ou seuls les attr_ à l’intérieur suffisent ? Concernant le projet GitHub, j'ai une inquiétude : certains joueurs pourraient ne pas apprécier cette nouvelle version, elle est beaucoup beaucoup plus proche de la feuille de perso officielle mais cela la rend plus chargée et plus complexe aussi (d'un autre coté, qui peut le plus peut le moins :D) Mais je m'en voudrait de l'imposer :s La mise à jour sera surtout graphique, organisationnelle (rajout d'onglets pour naviguer par exemple) et pratique (rajout de plusieurs "sacs" plutôt qu'une liste de vrac, utilisation des templates pour les rolls...). Pour le reste, c'est des nouveautés issues du jeu comme une nouvelle gestion des armures, des richesses, des munitions, du poids...tout sera facultatifs pour ceux qui ne veulent pas se prendre la tête, mais au moins ça sera accessible pour les autres. <a href="https://www.dropbox.com/s/p2v0hc8is0d9hmf/feuille1" rel="nofollow">https://www.dropbox.com/s/p2v0hc8is0d9hmf/feuille1</a>... <a href="https://www.dropbox.com/s/4dd74a5311w5zzf/feuille2.png" rel="nofollow">https://www.dropbox.com/s/4dd74a5311w5zzf/feuille2.png</a>
1520506134
Natha
KS Backer
Sheet Author
API Scripter
Kaias C. said: Je ne suis pas renseigné sur les procédures sheet worker, mais si je reprend exactement les mêmes attr_ que Blacky il ne devrait pas y avoir de problème ? Idem pour les zones répétables, dois-je reprendre les mêmes noms de ou seuls les attr_ à l’intérieur suffisent ? Si tu reprends les mêmes noms de sections répétables et les mêmes noms d'attributs, pas besoin de sheet worker pour faire l'update. ça passera tout seul. Concernant le projet GitHub, j'ai une inquiétude : certains joueurs pourraient ne pas apprécier cette nouvelle version, elle est beaucoup beaucoup plus proche de la feuille de perso officielle mais cela la rend plus chargée et plus complexe aussi (d'un autre coté, qui peut le plus peut le moins :D) Mais je m'en voudrait de l'imposer :s&nbsp; Je comprends mais du coup il n'y a que deux alternatives. Soit tu imposes la nouvelle feuille (je ne joue pas à Naheulbeuk, donc je n'ai pas d'avis sur la question mais ta version semble plus sympa visuellement en tout cas ;) ), soit tu en proposes une deuxième, mais j'ai comme l'impression que ce serait un peu contre-productif. J'avoue, je ne peux pas t'aider là dessus ...
1520506577

Edited 1520506651
Kaias C.
Sheet Author
Nickel, grand merci à toi ! J'ai lancé un sondage sur un forum Naheulbeuk assez actif, on verra si j'ai des retours de la communauté :3 Et en tant que collègue développeur web, un gros félicitation aux dev pour faire tourner tout ce bouzingue, c'est impressionnant de technologies :D
Vraiment désolé pour le double post, mais je ne me voyais pas ouvrir un deuxième topic pour le même sujet... Le sheet worker m'a vraiment mis l'eau à la bouche, je pourrais faire une vrais mise à jour en avec plein de calcul automatisé, ça à l'air très simple et bien cool ! J'ai une question, concernant les values des attr_ de l'ancienne fiche dans le cadre des campagnes existantes avec fiches remplies, je suppose qu'ils sont stockés en base de données mais et certains deviendront inutiles sur la nouvelle fiche. J'ai dans l'idée d'utiliser la fonction sheet:opened pour reprendre certaines values de la vielle feuille afin d'alimenter la mienne . Est-ce bien la une utilisation correcte du sheet worker ? Ex : Il y avait deux colonnes compétences, je veux en faire qu'une seule, je pourrais donc boucler sur les vielles attr_comp1 et attr_comp2 pour alimenter ma zone répétable attr_comp. Ex2 : il y avait 5 attr_ "en dur" pour stocker les armures puis une zone répétable. je compte reprendre les 5 attr puis les zones répétables pour tout mettre dans une seule zone pour économiser de la place. Le probleme suivant se pose : Il faudrait que je puisse supprimer les anciennes valeurs qui deviendront inutiles après le premier passage du sheet worker car les vielles données seront déjà dans les nouveaux attr_ &gt; je n'ai pas trouvé de méthode pour cela. Sinon je peux "tricher" en faisant des setValues( null ) ? et je pourrais tester si les values[ attr ] sont null avant de mettre à jour... Si je ne peux pas les vider, je vais à nouveau écraser les nouvelles données à l'ouverture d'une session :s
1520599441
Natha
KS Backer
Sheet Author
API Scripter
Alors, en vrac: - oui, sheet:open est l'évènement à utiliser pour faire une update&nbsp; - on ne peut pas supprimer d'attributs existants (tu peux les vider mais pas sûr que ce soit une bonne idée, si jamais tu te plantes) - mais, la "bonne pratique" pour l'update est plutôt d'avoir (ajouter) un attribut "version" (par défaut à 0) par exemple. Sur l'événement sheet:open, tu charge cette attribut, vérifie s'il est à "2" (par exemple, qui serait ton n° de version courant). Si c'est le cas ... ben tu ne fais rien, cela veux dire que c'est un personnage créé avec la nouvelle feuille ou qu'il a déjà été traité. S'il est &lt;2 =&gt; tu lances ta procédure d'update.
Encore une fois grand merci ! Du coup dans mon fichier html, il me suffit de rajouter un champ caché attr_version = 2.0. J'en déduis également que si tu me propose cette solution, la création d'une nouvelle fiche par le MJ ne trigger pas sheet:open, parce que sinon, on aura également version à 0 et on passera dans le processus d'update inutilement :s
1520602664
Natha
KS Backer
Sheet Author
API Scripter
Kaias C. said: Encore une fois grand merci ! Du coup dans mon fichier html, il me suffit de rajouter un champ caché attr_version = 2.0. J'en déduis également que si tu me propose cette solution, la création d'une nouvelle fiche par le MJ ne trigger pas sheet:open, parce que sinon, on aura également version à 0 et on passera dans le processus d'update inutilement :s Non tu ajoutes non attr_version avec value="0" systématiquement. Pour que ceux ayant une partie en cours avec l'ancienne feuille soit updaté quand ils ouvriront leur perso(s) la première fois. Si tu ajoutes un attribut avec valeur 2 ... ben les persos créés avec l'ancienne feuille auront la valeur 2 directement et ne seront pas mis à jour. Mais tu dois gérer dans ta procédure d'update que les anciens attributs existent/sont renseignés ou pas. Comme ça, un nouveau perso créé aura versiopn=0 =&gt; tu lances la procédure d'update =&gt; tu vois qu'il n'y a rien à updater (pas d'anciens attributs) =&gt; tu mets la valeur de version à 2. Et les ouvertures suivantes ne provoqueront donc pas le déclenchement de la procédure d'update. Le trigger se déclenche toujours, MJ ou pas. Exemple de procédure(s) de mise à jour : &nbsp; &nbsp; // === Version handling &nbsp; &nbsp; on("sheet:opened", function() { &nbsp; &nbsp; &nbsp; &nbsp; versioning(); &nbsp; &nbsp; }); ... &nbsp; &nbsp; var versioning = function() { &nbsp; &nbsp; &nbsp; &nbsp; getAttrs(["version"], function(v) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var vrs = parseFloat(v["version"]) || 1.0; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (vrs == 2.0) { // ne rien faire &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else if (vrs &lt; 2.0) { &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Tes savants calculs d'ajout/mise à jour // Enregistrement avec mise à jour de la version setAttrs({"tes autres attributs": "leurs valeurs", "version": "2.0"}); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } &nbsp; &nbsp; &nbsp; &nbsp; }); &nbsp; &nbsp; };
Parfait, je devrais m'en sortir avec tout ca ! Merci beaucoup
1520605869
Natha
KS Backer
Sheet Author
API Scripter
No problemo. Avec plaisir.