Сценарий проверки навыков проверки РПГ в играх с кубиками - PullRequest
0 голосов
/ 17 февраля 2020

Для моего сценария проверки игровых навыков в RPG ... В приведенном ниже сценарии (создан Edmund chan kei yun, членом StackOverflow) ячейки проверяются на наличие наибольших чисел (после имитации нескольких бросков костей d6 другим сценарием), и затем текст копируется из таблицы (для определения результирующих действий).

Мне также понадобятся комбинации результатов для игры в кости, такие как 666 и 111, чтобы иметь свои собственные результаты таблицы. У таких будут свои столбцы / строки в таблице. Может ли кто-нибудь помочь мне обновить сценарий, включив в него чтение комбинаций результатов игры в кости, чтобы такая комбинация указывала на конкретный c столбец / строку?

Вот ссылка на редактируемую версию лист со сценарием ... https://docs.google.com/spreadsheets/d/1zYhUnlHCW7kfo0rf1pZY2GNI4qt5PsbGYOljFe2dwJE/edit?usp=sharing

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
}

1 Ответ

0 голосов
/ 25 февраля 2020

может быть лучше, если вы настроите скрипт самостоятельно, но я могу помочь вам с проверкой конкретных c комбинаций. вам нужно проверить комбо-случаи перед проверкой на самое высокое значение, поскольку комбинации имеют приоритет.

Поскольку единственными комбинациями являются 666 и 111, мы можем использовать оператор if, чтобы изменить строку / столбец, который проверено на 7. Поэтому это единственное дополнение, которое может понадобиться вашему сценарию.

  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

Пожалуйста, попробуйте самостоятельно внести какие-либо незначительные изменения в сценарий и примите этот ответ, если он вам помог.

Это лист Google, который я использовал https://docs.google.com/spreadsheets/d/1NSpdsqQ2-c20EANnYoiKWQHNTu05C-7NGr0Y7K9on8A/edit?usp=sharing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...