全站通知:

Widget:沙盒

来自ARGONAVISWIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

<style> .pbtn {

 background: transparent;
 border: 1px solid green;
 color: black;
 padding: 5px 5px;
 border-radius: 6px;
 text-align: center;
 overflow: hidden;
 height: 70px;
 width: 150px;
 font-size: 14px;
 margin: 4px 2px;
 opacity: 1;
 transition: 0.3s;

}

.pbtn:hover {

 overflow: visible;
 background-color: #bff7bb;
 opacity: 0.8;

}

  1. clearall{
 float: right;
 width: auto;
 height: auto;

}

  1. clearall:hover {
 overflow: visible;
 color: white;
 background-color: red;
 opacity: 0.8;

}

  1. myInput {
 background-image: url('/css/searchicon.png');
 background-position: 10px 10px;
 background-repeat: no-repeat;
 width: 100%;
 font-size: 16px;
 padding: 12px 20px 12px 40px;
 border: 1px solid #ddd;
 margin-bottom: 12px;

}

.pbtn-group{

 display: flex;

}

.pbtn-group button {

 background: transparent;
 border: 2px solid green;
 color: black;
 font-size: 16px;
 border-radius: 6px;
 padding: 10px 24px;
 flex: 1;
 /* Some padding */
 cursor: pointer;
 /* Pointer/hand icon */
 float: left;
 /* Float the buttons side by side */

}

/* Clear floats (clearfix hack) */ .pbtn-group: after {

 content: " ";
 clear: both;
 display: table;

}

.pbtn-group button:not(:last-child) {

 border-right: none;
 /* Prevent double borders */

}

/* Add a background color on hover */ .pbtn-group button:hover {

 color: white;
 background-color: gray;

}


table {

 border-spacing: 0;
 width: 100%;
 border: 1px solid #ddd;
 border-top: 0px;

}

th {

 background-color: #bff7bb;
 border-bottom: 1px solid #ddd;
 color: black;
 position: sticky;
 width: 10px;
 top: 0;
 

}

th, td {

 text-align: left;
 white-space: normal !important;
 padding: 16px;

}

tr:nth-child(even) {

 background-color: #f2f2f2;

}

.container .heading {

 font-size: 30px;
 background: #EEEEEE;

}


.h5, h5 {

 margin-bottom: 12px;
 margin-top: 12px;

}

.subtitle{

 font-size: 25px;

}

.textsm{

 font-size: 20px;

}

.bold{

 font-weight: bold;

}

.resultnumber{

 font-size: 25px;
 font-weight: bold;

}

.no-border {

 box-shadow: none;
 border-width: 0;
 padding: 6px;

}

.text-center{

 text-align: center;

}

.underline-border {

 box-shadow: none;
 border-width: 0 0 1px 0;

}

.line {

 height: 55px;

}

.show-data {

 width: 90px;
 float: right;

}


.form-control {

 border-radius: 0px;
 height: auto;

}

.show-word-left {

 width: auto;
 float: left;

}

.show-word-right {

 width: auto;
 float: right;

}

.form-control-sm {

 border: 1px;
 width: 70px;

}

.container .panel {

 margin-bottom: 12px;
 padding: 0;
 overflow-y: auto;
 box-shadow: 1px 1px 3px #ececec;

}

.container .collapsable-heading {

 float: right;
 font-size: 20px;
 opacity: 50%;
 position: relative;
 top: -1em;

}


.container .hr {

 margin-top: 20px;
 margin-bottom: 30px;
 border: 0;
 border-top: 1px solid #eee;

}

.container .hrb {

 margin-top: 20px;
 margin-bottom: 30px;
 border: 0;
 border-top: 2px solid black;

}

.materialBox img {

 max-width: 40px;
 max-height: 40px;
 width: auto;
 height: auto;

}

.container .skillicon{

 float: left;
 width: 45px;
 height: 45px;

}

  1. fenxiang{
 width: 100%;
 padding: 12px 20px;
 box-sizing: border-box;
 border: 2px solid #ccc;
 border-radius: 4px;
 background-color: #f8f8f8;
 resize: none;

}

  1. fxxuanxiang button{
 flex: 0 150px;

}

  1. inputbtn:hover{

color: black; background-color: lightgreen; } </style>

<body>

基础属性
           速度
           <input class="form-control show-data text-center underline-border subtitle" data-bind="value: 速度" oninput="if(value>2000)value=2000;if(value<0)value=0">
           耐力
           <input class="form-control show-data text-center underline-border subtitle" data-bind="value: 耐力" oninput="if(value>2000)value=2000;if(value<0)value=0">
           力量
           <input class="form-control show-data text-center underline-border subtitle" data-bind="value: 力量" oninput="if(value>2000)value=2000;if(value<0)value=0">
           毅力
           <input class="form-control show-data text-center underline-border subtitle" data-bind="value: 毅力" oninput="if(value>2000)value=2000;if(value<0)value=0">
           智力
           <input class="form-control show-data text-center underline-border subtitle" data-bind="value: 智力" oninput="if(value>2000)value=2000;if(value<0)value=0">
           五维评分小计
            
