Pour mon script de vérification des compétences de jeu RPG ... Dans le script ci-dessous (créé par Edmund chan kei yun, membre de StackOverflow), les cellules sont vérifiées pour les nombres les plus élevés (après avoir simulé plusieurs lancers de dés d6 par un autre script), puis le texte est copié à partir d'une table (pour définir les actions résultantes).

J'aurais également besoin de combos de résultats de dés comme 666 et 111 pour avoir leurs propres résultats de table. Ceux-ci auront leurs propres colonnes/lignes dans le tableau. Quelqu'un pourrait-il m'aider à mettre à jour le script pour inclure également la lecture des combinaisons de résultats de dés, de sorte qu'une telle combinaison soit dirigée vers une colonne/une ligne spécifique ?

Voici un lien vers une version modifiable de la feuille avec script... https://docs.google.com/spreadhqZljFe2dwJE/edit?usp=sharing" rel="nofollow noreferrer">https://docs.google.com/spreadhqunsheets/d1zYbYPWlG2zYbYP modifier?usp=partage

function SetRetrievedValue() {
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //var cellcontent1 = sheet.getRange(2,1,6,1).getValues(); use this if its a range of cells you are searching
  var cell1 = sheet.getRange(1,1).getDisplayValue(); //gets value as string
  var cellcontent1 = cell1.split(""); // splits up the string individually
  var newcellcontent1 = Array.prototype.concat.apply([], cellcontent1); // flatten the array
  var maxNum1 = Math.max.apply(null, newcellcontent1); //gets the max value in the array

  // repeat of cell 1
  var cell2 = sheet.getRange(1,2).getDisplayValue(); 
  var cellcontent2 = cell2.split("");
  var newcellcontent2 = Array.prototype.concat.apply([], cellcontent2);
  var maxNum2 = Math.max.apply(null, newcellcontent2);


  var tablecell = ss.getSheetByName("Table sheet").getRange(maxNum1,maxNum2).getValue(); //retrieve the value based on the corresponding max value
  sheet.getRange(1,3).setValue(tablecell); // sets the cell C1 as the value retrieved from the table
}
0
Snookie 17 févr. 2020 à 15:00

1 réponse

Meilleure réponse

Ce serait peut-être mieux si vous ajustez le script par vous-même, mais ce que je peux vous aider, c'est la vérification des combos spécifiques. ce que vous voudriez, c'est vérifier les cas de combo avant de rechercher la valeur la plus élevée, car les combos ont la priorité.

Étant donné que les seuls combos sont 666 et 111, nous pouvons utiliser une instruction if pour changer la ligne/colonne cochée en 7. C'est donc le seul ajout dont vous auriez besoin pour votre script.

  if (newcellcontent1[0]=== '6' && newcellcontent1[0]===newcellcontent1[1] && newcellcontent1[1]===newcellcontent1[2]) { //if attacker rolls a 666
    maxNum1 = 7;
  }
  if (newcellcontent2[0]=== '1' && newcellcontent2[0]===newcellcontent2[1] && newcellcontent2[1]===newcellcontent2[2]) { //if defender rolls a 111
    maxNum2 = 7;
  }
  
  var tablecell = ss.getSheetByName("Table sheet").getRange(maxNum1,maxNum2).getValue(); //retrieve the value based on the corresponding max value
  sheet.getRange(1,3).setValue(tablecell); // sets the cell C1 as the value retrieved from the table

Veuillez essayer d'apporter vous-même des modifications mineures au script. Voici la feuille Google que j'ai utilisée https:// docs.google.com/spreadsheets/d/1NSpdsqQ2-c20EANnYoiKWQHNTu05C-7NGr0Y7K9on8A/edit?usp=sharing

0
Ruben Helsloot 28 oct. 2020 à 10:40