The code you changed works fine. cool! Then, including what you told me at the beginning, I added data like this and changed the function. function getreduction_effect2(type) {
var data = {0:0,1:0}; // 1 - ๋ค์ด์ค / 2 - ์ดํํธ ๋ ๋ฒจ
if(type >= 60) { // ์นจ์์น 60 ์ด์
data[1] = 0;
}
if(type >= 80) { // ์นจ์์น 80 ์ด์
data[1] = 1;
}
if(type >= 100) { // ์นจ์์น 100 ์ด์
data[1] = 2;
}
if(type >= 150) { // ์นจ์์น 160 ์ด์
data[1] = 3;
}
if(type >= 200) { // ์นจ์์น 190 ์ด์
data[1] = 4;
}
return data;
}
and on("change:reduction change:reduction_max change:base_reduction change:modify_reduction change:reduction_03", function() {
getAttrs(["reduction", "reduction_max", "base_reduction"], function(values) {
const reduction = +values.reduction_03 || 0;
const output = {};
if(reduction) {
// ์ต์ข
์นจ์์น
var b_reduction = values.reduction * 1;
var t_reduction = b_reduction;
output.reduction = t_reduction;
var chk_reduction = t_reduction > values.reduction_max ? values.reduction_max : t_reduction;
output.hide_reduction = chk_reduction;
// ์นจ์์น ๋ณ ์์ ํจ๊ณผ (์ดํํธ ๋ ๋ฒจ ๋ฐ ์ต์ข
๋ค์ด์ค ํจ๊ณผ)
// -- ์ดํํธ ๋ค์ด์ค ํจ๊ณผ๋ ์ฝค๋ณด์์๋ง ์ค์ ํ๋๋ก ํ๋ค.
var red_effect = getreduction_effect2(t_reduction);
var add_dice = red_effect[0]; // ํ์ ๋ค์ด์ค ์
var add_lv = red_effect[1]; // ์ดํํธ ๋ ๋ฒจ์
// 1) data [1]
output.effect_level = add_lv;
// 2) data [0]
output.add_dice = add_dice;
} else {
var b_reduction = values.reduction * 1;
var t_reduction = b_reduction;
output.reduction = t_reduction;
var chk_reduction = t_reduction > values.reduction_max ? values.reduction_max : t_reduction;
output.hide_reduction = chk_reduction;
// ์นจ์์น ๋ณ ์์ ํจ๊ณผ (์ดํํธ ๋ ๋ฒจ ๋ฐ ์ต์ข
๋ค์ด์ค ํจ๊ณผ)
// -- ์ดํํธ ๋ค์ด์ค ํจ๊ณผ๋ ์ฝค๋ณด์์๋ง ์ค์ ํ๋๋ก ํ๋ค.
var red_effect = getreduction_effect(t_reduction);
var add_dice = red_effect[0]; // ํ์ ๋ค์ด์ค ์
var add_lv = red_effect[1]; // ์ดํํธ ๋ ๋ฒจ์
// 1) data [1]
output.effect_level = add_lv;
// 2) data [0]
output.add_dice = add_dice;
}
let max = values.reduction_max;
let now = values.reduction;
let pers = (now == 0 || max == 0) ? 0 : now/max*100;
pers = Math.floor(pers);
output.reduction_per = pers;
setAttrs(output);
});
});
Like this? GiGs said: I just noticed an issue in the last code you posted: on("change:reduction change:reduction_max change:base_reduction change:modify_reduction", function() {
getAttrs(["reduction", "reduction_max", "base_reduction"], function(values) {
// ์ต์ข
์นจ์์น
var b_reduction = values.reduction * 1;
var t_reduction = b_reduction;
setAttrs({reduction:t_reduction});
var chk_reduction = t_reduction > values.reduction_max ? values.reduction_max : t_reduction;
setAttrs({hide_reduction:chk_reduction});
// ์นจ์์น ๋ณ ์์ ํจ๊ณผ (์ดํํธ ๋ ๋ฒจ ๋ฐ ์ต์ข
๋ค์ด์ค ํจ๊ณผ)
// -- ์ดํํธ ๋ค์ด์ค ํจ๊ณผ๋ ์ฝค๋ณด์์๋ง ์ค์ ํ๋๋ก ํ๋ค.
var red_effect = getreduction_effect(t_reduction);
var add_dice = red_effect[0]; // ํ์ ๋ค์ด์ค ์
var add_lv = red_effect[1]; // ์ดํํธ ๋ ๋ฒจ์
// 1) data [1]
setAttrs({effect_level:add_lv});
// 2) data [0]
setAttrs({add_dice:add_dice});
let max = values.reduction_max;
let now = values.reduction;
let pers = (now == 0 || max == 0) ? 0 : now/max*100;
pers = Math.floor(pers);
setAttrs({reduction_per: pers});
});
}); This code will work, but it is slow. You want to have only one setAttrs in each sheet worker. You can create a Javascript Object to hold all the final values. This is a better worker: on ( "change:reduction change:reduction_max change:base_reduction change:modify_reduction" , function () { getAttrs ([ "reduction" , "reduction_max" , "base_reduction" ], function ( values ) { const output = {}; // ์ต์ข
์นจ์์น var b_reduction = values . reduction * 1 ; var t_reduction = b_reduction ; output . reduction = t_reduction ; var chk_reduction = t_reduction > values . reduction_max ? values . reduction_max : t_reduction ; output . hide_reduction = chk_reduction ; // ์นจ์์น ๋ณ ์์ ํจ๊ณผ (์ดํํธ ๋ ๋ฒจ ๋ฐ ์ต์ข
๋ค์ด์ค ํจ๊ณผ) // -- ์ดํํธ ๋ค์ด์ค ํจ๊ณผ๋ ์ฝค๋ณด์์๋ง ์ค์ ํ๋๋ก ํ๋ค. var red_effect = getreduction_effect ( t_reduction ); var add_dice = red_effect [ 0 ]; // ํ์ ๋ค์ด์ค ์
var add_lv = red_effect [ 1 ]; // ์ดํํธ ๋ ๋ฒจ์
// 1) data [1] output . effect_level = add_lv ; // 2) data [0] output . add_dice = add_dice ; let max = values . reduction_max ; let now = values . reduction ; let pers = ( now == 0 || max == 0 ) ? 0 : now / max * 100 ; pers = Math . floor ( pers ); output . reduction_per = pers ; setAttrs ( output ); }); }); I tested it and it worked! thank you.