适应性
场地适性
草地:<select class="textsm" data-bind="options: 适性等级表, value: 草地适性, optionsText: '适性等级'"></select>
泥地:<select class="textsm" data-bind="options: 适性等级表, value: 泥地适性, optionsText: '适性等级'"></select>
距离适性
短距离:<select class="textsm" data-bind="options: 适性等级表, value: 短距离适性, optionsText: '适性等级'"></select>
中距离:<select class="textsm" data-bind="options: 适性等级表, value: 中距离适性, optionsText: '适性等级'"></select>
英里:<select class="textsm" data-bind="options: 适性等级表, value: 英里赛适性, optionsText: '适性等级'"></select>
长距离:<select class="textsm" data-bind="options: 适性等级表, value: 长距离适性, optionsText: '适性等级'"></select>
跑法适性
逃:<select class="textsm" data-bind="options: 脚质适性等级表, value: 逃适性, optionsText: '适性等级'"></select>
差:<select class="textsm" data-bind="options: 脚质适性等级表, value: 差适性, optionsText: '适性等级'"></select>
先行:<select class="textsm" data-bind="options: 脚质适性等级表, value: 先适性, optionsText: '适性等级'"></select>
追:<select class="textsm" data-bind="options: 脚质适性等级表, value: 追适性, optionsText: '适性等级'"></select>
技能选择栏
               <button onclick="sortByKW(0)">全部显示</button>
               <button onclick="sortByKW(10)">通用</button>
               <button onclick="sortByKW(9)">泥地</button>
               <button onclick="sortByKW(1)">逃马</button>
               <button onclick="sortByKW(2)">先行</button>
               <button onclick="sortByKW(3)">差马</button>
               <button onclick="sortByKW(4)">追马</button>
               <button onclick="sortByKW(5)">短距离</button>
               <button onclick="sortByKW(6)">英里</button>
               <button onclick="sortByKW(7)">中距离</button>
               <button onclick="sortByKW(8)">长距离</button>
               <button onclick="sortColor(0)">红色</button>
               <button onclick="sortColor(1)">黄色</button>
               <button onclick="sortColor(2)">蓝色</button>
               <button onclick="sortColor(3)">绿色</button>
               <button onclick="sortColor(4)">紫色</button>

             <input type="text" id="myInput" onkeyup="Search()" placeholder="搜索中日文名或评价分" title="">
<tbody data-bind='foreach: Skills'> </tbody>
选择 图标 日文名 中文名 条件限制 评价分 所需技能PT PT评价比
<input type="checkbox"
                     data-bind="
                     checked: isActive, 
                     enable: isEnable, 
                     click: $root.checkIfEnable
" />
                         <img data-bind="attr:{src: 图标}">
                        
                        
                        
                        
                        
                        
                        
技能
固有技能
角色星级<select class="textsm" data-bind="options: 角色星级表, value: 角色星级, optionsText: '角色星级'"></select>
固有技等级<select class="textsm" data-bind="options: 固有技等级表, value: 固有技等级, optionsText: '固有技等级'"></select>


           继承·固有技 数量:
           <input class="textsm show-data text-center underline-border" type="number" data-bind="value: 继承技数量" oninput="if(value>6)value=6;if(value<0)value=0">


已选技能:
           <button id="clearall" class="pbtn show-word-right" data-bind='click: $root.clearSkill'>清空选择</button>
           <button class="pbtn" data-bind='click: $root.removeSkill'>
             <img class="skillicon" data-bind="attr:{src: 图标}">
           </button>
           技能评分小计
            
           消耗技能点小计
            
合计结果
           评分总计
            
           评级
            
           距S线(14499)
            
           距B+线(8199)
            
分享码
           <button data-bind="click: 编码">生成分享码</button>
           <button id="inputbtn" data-bind="click: 解码">导入分享码</button>
         <textarea rows="5" type="text" id="fenxiang" data-bind="textInput: 分享码"></textarea>

</body>

<script src="https://wiki.biligame.com/ys/MediaWiki:Knockout.js?action=raw&ctype=text/javascript"></script> <script> /**

*
*  Base64 encode / decode
*  http://www.webtoolkit.info/
*
**/

