レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
戦国IXA ツールスレPart46
■前スレ
戦国IXA ツールスレPart45
https://jbbs.shitaraba.net/bbs/read.cgi/netgame/15829/1597412353/l50
荒らしは管理人が即出禁にするので注意
で、テーブル上のスキル名表示の不具合修正だが、元のコードがあまりに冗長なので序にごっそり書き変えるワン。
まず、『html = '<table id=(割愛'』から『if (c1.length) {』の間に関数を1つ追加する。
コード↓
function getTdString(skillString){
if(skillString === "-" || skillString === ".."){
return "-";
}
const splited = skillString.split(".");
const clist = `${splited.slice(0, 2).join(".")}<span class="skill_${skillString.slice(-1)}">${splited[2]}</span>`;
return clist;
};
次に、『if (c1.length) {
for (let i = 0; i < clist.length; i++) {』の下の 『var clist(0から4の数字) = 割愛』を次のコードにする。
コード↓
const clist0 = getTdString(clist[i][0]);
const clist1 = getTdString(clist[i][1]);
const clist2 = getTdString(clist[i][2]);
const clist3 = getTdString(clist[i][3]);
const clist4 = getTdString(clist[i][4]);
https://gyazo.com/d04876ce30a71d28ffe90af2fa6f4b8e
↑コード修正後、拡張機能を更新して、IXA上で確認してみるワン。
で、新たに追加した関数が何をやっているか、コードを見て分からない人は、
https://www.typescriptlang.org/play?noImplicitAny=false&noUnusedLocals=true&jsx=0&filetype=js #code/PTAEkTCVDsGUCUFcB2pBJDIeoZBXDIYYY2HUGQZgyCrcoCK+g-gwqBdHoLFRBg8gyAxDIIAMgPBmABDIPcMgzwwBQ3AZkgDGAFwCWAe2QBzAKbCAKgBMAysIBOACgDOAa1EAbfarUBKAN7dQoUX217Dx0AF4XoAEQBaN6AA+P0LoGRurOrm4AdOFu5pZWoGpy8GrInm4A3LEAvrGCklrCoIL6ovnOoAAGACRmgQ7q4VoADsXCGhHRDcWCMhoADAA0oABMJuEAVuKiiG1RJpkAPE0AhshFS1paTm61+gD61TvGnaLdGh4AjHNuAHwH9sFqDc2ire0mANpDALoLwMuI13KGSsCWESVWxXyGWy3BAoEAOJaAHijuLlEKV8moym5ANym4UA5OaAJ7TAHMMgGDUwDBJuFlFT0rxUVpxPoZOF9OIpBoAORFErCdmDWQKFTqbTqEwmDJ0hlMlls9lLNRqJYAT1AGkAsomAdCUTLyAvUmi0ZtExSi8pLmayOWJhIztRinvq3sdTgMRuNJtM3kaJYyzTK1hsbbquj0LqLxSbvdKOQq1C9FQHHnqXgaPt8jUA
ここに検証用にコードを置いているから『Run』を押して出力物を確認してみるワン。
あと、悪いことは言わないからVisual Studio Code を使うワン。
>>952 さん
スキルランクSSSのスキルテーブル表示の件が完璧に直りました。有り難うございました。
https://imgur.com/tFeLZGG
これまでclist0〜clist4まで変数で組み立てていた箇所を定数化された様ですので、
これらが2回登場していた関係上、function getTdString(skillString){(以下省略)を
追記する位置は
// カードポップアップウィンドウ
function ajaxContent() {
に入ってすぐの位置に差し込ませていただきました。
>>952 さん >>953 さん ありがとうございます。
しかし、挿入箇所、割愛などわかりません。
初心者にわかりやすく記載していただけませんでしょうか?
ぜひ、よろしくお願いします。
何気なくKronos起動してみたら動かなくなってた
(再ログインで止まる)んだけど、みなさんはどうですか?
>>954
自分はJavaScriptはド素人に限りなく近いので、今から書く事は話半分で読んで分からなかったら自力でググってね。
>>951 さんがスキルテーブルを表示しにいくロジックを変えてくれたけど、こんな感じ。
1.今までスキルテーブルの要素になるclist0〜clist4までは、ループの中でその場で文字列を置き換えたり組み立てたり
してたのを辞めてfunction getTdString()っていう独自の関数を作ってくださって
clist0〜clist4を決めるのは全部ここを通してねと書いてくれました。
2.関数っていうのは同じ名前で何度も重複して記述できず1度書けばいいものです。
3. // カードポップアップウィンドウ
function ajaxContent() {
っていう大きな関数の中でclist0〜clist4まで決める箇所が2回登場しています(>>945 )。
4.なので、自分はfunction ajaxContent(が始まってすぐの所に
function getTdString(skillString){
if(skillString === "-" || skillString === ".."){
return "-";
}
const splited = skillString.split(".");
const clist = `${splited.slice(0, 2).join(".")}<span class="skill_${skillString.slice(-1)}">${splited[2]}</span>`;
return clist;
};
を記述しました。JavaScriptの場合は関数を書く位置とその関数を利用する位置は前後逆転してても問題無いとの事ですけど、
コードの読み易さとして、まず関数を記述してその後その関数を呼ぶ様に記述した方が分かり易いです。
5.余談ですけど、constって他の手続き型言語だと「これは変化しない決まった値ね」という宣言なんですけど
JavaScriptの場合は再宣言(もっかいconstする)ができるみたい(詳しい理由は分からない)。
以上を踏まえて図示すると現状こんな感じです。
https://imgur.com/Z92zRAE
スキル合成テーブルの修正コードを出した者です。
>>953 や >>956 さんらの言う 関数function を ajaxContentの直下に〜は、自分で処理できない人は一切する必要性がないです。私がここに投下する際に当然関数の位置は考えましたが、javascript に不慣れな人がしたらば上で正しく修正できないだろうと思い、『まず、『html = '<table id=(割愛'』から『if (c1.length) {』の間に関数を1つ追加する。』としました。
なので、コード修正結果が↓gyazo の様になればよいです(私はコメントを基本残さないので、みなさんのものとは違います。なので、そこらへんは自分のものと比べて理解してください
https://gyazo.com/d04876ce30a71d28ffe90af2fa6f4b8e
>>956 さんへ
まずフォローありがとうございます。
ただ、関数の位置変更等するにはしたらばでは無理です。github 等上ならまだしも。
また、この function を ajaxContent 直下に持ってくるとするなら、もう1つのmoko_candidateの方の同じ関数を消した方が動作コスト的に良いなど横やりが入り、また説明する羽目になります。
私はしましたが。
あと、js は const、let ともに再宣言不可で、スコープ関係なしに可能なのは var のみです。
[参照: Mozilla - let](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let)
>>958 さん
コメントつけて戴いて有り難うございます。
お手数ですが以下の確認をお願いしても宜しいでしょうか。
>> もう1つのmoko_candidateの方の同じ関数を消した方が
と仰っているのはconst clist0 = getTdString(clist[i][0]);(以下省略)が2回登場するのは不要です、という事でしょうか?
それとここから先は知的好奇心からお尋ねしますが、私が図示したコードで
同名のconstが2回できてしまっているのは本来のconstは他の手続き型言語と同様に
再宣言不可ですが、宣言したブロックスコープの箇所が異なっているのでエラーなく動作しているという事でしょうか。
ご参考:以下ページのconstの項の「続いて、許可されているケースをいくつか紹介します。」
https://tsudoi.org/weblog/4907/
私はMOKOの改修に役立つかもと思いかなり以前に翔泳社の「JavaScript逆引きレシピ」を
購入して手元に置いていますが、脳の方が追いつかずさほど役に立っておらず申し訳ないです。
>>956 さん >>957 さん
ありがとうございます。深い議論にはまったくついて行けませんが、
何とか表示できるようになりました。
https://gyazo.com/ccd5e89a421167a2c177b27f98faa0dc
感謝です!
スコープが違うからですね。
あと、『const clist0 = getTdString(clist[i][0]);』は変数に getTdString関数の返り値を代入してるだけで、関数其のものじゃないです。
私が指示した通りでやると、2つの『html = '<table id=(割愛'』から『if (c1.length) {』の間にそれぞれ function getTdString と定義・挿入するわけですが、もし仮にこの関数ををajaxCotentent 直下に持っていくならば2か所要らないですよね?まあ他方がajaxContent直下に、もう一方が指示した箇所にあってもスコープの関係上、エラー無く動きますが。
同じスコープ内でちょろちょろっと修正する分にはその箇所だけを見りゃよい訳ですが、スコープを跨いで修正したければ、そのスコープ全体を端から端まで読んで何やってるか理解しておかないと思わぬエラーを起こしえます。
最後に。その本は"レシピ"としては確かに有用ですが、moko 自体は最新のお作法に倣って作られている訳ではない事に留意してほしいです。
(意味の分からない変数名(1文字など)であったり、『var hoge, foo, bar』といった変数定義の多用、多重に入れ子になっているコードなど。
>>961 さん ご返信感謝です。
>> 『const clist0 = getTdString(clist[i][0]);』は変数に getTdString関数の返り値を代入してるだけで、関数其のものじゃないです。
流石にその程度の事は承知しています。「(function getTdString()を一度しか記述しない場合)const clist0 = (以下省略)を2回行っているのは蛇足なコーディングでしょうか?」という趣旨の質問でした。
留意事項の注意喚起有り難うございます。ソースが巨大過ぎて理解が大変ではありますが
着手できる範囲で少しずつソース(変数の取扱い含め)の見直しができたらいいなと思います。
自分的課題メモをちょろっと書き残しておきます。
1.ixa-moko.user.js内の
var SKILL_CANDIDATE = {
の一番最初の行がくっそ長いので見やすく整形したい
2.ixa-moko.user.js
「カード一括レベルアップ」が動作しないのでここだけでもちゃんと動く様に修正したい
レベルが低く思われる課題かもですが自分的には2.がハードル高いので頑張ってみます。
>>945 の者です。
今まで何度も何度も修正してエラーばかりになってましたが
>>956 さんを見てやっと出来たかと思われます。(4を見て表記部分が分かりました)
その後に↓のような記述に2か所変更しました。
https://gyazo.com/7b60716be862d664d89b25955df3dc4f
(間違ってるかもですが、何とか表示出来たので自分的に良しかなです)
私は素人で何とか見よう見まねでやっていくしか出来ないのですが、修正案を出していただいてる
皆様、本当にありがとうございます。
連投ですいません。
私のもそうなのですが、>>960 さんの画像を見て思ったのが、
風狂幻術は2段表記(Bが下段)で九字ノ呪法は1段表記(Sが横に)
文字数が多い場合に2段表記?かなと思ったのですが、
同じ4文字でも、神の歌才は2段・仁将無双は1段になってます。これってmokoを修正する部分があるのでしょうか?
https://gyazo.com/8e92cd15ece19038236ed25c00344409
>>964 さん
私は結局constは辞めてletにしました。こんな感じです。
let clist0 = getTdString(clist[i][0]);
let clist1 = getTdString(clist[i][1]);
let clist2 = getTdString(clist[i][2]);
let clist3 = getTdString(clist[i][3]);
let clist4 = getTdString(clist[i][4]);
>>965 さん
ぱっと見ですが、スキルテーブルのC列だけ列幅が他の列に比較して狭いですね。私の持ってる武将でもその様な表示です。
しかも武将画面から見るスキルテーブルの各列幅はご指摘の様に不揃いなのに、
カードアルバムから見るスキルテーブルの各列幅は均等なんですよね。
main.cssの改修になるのかixa-moko.user.jsの改修になるのか判りませんが賢者の方々のお知恵をお借りしたい所です。
>>966 さんありがとうございます。
あ、よく見るとテーブルCの部分の列幅が短いのですね。(気付きませんでした)
>>私は結局constは辞めてletにしました。こんな感じです。
私にはconst・letの表記の違い等全く分からないのですが、そうされてるという事はletで記述した方が
何か利点があるのですかね?取り敢えず静観させて頂きます。
>>967 さん
「javascript let const 違い」でググると一杯解説記事が出てきますが。
constは"皇居の住所" = "東京都千代田区千代田1番" で未来永劫変わんないよっていうものの宣言
varは省くけどletは"雛見沢村の昭和58年" = "羽入これ" + 【何度目】 + "の昭和58年なの?" みたいに中身が変化するかもしれないものの宣言
今回同じ名前のconstが2度使えてしまったので訳わかんなくなって>>959 で質問してID:uTnd3YlEさんに解説していただいた次第です。
- 要参照
- [Zenn.dev - letとconstの使い分けと注意点](https://zenn.dev/hiromu617/articles/ae50fb8dd70f4c)
- [var / let / const を本気で使い分けてみた](https://qiita.com/cheez921/items/7b57835cb76e70dd0fc4)
まず、現在では let と const のみが使われ、var はバグを生みやすいとして使われることはない。但し、let は2015年からの用法なので、より古い moko は var が多数用いられている。
次に const と let の間にパフォーマンス上やjavascript(以下js)が分からない人への利点は一切無い。あるのは js がちゃんとわかる人にとって、この変数が再代入されるかどうかがぱっと見で分かり、バグ(エラー)を避けることができるだけ。
『今回同じ名前のconstが2度使えてしまったので訳わかんなくなって』について。
これはスコープというものが違うから使えるだけ。使える状態・環境では基本 const を使う。let は const が使えない状況下でのみ仕方なく使うだけ。
因みに私が示したコードの中の const の代わりに let/var を使ってもエラーにはならないけども、先述の理由でlet を使う必要性は皆無、var は論外。違いやスコープが分からない人は規則ゆるゆるの何でもできる var でもどうぞご自由に。
もし初歩でも良いから js わかりたい人は progate の js コースⅠ〜Ⅲまでやってみたら良い。タダだし、大して時間はかからない。
https://prog-8.com/courses/es6
ID:uTnd3YlEさん。色々とかみ砕いて書いてくださり有り難うございます。
constもfunctionもそうですが、プロシージャレベル、モジュールレベル、パブリックレベルで
接頭辞をつけて明示的に宣言できる言語を、それを強く推奨される現場で使用していました、。
ですのでMOKOのソースを読んで言語仕様の差異に戸惑ってしまっただけです。
教えて戴いたURLにおけるJavaScriptの学習も亀の歩みですみませんがゆるゆると学ばせていただきます。
この話題は終了してください。有り難うございました。
>>968 さん
色々とありがとうございます。今の状況ではほぼ理解は出来ていませんが
何もしなければ進歩は無いので、js コースⅠ〜Ⅲなどを見て、少しでも理解できるような
努力はしていきたいと思っています。
"攻.加具土ノ神域.SS": ["..","..","..","攻.加具土ノ神域.SS",".."],
取り敢えず
// 2021.12
".斗星ノ矜持.": ["..", "..", "..", "..", ".."],
".波斬 菖蒲.": ["..", "..", "..", "..", ".."],
".奇将遊撃.": ["..", "..", "..", "..", ".."],
"攻.前知兵法.": ["..", "..", "..", "..", ".."],
".義ノ系譜.": ["..", "..", "..", "..", ".."],
".義憤絶剣.": ["..", "..", "..", "..", ".."],
".虎目石.": ["..", "..", "..", "..", ".."],
間違えた(スキルレアリティは予測物なので、適宜修正してほしいワン
// 2021.12
".斗星ノ矜持.A": ["..", "..", "..", "..", ".."],
".波斬 菖蒲.A": ["..", "..", "..", "..", ".."],
".奇将遊撃.S": ["..", "..", "..", "..", ".."],
"特.前知兵法.S": ["..", "..", "..", "..", ".."],
".義ノ系譜.": ["..", "..", "..", "..", ".."],
".義憤絶剣.": ["..", "..", "..", "..", ".."],
".虎目石.": ["..", "..", "..", "..", ".."],
部隊編成画面で武将一人でもセットしてる部隊を選択時に読み込みがコケてるぽいんですが原因どの辺かわかりますかね
空の部隊選択時は問題無し
なんかログイン周り弄らられた?
別ブラウザで影に自動切り替えが出来なくなってるな
メンテ後はローカルストレージの一部クリアを行わないと兵士一括訓練が起動しないですね。
ナイス情報です
>>977
部隊戦力を表示するがダメっぽい
>>981
おーさんきゅです、改修までこれ外せばいけますな
メンテ後影だけサイドバーの表示が壊れてる
本城主は問題ないんだけど
部隊配置機能がなくなっています。
本領主が https://gyazo.com/32646cab911f3ab51fd4767b864ae3ff
影城主が https://gyazo.com/fd20c12fd6816ee9f43677be1f43a09b
どなたか修正方法あれば教えて下さい。
使用Verは、戦国IXA用ツール 設定ver 22.2021.10.1、です。
宜しくお願いします。
- command_type = SOLDIER.commandKey[command_type_str]; //兵種
+ command_type = SOLDIER.numberKey[command_type_str]; //兵種
- if (document.body.className == "current_owner_sub" && key != 'ixamoko_login_data' && key != 'ixamoko_potential_data') {
+ if (document.body.className.indexOf("current_owner_sub") != -1 && key != 'ixamoko_login_data' && key != 'ixamoko_potential_data') {
とりあえず
ありがとうございます。
// 影城主への強制切り替え
if ($(".other_owner_block")[0] &&
document.body.className === "current_owner_main") {
location.href="/user_change.php";
}
// 影城主への強制切り替え
if ($(".other_owner_block")[0] &&
document.body.className === "current_owner_main bg_image_snow") {
location.href="/user_change.php";
}
>>988 さん
ありがとうございます
ようやく上手く切り替わりました
>>985 さん>>988 さん
ありがとうございました。
bg_image_snow ってことは今後四季によって変わるってこと?やれやれ…
今月のイベントで雪景色がどうのこうのと書かれてたからたまにしかやらない気もする
画面切り替えで雪の背景がちらちら光って目が><
あとスキル表示がでなくなっちゃいました
>>985 , >>986
ありがとうございます
今回のメンテで影側の一括訓練が施設情報取得できず
「訓練可能な施設は見つかりませんでした。」のエラーだして
動かなくなってたので、修正案
【ixa-training.user.js】
- return document.body.className == 'current_owner_sub' ? '1' : '0';
+ return document.body.className == 'current_owner_sub bg_image_snow' ? '1' : '0';
12月のイベ終わったら元に戻さないとだめそうですが
他もβに向けてか不明ですが、兵科のクラス名(commandsol_yari1)も変更(commandsol_321)に
なっているし、無意味な修正に思えて嫌がらせにしか感じない…
ぼちぼちどなたか次スレお願いします
>>994
無事動作しました 大変助かりました ありがとうございます!
スレ立てかたよくわからん。
これでいいかい?
気に入らんかったら誰か立てくれ。後がないのでとりまやってみた。
>>997
ありです
>>994
元に戻さなくて良い書き方が >>986 に書いてありますよ
ソロ合流時に部隊にチェック入れる場面で、上段の武将が部隊長だけの表示になってませんか?
加勢部隊も2部隊送ろうとしても上段の部隊は部隊長だけ表示になってませんか?
他の方はちゃんと表示されてますか?
https://jbbs.shitaraba.net/bbs/read.cgi/netgame/15829/1638469272/
次スレ
スマートフォン版
掲示板管理者へ連絡
無料レンタル掲示板