var Base64 = {

 // private property
 _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 // public method for encoding
 encode: function(input) {
   var output = "";
   var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
   var i = 0;
   input = Base64._utf8_encode(input);
   while (i < input.length) {
     chr1 = input.charCodeAt(i++);
     chr2 = input.charCodeAt(i++);
     chr3 = input.charCodeAt(i++);
     enc1 = chr1 >> 2;
     enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
     enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
     enc4 = chr3 & 63;
     if (isNaN(chr2)) {
       enc3 = enc4 = 64;
     } else if (isNaN(chr3)) {
       enc4 = 64;
     }
     output = output +
       this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
       this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
   }
   return output;
 },
 // public method for decoding
 decode: function(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
   while (i < input.length) {
     enc1 = this._keyStr.indexOf(input.charAt(i++));
     enc2 = this._keyStr.indexOf(input.charAt(i++));
     enc3 = this._keyStr.indexOf(input.charAt(i++));
     enc4 = this._keyStr.indexOf(input.charAt(i++));
     chr1 = (enc1 << 2) | (enc2 >> 4);
     chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
     chr3 = ((enc3 & 3) << 6) | enc4;
     output = output + String.fromCharCode(chr1);
     if (enc3 != 64) {
       output = output + String.fromCharCode(chr2);
     }
     if (enc4 != 64) {
       output = output + String.fromCharCode(chr3);
     }
   }
   output = Base64._utf8_decode(output);
   return output;
 },
 // private method for UTF-8 encoding
 _utf8_encode: function(string) {
   string = string.replace(/\r\n/g, "\n");
   var utftext = "";
   for (var n = 0; n < string.length; n++) {
     var c = string.charCodeAt(n);
     if (c < 128) {
       utftext += String.fromCharCode(c);
     } else if ((c > 127) && (c < 2048)) {
       utftext += String.fromCharCode((c >> 6) | 192);
       utftext += String.fromCharCode((c & 63) | 128);
     } else {
       utftext += String.fromCharCode((c >> 12) | 224);
       utftext += String.fromCharCode(((c >> 6) & 63) | 128);
       utftext += String.fromCharCode((c & 63) | 128);
     }
   }
   return utftext;
 },
 // private method for UTF-8 decoding
 _utf8_decode: function(utftext) {
   var string = "";
   var i = 0;
   var c = c1 = c2 = 0;
   while (i < utftext.length) {
     c = utftext.charCodeAt(i);
     if (c < 128) {
       string += String.fromCharCode(c);
       i++;
     } else if ((c > 191) && (c < 224)) {
       c2 = utftext.charCodeAt(i + 1);
       string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
       i += 2;
     } else {
       c2 = utftext.charCodeAt(i + 1);
       c3 = utftext.charCodeAt(i + 2);
       string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
       i += 3;
     }
   }
   return string;
 }

}

var to10 = function (data) { var sum = 0, reg = /^(\d)$/ data = data.toString().split() for (var i = 0; i < data.length; i++) { if (!reg.test(data[i])) { data[i] = data[i].toLowerCase().charCodeAt() - 87 } sum += data[i] * Math.pow(32, data.length-i-1) } return sum }

var to32 = function (data) { var yu, shang = data, arr = [] while (shang >= 32) { yu = shang % 32 shang = Math.floor(shang/32) yu = yu > 9 ? String.fromCharCode(yu + 87) : yu arr.unshift(yu) } shang = shang > 9 ? String.fromCharCode(shang + 87) : shang arr.unshift(shang) return arr.join()   }


function sortByKW(n) {

 var filter, table, tr, td, i, txtValue;
 const Keyword = ["", "逃马", "先行", "差行", "追马", "短距离", "英里", "中距离", "长距离", "泥地", "通用"]
 filter = Keyword[n];
 table = document.getElementById("Skilltable");
 tr = table.getElementsByTagName("tr");
 for (i = 0; i < tr.length; i++) {
   td = tr[i].getElementsByTagName("td")[4];
   if (td) {
     txtValue = td.textContent || td.innerText;
     if (filter == null) {
       tr[i].style.display = "";
     } else {
       if (txtValue.indexOf(filter) > -1) {
         tr[i].style.display = "";
       } else {
         tr[i].style.display = "none";
       }
     }
   }
 }

}

function sortColor(n) {

 var filter, table, tr, td, i, txtValue;
 const Keyword = ["红色", "黄色", "蓝色", "绿色", "紫色"]
 filter = Keyword[n];
 table = document.getElementById("Skilltable");
 tr = table.getElementsByTagName("tr");
 for (i = 0; i < tr.length; i++) {
   td = tr[i].getElementsByTagName("td")[6];
   if (td) {
     txtValue = td.textContent || td.innerText;
     if (filter == null) {
       tr[i].style.display = "";
     } else {
       if (txtValue.indexOf(filter) > -1) {
         tr[i].style.display = "";
       } else {
         tr[i].style.display = "none";
       }
     }
   }
 }

}

ko.bindingHandlers.sort = {

 init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
   var asc = false;
   element.style.cursor = 'pointer';
   element.onclick = function() {
     var value = valueAccessor();
     var prop = value.prop;
     var data = value.arr;
     asc = !asc;
     data.sort(function(left, right) {
       var rec1 = left;
       var rec2 = right;
       if (!asc) {
         rec1 = right;
         rec2 = left;
       }
       var props = prop.split('.');
       for (var i in props) {
         var propName = props[i];
         var parentIndex = propName.indexOf('()');
         if (parentIndex > 0) {
           propName = propName.substring(0, parentIndex);
           rec1 = rec1[propName]();
           rec2 = rec2[propName]();
         } else {
           rec1 = rec1[propName];
           rec2 = rec2[propName];
         }
       }
       return rec1 == rec2 ? 0 : rec1 < rec2 ? -1 : 1;
     });
   };
 }

};

function Search() {

 var input, filter, table, tr, td, i;
 input = document.getElementById("myInput");
 filter = input.value.toUpperCase();
 table = document.getElementById("Skilltable");
 var rows = table.getElementsByTagName("tr");
 for (i = 1; i < rows.length; i++) {
   var cells = rows[i].getElementsByTagName("td");
   var j;
   var rowContainsFilter = false;
   for (j = 2; j < 6; j++) {
     if (cells[j]) {
       var txtValue = cells[j].textContent || cells[j].innerText;
       if (txtValue.toUpperCase().indexOf(filter) > -1) {
         rowContainsFilter = true;
         continue;
       }
     }
   }
   if (!rowContainsFilter) {
     rows[i].style.display = "none";
   } else {
     rows[i].style.display = "";
   }
 }

}

function 五维计算(value) {

 if (value >1200){
   var oval = value - 1200;
   value = 1200;
 }
 var result = 0;
 value += 1;
 const koeffi = [0.5, 0.8, 1, 1.3, 1.6, 1.8, 2.1, 2.4, 2.6, 2.8, 2.9, 3, 3.1, 3.3, 3.4, 3.5, 3.9, 4.1, 4.2, 4.3, 5.2, 5.5, 6.6, 6.8,6.9
 ];
 const ovk = [7.888, 8, 8.1, 8.3, 8.4, 8.5, 8.6, 8.8, 8.9, 9, 9.2, 9.3, 9.4, 9.6, 9.7, 9.8, 10, 10.1, 10.2, 10.3, 10.5, 10.6, 10.7, 10.9, 11, 11.1, 11.3, 11.4, 11.5, 11.7, 11.8, 11.9, 12.1, 12.2, 12.3, 12.4, 12.6, 12.7, 12.8, 13, 13.1, 13.2, 13.4, 13.5, 13.6, 13.8, 13.9, 14, 14.1, 14.3, 14.4, 14.5, 14.7, 14.8, 14.9, 15.1, 15.2, 15.3, 15.5, 15.6, 15.7, 15.9, 16, 16.1, 16.2, 16.4, 16.5, 16.6, 16.8, 16.9, 17, 17.2, 17.3, 17.4, 17.6, 17.7, 17.8, 17.9, 18.1, 18.2, 18.3];
 var q = Math.floor(value / 50);
 var r = value % 50;
 var i;
 for (i = 0; i < q; i++) {
   result += 50 * koeffi[i];
 }
 result += r * koeffi[i];
 
 if (oval >0){
   if (oval <9){
     var ovq = Math.floor(oval / 10);
   var ovr = oval % 10;
   var j;
   for (j = 0; j < ovq; j++) {
     result += 10 * ovk[j];
   }
   result += ovr * ovk[j];
   }
   else{
     result = 3912;
     oval += 1;
     var ovq = Math.floor(oval / 10);
     var ovr = oval % 10;
     var j;
     for (j = 1; j < ovq; j++) {
       result += Math.ceil(10 * ovk[j]);
     }
     result += Math.ceil(ovr * ovk[j]);
   }
 }
 result = Math.floor(result);
 return result;

}


var ViewModel = function() {

 var self = this;
 var that = this;
 self.速度 = ko.observable(0);
 self.耐力 = ko.observable(0);
 self.力量 = ko.observable(0);
 self.毅力 = ko.observable(0);
 self.智力 = ko.observable(0);
 self.继承技数量 = ko.observable(0);


 self.适性等级表 = [{
     id: 0,
     适性等级: "S",
     技能倍率: 1.1,
     竞技场倍率: 0.02
   }, //0
   {
     id: 1,
     适性等级: "A",
     技能倍率: 1.1,
     竞技场倍率: 0
   }, //1
   {
     id: 2,
     适性等级: "B",
     技能倍率: 0.9,
     竞技场倍率: -0.1
   }, //2 
   {
     id: 3,
     适性等级: "C",
     技能倍率: 0.9,
     竞技场倍率: -0.2
   }, //3
   {
     id: 4,
     适性等级: "D",
     技能倍率: 0.8,
     竞技场倍率: -0.3
   }, //4
   {
     id: 5,
     适性等级: "E",
     技能倍率: 0.8,
     竞技场倍率: -0.4
   }, //5
   {
     id: 6,
     适性等级: "F",
     技能倍率: 0.8,
     竞技场倍率: -0.5
   }, //6
   {
     id: 7,
     适性等级: "G",
     技能倍率: 0.7,
     竞技场倍率: -0.7
   } //7
 ];
 self.脚质适性等级表 = [{
     id: 0,
     适性等级: "S",
     技能倍率: 1.1,
     竞技场倍率: 0.02
   }, //0
   {
     id: 1,
     适性等级: "A",
     技能倍率: 1.1,
     竞技场倍率: 0
   }, //1
   {
     id: 2,
     适性等级: "B",
     技能倍率: 0.9,
     竞技场倍率: -0.05
   }, //2 
   {
     id: 3,
     适性等级: "C",
     技能倍率: 0.9,
     竞技场倍率: -0.1
   }, //3
   {
     id: 4,
     适性等级: "D",
     技能倍率: 0.8,
     竞技场倍率: -0.15
   }, //4
   {
     id: 5,
     适性等级: "E",
     技能倍率: 0.8,
     竞技场倍率: -0.2
   }, //5
   {
     id: 6,
     适性等级: "F",
     技能倍率: 0.8,
     竞技场倍率: -0.25
   }, //6
   {
     id: 7,
     适性等级: "G",
     技能倍率: 0.7,
     竞技场倍率: -0.3
   } //7
 ];
 self.固有技等级表 = [{
     id: 0,
     固有技等级: 1
   }, //0
   {
     id: 1,
     固有技等级: 2
   }, //1
   {
     id: 2,
     固有技等级: 3
   }, //2
   {
     id: 3,
     固有技等级: 4
   }, //3
   {
     id: 4,
     固有技等级: 5
   }, //4
   {
     id: 5,
     固有技等级: 6
   }, //5
 ];
 self.角色星级表 = [{
     id: 0,
     角色星级: "1~2",
     系数: 120
   },
   {
     id: 1,
     角色星级: "3~5",
     系数: 170
   }
 ];
 self.场地表 = [{
     id: 0,
     场地类型: "草地"
   }, //0
   {
     id: 1,
     场地类型: "泥地"
   } //1
 ];
 self.距离表 = [{
     id: 0,
     距离类型: "短距离"
   }, //0
   {
     id: 1,
     距离类型: "英里"
   }, //1
   {
     id: 2,
     距离类型: "中距离"
   }, //2
   {
     id: 3,
     距离类型: "长距离"
   } //3
 ];
 self.跑法表 = [{
     id: 0,
     跑法类型: "逃马"
   }, //0
   {
     id: 1,
     跑法类型: "先行"
   }, //1
   {
     id: 2,
     跑法类型: "差行"
   }, //2
   {
     id: 3,
     跑法类型: "追马"
   } //3
 ];


 self.草地适性 = ko.observable(self.适性等级表[7]);
 self.泥地适性 = ko.observable(self.适性等级表[7]);
 self.短距离适性 = ko.observable(self.适性等级表[7]);
 self.英里赛适性 = ko.observable(self.适性等级表[7]);
 self.中距离适性 = ko.observable(self.适性等级表[7]);
 self.长距离适性 = ko.observable(self.适性等级表[7]);
 self.逃适性 = ko.observable(self.脚质适性等级表[7]);
 self.先适性 = ko.observable(self.脚质适性等级表[7]);
 self.差适性 = ko.observable(self.脚质适性等级表[7]);
 self.追适性 = ko.observable(self.脚质适性等级表[7]);
 self.角色星级 = ko.observable(self.角色星级表[0]);
 self.固有技等级 = ko.observable(self.固有技等级表[0]);
 self.场地 = ko.observable(self.场地表[0]);
 self.距离 = ko.observable(self.距离表[0]);
 self.跑法 = ko.observable(self.跑法表[0]);
 function Skill(data) {
   var selfsk = this;
   selfsk.isActive = ko.observable(false);

selfsk.id = data.id; selfsk.group_id = data.group_id;

   selfsk.图标 = data.图标;
   selfsk.技能名 = data.技能名;
   selfsk.中文名 = data.中文名;
   selfsk.条件限制 = data.条件限制;
   selfsk.评价分 = data.评价分;
   selfsk.所需技能PT = data.所需技能PT;
   selfsk.特殊 = data.特殊;
   selfsk.类型 = data.类型;
   selfsk.颜色 = data.颜色;
   selfsk.isEnable = ko.observable(true);

if(selfsk.id==201671||selfsk.id==201672) selfsk.特殊 = 1;

   selfsk.评价分改 = ko.computed(function() {

var temp = 1 if (selfsk.特殊 == 1) return Math.round(Number(selfsk.评价分) * 1); else if(selfsk.group_id==20240||selfsk.id==104201211||selfsk.id==104201111||selfsk.id==108501211){ temp1 = temp * Number(self.短距离适性().技能倍率); temp2 = temp * Number(self.英里赛适性().技能倍率); temp1 > temp2 ? temp=temp1:temp=temp2 return Math.round(Number(selfsk.评价分) * temp); } else if(selfsk.group_id==20247||selfsk.id==104801211||selfsk.id==104801111||selfsk.id==101602111){ temp1 = temp * Number(self.先适性().技能倍率); temp2 = temp * Number(self.差适性().技能倍率); temp1 > temp2 ? temp=temp1:temp=temp2 return Math.round(Number(selfsk.评价分) * temp); }

       else if(selfsk.group_id==20253){

temp1 = temp * Number(self.中距离适性().技能倍率); temp2 = temp * Number(self.英里赛适性().技能倍率); temp1 > temp2 ? temp=temp1:temp=temp2 return Math.round(Number(selfsk.评价分) * temp); }

       else if(selfsk.group_id==20252||selfsk.id==105701111||selfsk.id==104701211||selfsk.id==108301211){

temp1 = temp * Number(self.中距离适性().技能倍率); temp2 = temp * Number(self.长距离适性().技能倍率); temp1 > temp2 ? temp=temp1:temp=temp2 return Math.round(Number(selfsk.评价分) * temp); } else{ if(selfsk.条件限制.includes("逃马")) temp = temp * Number(self.逃适性().技能倍率); if(selfsk.条件限制.includes("先行")) temp = temp * Number(self.先适性().技能倍率); if(selfsk.条件限制.includes("差行")) temp = temp * Number(self.差适性().技能倍率); if(selfsk.条件限制.includes("追马")) temp = temp * Number(self.追适性().技能倍率); if(selfsk.条件限制.includes("短距离")) temp = temp * Number(self.短距离适性().技能倍率); if(selfsk.条件限制.includes("中距离")) temp = temp * Number(self.中距离适性().技能倍率); if(selfsk.条件限制.includes("英里")) temp = temp * Number(self.英里赛适性().技能倍率); if(selfsk.条件限制.includes("长距离")) temp = temp * Number(self.长距离适性().技能倍率); return Math.round(Number(selfsk.评价分) * temp); } });

   selfsk.PT评价比 = ko.computed(function() {
     if(selfsk.所需技能PT == 0)
       return "";
     else{
       return Math.abs(Number(selfsk.评价分改() / selfsk.所需技能PT).toFixed(2));}
   });
 }
 self.Skills = ko.observableArray([]);
 self.PopulateSkills = ko.computed(function(){
       ko.utils.arrayForEach(skillData, function(item){
           self.Skills.push(new Skill(item));
       });
   });
 self.selectedSkills = ko.pureComputed(function() {
   var all = self.Skills(),
     isActive = [];
   for (var i = 0; i < all.length; i++)
     if (all[i].isActive())
       isActive.push(all[i]);
   return isActive;
 });


 self.removeSkill = function(Skill1) {
   for (var i = 0; i < self.Skills().length; i++) {
     if (self.Skills()[i].id == Skill1.id) {
       self.Skills()[i].isActive(false);
       if (Skill1.类型 == 2) {
         for (var j = 0; j < self.Skills().length; j++) {
           if (self.Skills()[j].group_id == Skill1.group_id && self.Skills()[j].类型 == 1)
             self.Skills()[j].isEnable(true);
         }
       }
       else if (Skill1.类型 == 3) {
         for (var j = 0; j < self.Skills().length; j++) {
           if (self.Skills()[j].group_id == Skill1.group_id ){
             if(self.Skills()[j].类型 == 2||self.Skills()[j].类型 == 1)
               self.Skills()[j].isEnable(true);
           }
         }
       }
     }
   }
 };
 self.clearSkill = function() {
   for (var i = 0; i < self.Skills().length; i++) {
     self.Skills()[i].isActive(false);
     self.Skills()[i].isEnable(true);
   }
 };
 self.checkIfEnable = function(Skill2) {
   if (Skill2.类型 == 2) {
     for (var i = 0; i < self.Skills().length; i++) {
       if (self.Skills()[i].group_id == Skill2.group_id && self.Skills()[i].类型 == 1) {
         if (Skill2.isActive()) {
           self.Skills()[i].isActive(false);
           self.Skills()[i].isEnable(false);
         } 

else self.Skills()[i].isEnable(true);

       }
     }
   }
   else if (Skill2.类型 == 3) {
     for (var i = 0; i < self.Skills().length; i++) {
       if (self.Skills()[i].group_id == Skill2.group_id) {
         if (self.Skills()[i].类型 == 2||self.Skills()[i].类型 == 1){
          if (Skill2.isActive()) {
             self.Skills()[i].isActive(false);
             self.Skills()[i].isEnable(false);
           } 

else self.Skills()[i].isEnable(true);

         }
       }
     }
   }
   return true;
 };


 self.五维总计 = ko.computed(function() {
   return (五维计算(Number(self.速度())) + 五维计算(Number(self.耐力())) + 五维计算(Number(self.力量())) + 五维计算(Number(self.毅力())) + 五维计算(Number(self.智力())));
 });
 self.技能总计 = ko.computed(function() {
   var subtotal = 0;
   if (self.selectedSkills().length > 0) {
     for (var i = 0; i < self.selectedSkills().length; i++)
       subtotal += Number(self.selectedSkills()[i].评价分改());
   }
   return subtotal + self.角色星级().系数 * self.固有技等级().固有技等级 + 180 * Number(self.继承技数量());
 });
 self.技能点总计 = ko.computed(function() {
   var subtotal = 0;
   if (self.selectedSkills().length > 0) {
     for (var i = 0; i < self.selectedSkills().length; i++)
       if (self.selectedSkills()[i].颜色 != "紫")
         subtotal += Number(self.selectedSkills()[i].所需技能PT);
   }
   return subtotal + 200 * Number(self.继承技数量());
 });
 self.评分总计 = ko.computed(function() {
   return self.技能总计() + self.五维总计();
 });
 self.距B = ko.computed(function() {
   return 8199 - self.评分总计();
 });
 self.距S = ko.computed(function() {
   return 14499 - self.评分总计();
 });
 self.评级 = ko.computed(function() {
   var n = self.评分总计();

if (n >= 34400)

     return "UD";

if (n >= 33800)

     return "UE9";

if (n >= 33200)

     return "UE8";

if (n >= 32700)

     return "UE7";

if (n >= 32100)

     return "UE6";

if (n >= 31500)

     return "UE5";

if (n >= 31000)

     return "UE4";

if (n >= 30400)

     return "UE3";

if (n >= 29900)

     return "UE2";

if (n >= 29400)

     return "UE1";

if (n >= 28800)

     return "UE";

if (n >= 28300)

     return "UF9";

if (n >= 27800)

     return "UF8";

if (n >= 27300)

     return "UF7";

if (n >= 26800)

     return "UF6";

if (n >= 26300)

     return "UF5";

if (n >= 25800)

     return "UF4";

if (n >= 25300)

     return "UF3";

if (n >= 24800)

     return "UF2";

if (n >= 24300)

     return "UF1";

if (n >= 23900)

     return "UF";

if (n >= 23400)

     return "UG9";

if (n >= 23000)

     return "UG8";

if (n >= 22500)

     return "UG7";

if (n >= 22100)

     return "UG6";

if (n >= 21600)

     return "UG5";

if (n >= 21200)

     return "UG4";

if (n >= 20800)

     return "UG3";
   if (n >= 20400)
     return "UG2";
   if (n >= 20000)
     return "UG1";
   if (n >= 19600)
     return "UG";
   if (n >= 19200)
     return "SS+";
   if (n >= 17500)
     return "SS";
   if (n >= 15900)
     return "S+";
   if (n >= 14500)
     return "S";
   if (n >= 12100)
     return "A+";
   if (n >= 10000)
     return "A";
   if (n >= 8200)
     return "B+";
   if (n >= 6500)
     return "B";
   if (n >= 4900)
     return "C+";
   if (n >= 3500)
     return "C";
   if (n >= 2900)
     return "D+";
   if (n >= 2300)
     return "D";
   if (n >= 1800)
     return "E+";
   if (n >= 1300)
     return "E";
   if (n >= 900)
     return "F+";
   if (n >= 600)
     return "F";
   if (n >= 300)
     return "G+";
   return "G"
 });
 self.竞技场评分 = ko.computed(function() {
   var 系数 = 1;
   switch (self.场地().场地类型) {
     case "泥地":
       系数 = 系数 * (1 + self.泥地适性().竞技场倍率);
       break;
     case "草地":
       系数 = 系数 * (1 + self.草地适性().竞技场倍率);
       break;
   }
   switch (self.距离().距离类型) {
     case "短距离":
       系数 = 系数 * (1 + self.短距离适性().竞技场倍率);
       break;
     case "英里":
       系数 = 系数 * (1 + self.英里赛适性().竞技场倍率);
       break;
     case "中距离":
       系数 = 系数 * (1 + self.中距离适性().竞技场倍率);
       break;
     case "长距离":
       系数 = 系数 * (1 + self.长距离适性().竞技场倍率);
       break;
   }
   switch (self.跑法().跑法类型) {
     case "逃":
       系数 = 系数 * (1 + self.逃适性().竞技场倍率);
       break;
     case "先行":
       系数 = 系数 * (1 + self.先适性().竞技场倍率);
       break;
     case "差":
       系数 = 系数 * (1 + self.差适性().竞技场倍率);
       break;
     case "追":
       系数 = 系数 * (1 + self.追适性().竞技场倍率);
       break;
   }
   return Math.floor(self.评分总计() * 系数);
 });


 self.技能选择面板开关 = ko.observable(true);
 self.检查技能选择面板 = function() {
   var toggle = $("#技能面板").hasClass('collapsed');
   self.技能选择面板开关(toggle);
 };


 self.技能选择面板样式 = ko.computed(function() {
   return self.技能选择面板开关() ? "glyphicon-menu-up" : "glyphicon-menu-down";
 });
 self.分享码 = ko.observable("分享码...");
 self.编码 = function() {
   var j = 0;
   var Code = [];
   Code[j] = to32(self.速度());
   j++;
   Code[j] = to32(self.耐力());
   j++;
   Code[j] = to32(self.力量());
   j++;
   Code[j] = to32(self.毅力());
   j++;
   Code[j] = to32(self.智力());
   j++;
   Code[j] = to32(self.继承技数量());
   j++;
   Code[j] = to32(self.草地适性().id);
   j++;
   Code[j] = to32(self.泥地适性().id);
   j++;
   Code[j] = to32(self.短距离适性().id);
   j++;
   Code[j] = to32(self.英里赛适性().id);
   j++;
   Code[j] = to32(self.中距离适性().id);
   j++;
   Code[j] = to32(self.长距离适性().id);
   j++;
   Code[j] = to32(self.逃适性().id);
   j++;
   Code[j] = to32(self.先适性().id);
   j++;
   Code[j] = to32(self.差适性().id);
   j++;
   Code[j] = to32(self.追适性().id);
   j++;
   Code[j] = to32(self.角色星级().id);
   j++;
   Code[j] = to32(self.固有技等级().id);
   j++;
   var all = self.Skills();
   for (var i = 0; i < all.length; i++)
     if (all[i].isActive()) {
       Code[j] = to32(all[i].id);
       j++;
     }
   var arrayResult = "E";
   arrayResult = arrayResult.concat("E", Code.join('Z'), "alvn");
   var arrayResult2 = "TRSC";
   arrayResult2 = arrayResult2.concat(Base64.encode(arrayResult));
   self.分享码(arrayResult2);
 };
 self.解码 = function() {
   var Code = self.分享码();
   if (Code.slice(0, 4) == "TRSC") {
     Code = Base64.decode(Code.slice(4));
     if (Code.startsWith("E") && Code.slice(-4) == "alvn") {

self.clearSkill();

       Code = Code.slice(2, -4);
       var Result = Code.split('Z');
       var j = 0;
       self.速度(Number(to10(Result[j])));
       j++;
       self.耐力(Number(to10(Result[j])));
       j++;
       self.力量(Number(to10(Result[j])));
       j++;
       self.毅力(Number(to10(Result[j])));
       j++;
       self.智力(Number(to10(Result[j])));
       j++;
       self.继承技数量(Number(to10(Result[j])));
       j++;
       self.草地适性(self.适性等级表[Number(to10(Result[j]))]);
       j++;
       self.泥地适性(self.适性等级表[Number(to10(Result[j]))]);
       j++;
       self.短距离适性(self.适性等级表[Number(to10(Result[j]))]);
       j++;
       self.英里赛适性(self.适性等级表[Number(to10(Result[j]))]);
       j++;
       self.中距离适性(self.适性等级表[Number(to10(Result[j]))]);
       j++;
       self.长距离适性(self.适性等级表[Number(to10(Result[j]))]);
       j++;
       self.逃适性(self.脚质适性等级表[Number(to10(Result[j]))]);
       j++;
       self.先适性(self.脚质适性等级表[Number(to10(Result[j]))]);
       j++;
       self.差适性(self.脚质适性等级表[Number(to10(Result[j]))]);
       j++;
       self.追适性(self.脚质适性等级表[Number(to10(Result[j]))]);
       j++;
       self.角色星级(self.角色星级表[Number(to10(Result[j]))]);
       j++;
       self.固有技等级(self.固有技等级表[Number(to10(Result[j]))]);
       j++;
       for (var i = 0; i < self.Skills().length; i++)
         if (self.Skills()[i].id == Number(to10(Result[j]))) {
           self.Skills()[i].isActive(true);
           j++;
         }
     } else self.分享码("请输入正确的分享码!");
   } else self.分享码("请输入正确的分享码!");
 }

}

ko.applyBindings(new ViewModel());

</script>