#衣装EXPORTデータ
Explore tagged Tumblr posts
Text
ハロウィン魔女
ハロウィンパーティーの魔女スタイル かぼちゃ型のスカートはベルトだけで作成しているので体型によって破綻しないかと思います。
【EXPORTデータ】 98**ia_if10.16.43.0.1.0.0.0.0.0.0.0.0.1.0.0.0.0.1.0.0.0.0.0_ib15.55.55.16.0.0.0.1.1.0.0.1.0.0.2.0.0.0.0.1.7.0.0.0.0.0.0_id_ic_jc5.16.16.16_ie_ja_jb_jf_jg_jd7.44.44.0.0.60.0.0_je7.44.44.0.0.60.0.0_la36.16.43.0.1.1.1.1.1.1_lb_oa_os_ob31.16.43.43_oc31.16.43.43_od_oe_of14.16.43.0.0_lc_s007.61.61.0.1.93.0.500.378.1.17.1.100.3.61.500_s017.61.61.0.0.20.349.608.378.1.11.1.50.5.61.500_s027.61.61.0.0.20.346.708.410.1.11.1.100.5.61.500_s037.61.61.0.0.2.95.112.615.1.9.1.43.5.61.630_s048.43.43.43.0.40.92.222.696.1.14.1.47.0.61.469_s057.43.43.0.0.46.84.129.575.1.10.1.100.0.61.616_s067.41.41.0.0.20.346.708.411.1.11.1.100.0.61.500_s078.43.43.43.0.52.91.158.606.1.14.1.100.0.61.600_s088.43.43.43.0.59.90.210.613.1.14.1.100.0.61.600_s098.43.43.43.0.59.91.285.629.1.14.1.50.0.61.540_s108.43.43.43.0.58.91.259.639.1.14.1.51.0.61.500_s118.43.43.43.0.59.91.306.629.1.14.1.50.0.61.540_s128.43.43.43.0.59.91.338.638.1.14.1.37.0.61.500_s138.43.43.43.0.62.91.367.632.1.14.1.40.0.61.500_s147.41.41.0.1.93.0.500.379.1.17.1.100.0.61.500_s158.43.43.43.0.54.90.394.632.1.14.1.48.0.61.500_s168.43.43.43.0.57.90.423.632.1.14.1.16.0.61.500_s170.43.43.56.2.92.90.500.633.1.10.1.100.0.61.500_s180.43.43.56.0.86.90.459.590.1.10.1.100.0.61.500_s197.41.41.0.0.2.95.114.615.1.9.1.43.0.61.630_s207.53.53.0.0.5.93.238.617.1.9.1.10.0.43.630_s217.53.53.0.0.6.90.374.610.1.9.1.0.0.61.620_s227.41.41.0.0.7.90.370.611.1.9.1.4.0.61.620_s237.41.41.0.0.5.93.234.616.1.9.1.13.0.43.630_s247.41.41.0.0.20.349.608.379.1.11.1.50.0.61.500_s257.41.41.0.1.61.359.500.392.1.10.1.38.0.61.500_s267.41.41.0.0.30.349.608.386.1.11.1.50.0.61.500_s277.61.61.0.1.100.0.500.883.1.12.0.100.5.61.500_s287.43.43.0.1.100.0.500.883.1.12.0.100.0.61.500_s298.43.43.43.1.100.0.500.470.1.14.0.100.0.61.500_og_oh_oo_op_oq_or_om_on_ok_ol_oi6.16.16.43.3_oj6.16.16.43.3
【スカートのEXPORTデータ】 98**s007.61.61.0.1.93.0.500.378.1.17.1.100.3.61.500_s017.61.61.0.0.20.349.608.378.1.11.1.50.5.61.500_s027.61.61.0.0.20.346.708.410.1.11.1.100.5.61.500_s037.61.61.0.0.2.95.112.615.1.9.1.43.5.61.630_s048.43.43.43.0.40.92.222.696.1.14.1.47.0.61.469_s057.43.43.0.0.46.84.129.575.1.10.1.100.0.61.616_s067.41.41.0.0.20.346.708.411.1.11.1.100.0.61.500_s078.43.43.43.0.52.91.158.606.1.14.1.100.0.61.600_s088.43.43.43.0.59.90.210.613.1.14.1.100.0.61.600_s098.43.43.43.0.59.91.285.629.1.14.1.50.0.61.540_s108.43.43.43.0.58.91.259.639.1.14.1.51.0.61.500_s118.43.43.43.0.59.91.306.629.1.14.1.50.0.61.540_s128.43.43.43.0.59.91.338.638.1.14.1.37.0.61.500_s138.43.43.43.0.62.91.367.632.1.14.1.40.0.61.500_s147.41.41.0.1.93.0.500.379.1.17.1.100.0.61.500_s158.43.43.43.0.54.90.394.632.1.14.1.48.0.61.500_s168.43.43.43.0.57.90.423.632.1.14.1.16.0.61.500_s170.43.43.56.2.92.90.500.633.1.10.1.100.0.61.500_s180.43.43.56.0.86.90.459.590.1.10.1.100.0.61.500_s197.41.41.0.0.2.95.114.615.1.9.1.43.0.61.630_s207.53.53.0.0.5.93.238.617.1.9.1.10.0.43.630_s217.53.53.0.0.6.90.374.610.1.9.1.0.0.61.620_s227.41.41.0.0.7.90.370.611.1.9.1.4.0.61.620_s237.41.41.0.0.5.93.234.616.1.9.1.13.0.43.630_s247.41.41.0.0.20.349.608.379.1.11.1.50.0.61.500_s257.41.41.0.1.61.359.500.392.1.10.1.38.0.61.500_s267.41.41.0.0.30.349.608.386.1.11.1.50.0.61.500_s277.61.61.0.1.100.0.500.883.1.12.0.100.5.61.500_s287.43.43.0.1.100.0.500.883.1.12.0.100.0.61.500_s298.43.43.43.1.100.0.500.470.1.14.0.100.0.61.500
0 notes
Text
v1.3.0
2021.11.03
リリース
Released.
[ 日本語 ]
新機能
新コンテンツ追加 (開催されるシーズンモードからアクセス可能になります)
シーズン「驚異」開催予定 (11/10~)。
新衣装・髪型を追加しました。
新実績を追加しました。
これに伴い、達成実績数によって得られる追加所持上限も増えます。
各プラットフォームの実績を追加しました。
Steam版のオフラインモードに対応しました。
Steam経由で行われるダウンロードサイズが大きなりましたが、これは本来ゲーム起動時に自動ダウンロードされるファイルを、ゲーム本体内に含めたためです。
ユーティリティ設定に「自動再挑戦までの時間を短縮する」項目を追加しました。
Steam版に、アクティブでないとき音楽・音声再生をミュートする項目を追加しました。
アイテムフィルタのテキストインポート・エクスポートに対応しました。
アイテムごとのフィル設定を、文字データとして出力・保持・復元が可能になります。
自動周回回数指定機能を追加しました。
最大100回まで、指定された回数分だけ自動周回を行います。設定に応じて、撤退や敗北によって残り回数を無視して自動周回は停止されます。
改善
シーズン終了後、シーズンデータを開かなくても自動的にシーズン倉庫の中身がオンライン倉庫に移動するようになりました。
ロシア語プレイ時のフォントを変更しました。
設定画面において、言語選択ドロップダウンリストに、検索性向上のため国旗アイコンを追加しました。
戦闘中のフロートテキストを追加しました。
アイテム一覧の装備部位表記を、文字からアイコンに変更しました。
戦闘中の能力タブをタッチすると、能力詳細を確認できるようになりました。
v1.3.Xにおいて、情報タブのスキル・能力詳細表示に対応予定です。
複数選択したアイテムを一括解体するとき、個数とジャンク数が表示されるようになりました。
たくさんのアイテムを一度に一括解体しようとしたとき、クラッシュする可能性があります。この問題は、v1.3.1にて修正予定です。
Steam版において、Xキーを押すことでカーソルが合ったアイテムを保護できるようになりました。(即座に保護モードに切り替わります)
Steam版において、冒険準備画面でマウスホイールを使ってカメラ位置を前後に移動可能になりました。
※スマートフォン版には、v1.3.Xにてピンチイン・ピンチアウトでのカメラ位置を可能にする予定です。
調整
魔の呪い構成の刷新
クラフトテーブルの刷新(クラフトハンマーなどで作れるアイテムが変更されます)
凍結の効果を変更しました。(「攻撃回数-1」→「攻撃回数がランダムに減少」)
封印の効果を変更しました。(「スキル使用不可」→「スキルのエナジーコスト3倍」)
直接シールドを獲得するスキルは、最大シールドを無視してシールド獲得できるようになりました。
浄化の水晶などの浄化合成で、完成品を浄化可能になりました。
「遠当て」の効果は、自身を対象とした攻撃アクションにのみ適用可能になりました。(「自傷」などによる被弾時ダメージは回避できません)
ダメージや回復量などの上限値を9,999,999→99,999,999に引き上げました。
連続詠唱の効果を変更。(→「魔法スキルのエナジーコストが2倍になり、一度に2回使用する」)
シールド貫通を所持しているとき、攻撃対象の泡状構造体を無視するようになりました。
インビンシブルの効果ターンを変更。(3→2ターン)
スペルシールドのエナジーコストとクールダウンを変更。(EN20→30、CD5→1)
シールドフォースのエナジーコストとクールダウンを変更。(EN10→0、CD10→12)
封印魔法陣の威力を変更。(100→500)
エアスラッシュの威力を変更。(300→100×3回)
リジェネレーションの威力、効果ターン、クールダウンを変更。(威力20→10、5→10ターン、CD5→1)
メテオストライクの威力、エナジーコストを変更。(威力200×3回→120×5回、EN30→50)
カタストロフィの威力、エナジーコストを変更。(威力850→1300、EN40→60)
詩吟の発動確率を変更。(10→20%)
英雄の詩の効果ターン、エナジーコストを変更。(5→20ターン、EN0→30)
修正
「使徒の軍勢」と「復讐」などの一部能力を組み合わせた状態で、戦闘がフリーズ/クラッシュすることがある不具合を修正しました。
一部の能力を組み合わせると、意図せず大量のHP回復を行ってしまうことがある不具合を修正しました。
使徒の軍勢の威力が、回復率+n%効果で上昇しない不具合を修正しました。
「財宝のビーコン」のレベルは、合成によって10000まで上昇可能になりました。
※これにより、財宝の隠し場所10000Fに到達可能になります。
行動不能などの一部の効果がパワードレインの効果対象になってしまう不具合を修正しました。
撤退が発生したとき、スピードランキング成績がゲームサーバに反映されないことがある不具合を修正しました。
「冥界の裁定」効果に��わる実績が達成できないケースがある不具合を修正しました。
髪型を変更しても、ゲームを再起動すると別の髪型に変わってしまうことがある不具合を修正しました。
一部の敵モンスターが意図したグラフィックで表示されない不具合を修正しました。
一部のアイテムがダンジョンからドロップしない(他の経路からのみ入手可能だったもの)不具合を修正しました。
一部のフリーズ/クラッシュを改善。
一部のテキストを修正。
一部のグラフィックを修正。
[ English ]
New feature
New content added (will be accessible from the held season mode)Season “Wonder” will be available (10 Nov ~)
New costumes and hairstyles added.
New achievements added.
Along with this, the additional possession limit that can be obtained depending on the number of achievements will also increase.
Added achievements for each platform.
Added support for the Steam version of offline mode.
The size of the download made via Steam became larger, because the file that was originally automatically downloaded when the game was started was included in the game itself.
Added the item "Reduce the time to auto retry" to the utility settings.
Added an item to mute music / audio playback when inactive in the Steam version.
Added support for text import / export of item filters.
Fill settings for each item can be output, retained, and restored as character data.
Added the function to specify the number of auto retry.
Auto retry will be performed up to 100 times for the specified number of times. Depending on the setting, withdrawal or defeat will stop the auto retry, ignoring the remaining number of times.
Improvement
After the season is over, the contents of the season warehouse will be automatically moved to the online warehouse without opening the season data.
Changed the font when playing Russian.
On the setting screen, a national flag icon has been added to the language selection drop-down list to improve searchability.
Added float text in battle.
Changed the equipment part notation in the item list from letters to icons.
You can now see the ability details by touching the ability tab in battle.
In v1.3.X, we plan to support the detailed display of skills and abilities on the information tab.
The number and number of junks are now displayed when dismantling multiple selected items at once.
If you try to dismantle many items at once, you may crash. This issue will be fixed in v1.3.1.
In the Steam version, you can now protect the item that the cursor is on by pressing the X key. (Immediately switches to protected mode)
In the Steam version, you can now move the camera position back and forth using the mouse wheel on the adventure preparation screen.
For the smartphone version, I plan to enable pinch-in / pinch-out camera positions in v1.3.X.
Adjustment
Revamped the jinx structure.
Revamped the crafting table.
Changed the effect of freezing. ("Attack count-1"-> "Attack count decreases randomly")
Changed the effect of sealing. ("Skills cannot be used"-> "x3 Skill energy cost")
Skills that directly acquire shields can now be shielded by ignoring the maximum shield.
Now you can purify the “Completed” item by purifying mixture such as Purification crystal.
"Long-distance" effect can now only be applied to attack actions that target you. (Damage when hit by "Self-Harm" etc. cannot be avoided)
Increased the upper limit of damage and recovery amount from 9,999,999 to 99,999,999.
Changed the effect of “Continuous chant”. (→ "The energy cost of magic skills is doubled, use twice at a time")
When possessing “Shield penetration”, it now ignores “Foamy structure” being attacked.
Changed the effect turn of “Invincible”. (3 → 2 turns)
Changed “Spell shield” energy cost and cooldown. (EN20 → 30, CD5 → 1)
Changed the energy cost and cooldown of “Shield Force”. (EN10 → 0, CD10 → 12)
Changed the power of “Sealed spell”. (100 → 500)
Changed the power of "Air slash”. (300 → 100 x 3 times)
Changed the power of “Regeneration”, effect turn, and cooldown. (Power 20 → 10, 5 → 10 turns, CD 5 → 1)
Changed the power and energy cost of “Meteor Strike”. (Power 200 x 3 times → 120 x 5 times, EN30 → 50)
Changed the power and energy cost of “Catastrophe”. (Power 850 → 1300, EN40 → 60)
Changed the activation probability of “Poetry”. (10 → 20%)
Changed the effect turn and energy cost of “Hero's poem”. (5 → 20 turns, EN0 → 30)
Fix
Fixed a bug where combat could freeze/crash when some abilities such as "Army of apostles" and "Revenge" were combined.
Fixed a bug that could cause a large amount of HP recovery unintentionally when combining some abilities.
Fixed a bug where the power of “Army of apostles” did not increase with “HP recovery rate +n%” effect.
The level of "Treasure Beacon" can now be increased to 10000 by synthesis.
This will allow you to reach the treasure hiding place 10000F.
Fixed a bug where some effects such as incapacity would be targeted by “Power drain”.
Fixed a bug that speed ranking results may not be uploaded on the game server when withdrawal occurs.
Fixed a bug where some achievements related to the "Ruling of Nether" effect could not be achieved.
Fixed a bug that even if you change the hairstyle, it may change to a different hairstyle when you restart the game.
Fixed a bug where some enemy monsters wouldn't show up in the intended graphics.
Fixed a bug where some items wouldn't drop from the dungeon (those that were only available through other routes).
Improved some freezes / crashes.
Fix some text.
Fixed some graphics.
0 notes
Text
Google App ScriptをTypeScriptとClass構文で書く - 実装
https://blog.solunita.net/lean-to-develop-google-app-script-with-typescript-class-setup/ 前回は「Google App ScriptをTypeScriptとClass構文で書く - 環境導入」ということでClaspでローカル開発した場合の恩恵と、どう環境を設定したらいいかという話を書きました。
今回はES6から使えるようになったClass構文をつかって、TypeScriptでうまいことGASを書いていきます。本題です。 ちなみにこのClass構文はJSがそもそも持つprototypeの実装を簡単に書ける糖衣構文という位置付けです。
また、今回はTypeScriptに不慣れな人でもわかりやすくするためあえて型に関しての記述は少なくしました。慣れている方は型をどんどん利用するともっと書きやすくなるのでオススメです。
Claspが正式にTypeScript対応してくれて事前ビルドなくtsをそのままpushできるようになって非常に楽になりました。その事情から逆に発生してしまっている特有の落し穴についても最後のほうで触れています。
TL;DR
GitHubのイベント(PRなど)をWebhookで受けてChatworkに通知するサンプル
ES6のClassと継承使うと責務の分離と共通動作の取り回しがしやすくなる
GAS(Clasp)+TypeScript特有の落とし穴があるから気をつけろ
想定
サンプルの題材としてGoogleSpreadSheetをDB的に扱って、その情報を参照して自動化する想定をします。例として、職場では週に1度エンジニアで集まって勉強会をしています。その発表の担当が当番で回ってきます。この通知をしてみます。 また、GitHubのプルリクエストの状態に応じてChatworkに通知をしてみます。具体的にはプルリクエストの状態の変化時にWebhookが飛ぶのでそれをGAS側で受けて、Chatworkの通知にしています。
SpreadSheetとしてはこんなかんじでシート2つあります。
members: メンバーの名前、ChatworkのID、GitHubのIDを持っている名簿的なシート
repositories: リポジトリ名、リポジトリのURL、対応する通知先のChatworkルームID
ちなみに各SpreadSheetの1行目は各カラムのタイトル行とします。
最終的にやりたいことは、登録したリポジトリでプルリクエストに変化があったらChatworkの指定したルームに関係者にToをつけて通知する、という流れです。これを細かくすると、
GitHubでPRのイベントをトリガーとしてGASにWebhookを飛ばす(GitHub側で設定)
GASで受けてWebhookの内容をパースする
パースした内容にしたがって通知メッセージや通知先をGoogleSperedSheetから取得する
Chatworkに通知する
という流れになります。
開発
基底クラスのconstructor
まず基底クラスとしてGasSheetというクラスを作ってみます。 こいつの役割は、各シートを扱うため��情報の読み込みと検索、書き替えの機能を提供します。
GASのAPIでSpreadSheetのデータを範囲でとってきた場合、2次元配列になります。 したがって、例えば上の画像の名簿データは
[ ['cwID', 'name', 'githubID'], ['1111111111111', '雨宮 蓮', 'joker'], ['2222222222222', '坂本 竜司', 'skull'], ['3333333333333', '高巻 杏', 'panther'], // 中略... ]
という配列の中に各行が列ごとに値を区切られた配列として取得できます。
今回はこれだと扱いづらかったので、まずはGasSheetクラスをnewして生成したときに、 シートのデータをカラム名をキーに持つオブジェクトに変換して格納することにしました。
とりあえずnew GasSheet(sheet)な感じでシートを受けとって処理できるようにしてみます。
01_GasSheet.ts
export default class GasSheet { sheet: any // SheetClass from GAS columns: { columnNum: number; name: string }[] data: {}[] constructor(sheet) { this.sheet = sheet const rawColumns: any[] = sheet .getRange(1, 1, 1, sheet.getLastColumn()) .getValues()[0] const columns: { columnNum: number; name: string }[] = [] rawColumns.forEach((dataOfColumn, idx) => { columns.push({ columnNum: idx + 1, name: dataOfColumn }) }) const rawData: any[][] = sheet .getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn()) .getValues() const data: {}[] = [] rawData.forEach((dataOfRow, idx) => { const obj = { rowNum: idx + 1 + 1 } // 行番号は1スタート + HEADERの行 columns.forEach((column, i) => { obj[column.name] = dataOfRow[i] }) data.push(obj) }) this.columns = columns this.data = data } }
使うときはたとえば
const SHEETS = SpreadsheetApp.openById(ここにスプレッドシートのID) const MEMBERS_SHEET = SHEETS.getSheetByName(`members`) const gasSheet = new GasSheet(MEMBERS_SHEET) console.log(gasSheet.data[0]) // => { rowNum: 2, cwID:'111111111', name:'雨宮 蓮', githubID:'joker'}
みたいな感じですね。
基底クラスのメソッド
これだとまだ機能的にはオブジェクトの形になるようにラップしただけなので、メソッドから各データを取れるように実装してみましょう。
ちなみに配列、オブジェクト、コレクションを扱いやすくするためGASのライブラリとしても用意されているUnderscoreを使います。Underscoreにならって、今回は
where: 引数で指定したキーの値が合致する複数のオブジェクトを配列に入れて返すメソッド
findWhere: 引数で指定したキーの値が合致した最初のオブジェクトを返すメソッド
の2つを実装してみます。なお、本来なら見つからなかった場合など中でエラーハンドリングすべきですが、今回は省略します。
00_GasSheet.ts
const _ = Underscore.load() // Underscoreライブラリのロード export default class GasSheet { sheet: any // SheetClass from GAS columns: { columnNum: number; name: string }[] data: {}[] constructor(sheet) { // 中略(上で紹��した通り) } where(keyValue): {}[] { return _.where(this.data, keyValue) } findWhere(keyValue): {} { return _.findWhere(this.data, keyValue) } }
そして使うときは
const SHEETS = SpreadsheetApp.openById(ここにスプレッドシートのID) const MEMBERS_SHEET = SHEETS.getSheetByName(`members`) const gasSheet = new GasSheet(MEMBERS_SHEET) console.log(gasSheet.findWhere({name: '坂本 竜司'})) // => { rowNum: 3, cwID:'222222222', name:'坂本 竜司', githubID:'skull'}
みたいな感じです。
継承したクラスを作る
GasSheetクラスができたので、これを利用した別のクラスを作っていきます。既にオブジェクト指向的な言語に触れてる方にはいまさら説明の必要がないかもしれませんが、GASはいろいろな人が触っているようなので簡単に説明します。
例えばAというクラスを継承したA-1、A-2というクラスを作ったとします。AクラスがもつメソッドはA-1,A-2ともなにもせずとも使えます。ですがA-1だけのメソッドはA-2では使えません、逆もそうです。すごいざっくり言えば共通したいところは共通化すること、共通化しないところは個別でしか使えないという責務の分離の両方を実現できます。
じゃあ実際にやっていきます。
方針として、GasSheetクラスを継承させてMembersSheetクラスとRepositoriesSheetクラスを作っていきます。MembersSheetクラスは単純に任意の値から該当するデータを取得すればいいのでシンプルに継承したもの、Repositoriesクラスにはnotifyというメソッドを作って通知できるように実装します。
01_MembersSheet.ts
import GasSheet from './00_GasSheet' const SHEETS = SpreadsheetApp.openById(ここにスプレッドシートのID) const MEMBERS_SHEET = SHEETS.getSheetByName(`名簿`) export default class MembersSheet extends GasSheet { constructor() { super(MEMBERS_SHEET) } }
MembersSheetはこれだけでOKです。注目すべきは、extends GasSheetと継承しているところ、そしてconstructor()は引数を使ってないところです。 superは継承元(GasSheetクラス)の同名メソッドを呼びますので、super()に引数をわたすことで先程の例でやっています。
const MEMBERS_SHEET = SHEETS.getSheetByName(`members`) const gasSheet = new GasSheet(MEMBERS_SHEET)
と同じことをしています。
こうすると使うときは先程よりもシンプルになって
const membersSheet = new MembersSheet() console.log(gasSheet.findWhere({name: '坂本 竜司'})) // => { rowNum: 3, cwID:'222222222', name:'坂本 竜司', githubID:'skull'}
とするだけでOKになります。
次にRepositoriseSheetクラスを作ります。前半はMemberslSheetと同様です。
02_RepositoriesSheet.ts
import GasSheet from './00_GasSheet' const SHEETS = SpreadsheetApp.openById(ここにスプレッドシートのID) const REPOSITORIES_SHEET = SHEETS.getSheetByName(`repositories`) const gasSheet = new GasSheet(REPOSITORIES_SHEET) export default class RepositoriesSheet extends GasSheet { constructor() { super(REPOSITORIES_SHEET) } notify(notification) { // notification = {repo: url, to: id, message: msg } const repo = this.findBy({url: notification.repo}) const message =`[To:${notification.to}][info][title]${repo.name}[/title]${notification.message}[/info]` const client = ChatWorkClient.factory({ token: ここにCWトークン }) return client.sendMessage({ room_id: repo.room_id, body: message, }) } }
ChatWorkClientは非公式ですが、Chatwork通知用のライブラリがあるのでそれを使っています。 cw-shibuya/chatwork-client-gas: Chatwork Client for Google Apps Script
notifyメソッドでやっていることは、notificationという仮引数の名前でオブジェクトとして引数で、リポジトリのURL、 通知するメンバーのID、通知内容を取ります。
それにしたがって、メソッド内で適切な形にメッセージ内容や通知を飛ばす先のルームを設定しています。Chatworkでは[To: ID]や[title]���どの独自タグで通知先や強調表示できます。普段Chatworkを使っていないほうは適宜そんな感じか、となんとなく見てください。
ここでのポイントthis.findBy()です。findByは継承元のGasSheetクラスに実装してあるので、使うことができます。つまりリポジトリシート情報からURLが合致するリポジトリの情報を取得しています。
CWトークンはコード内にベタで書くよりはPropertiesServiceなどを環境変数的に利用するのが良いと思いますが、ここでその説明は割愛します。
Webhookをトリガーにしてクラスとそのメソッドを使う
あともう一息ですね。ここまでで必要なクラスができたので、実際にWebhookを受けてメッセージを飛ばす実装をしていきます。
今回はサンプルとしてあるプルリクエストがマージされたときに通知するとしてみましょう。
GASの仕様でWebhookとしてリクエストが飛んできたものはdoPost()関数で受けることができて、その時のbodyに入ってくる内容は引数に渡せます(今回はeとして扱う)それを一旦パースして、そのあとで使いやすくしています。
doPost.ts
import MembersSheet from './01_MembersSheet' import RepositoriesSheet from './02_RepositoriesSheet' export function doPost(e) { const contents = JSON.parse(e.postData.contents) const memberSheet = new MemberSheet() const membrer = memberSheet.findBy({github_id: contents.sender}) const repositoriesSheet = new RepositoriesSheet() const notification = { repo: contents.repositoryUrl, to: member.cw_id, message: `${contents.title}がマージされました!` } repositoriesSheet.notify(notification) }
実装的にはMemberSheetクラスをインスタンスでwebhookに載ってきた情報からGitHubのIDから通知先をメンバーを特定します。
RepositoriesSheetクラスのインスタンスを作って、先程実装したnotifyメソッドに必要な情報を引数として渡しています。
ここでマージの場合はこう、レビューの場合はこう、みたいなハンドリングを省略しましたが、もしやりたい場合は書く必要があります。文章の出しわけも同様ですね。 今実際動いているものはシートのクラスとは別に例えばGitHubEventというクラスを作ってうまいことやるようにしています。
デプロイと注意点
注意点
あとは上記のスクリプト郡をデプロイすればいいだけですが、ここでGAS+TypeScript特有の落とし穴があります。
GASでES6のimport/exportは使えない
まさかと思いますよね、マジなんです。 じゃあ上のコードでimport/exportしてるのはなんでだ、って話なんですがこれはエディタの補完を効かせたりLintのためだったりです。実際$clasp pushするとコメントアウトされます。
さらにその特殊な事情として
import { functionA, functionB } from `fileA`
みたいに書くとそのコメントアウトもまさしく働かくなってしまうのでやっちゃだめです。かなり罠です、お気をつけください。importを書くときは1行に書くのはGASでやるときは守っておいてください。
で、じゃあどうやって別ファイルに定義したものを使えるかというとGASは別ファイルに定義したものも他ファイルで使える全てがグローバルな仕様です。なので動かすだけならimportやexportはいりません。 つまりimport/exportは使えないが結果的に同じことは実現できている、という状況です。
またimportがすべてコメントアウトされるためimportによる定義もできてません。なので、通常は自由な名前で定義できるところをClass名と厳密同じ名前でimportするようにします。
GasSheet.ts(export側)
export class GasSheet { // 略... }
import側
// ◯ 良い import GasSheet from './GasSheet' // × ダメな例(export時の名前と違う import MySheet from 'GasSheet`
さらにこの仕様につながって、どうやらファイルはファイル名順に読み込まれ、読み込み前のものは使えない、という仕様があるっぽいです(要出展)。 なのでこのご時世としてはやりたくないですが、01_とか読み込まれて欲しい順でファイル名をつけます。
もう1つあります。直接使われる関数(e.g. doPost())はexport defaultしちゃうと上手く動きません。exportがある分には大丈夫ですがexport defaultとして宣言してはだめです。そういうこともあって先程のdoPostは
export function doPost(e) { // 中略 }
として定義しています。
デプロイと本番化
ClaspとGASの連携の話になりますが、通常Clasp経由でGASのコードを更新するには
$ clasp push
とします。これでGASのスクリプトエディタで開くコードが更新されます。もし開いたままだったらリロードしてください。
ちなみにClaspがTypeScript対応したことによる事前にtscなどは必要ありません。pushすると.tsファイルは.gsにトランスパイルされてアップロードされます。
ここでの注意点はなんか上手く反映されないときがあるので、リロードしたあと一度スクリプトエディタ上で保存すると上手くいくことがあるようです。このへんの挙動は謎です。
単純にGASにコードを追いて手動実行したりする場合はこれだけでいいんですが、Webhookを受けとるような場合ではWebアプリケーションとして公開する必要があります。また、公開するには版(バージョン)としてデプロイされていることが必要です。このため
$ clasp deploy
を実行します。この時引数をつけないで実行すると新しい版としてデプロイされます。
あとはGASのスクリプトエディタのほうで、公開 > Webアプリケーションとして導入とします。 この時に表示されるURLがWebhookを受けるURLなのでコピーしておいてGitHub側に設定します。 プロジェクトバージョンは先程デプロイしたときに発行されたバージョンを指定します。 他の権限の設定はやることによって最適なものが変わるので、設定します。
最後に
今実際に僕が動かしてるものはもうすこし多様性を持たせた結果、サンプルで扱うにはデカすぎるようになってしまったので公開して紹介が難しく残念です。(もし改変して公開できる余裕ができたら是非やりたい)
あと次回、もし続けばテストについて書けたらいいなあと思っています。
GASってVBA的に捉えてる層もいれば、JS���で書けるWebアプリとか自動化できるおもちゃみたいに考えてる層もいます。 この記事はそんな隔絶した層のちょうど溝を埋めるような記事として読まれたらいいなあ、と思っています。
from Trial and Spiral https://blog.solunita.net/lean-to-develop-google-app-script-with-typescript-class-implement/
0 notes
Text
ゴシックなドレス2
フリル付きのシャツが追加されたので���メイクしました。 胸のサイズに合わせて調整が必要ないので使い勝手がよくなったと思います。
【EXPORTデータ】 98**ia_if_ib16.55.55.55.0.0.0.1.0.0.0.0.0.0.2.0.0.0.0.1.0.0.0.0.0.0.0_id3.60.60.60.0.0.1.3.0.0.3.0.0.2.0.0.0.0.1.0.0.0.0.0_ic31.60.55.55.2_jc_ie_ja9.55.61.55_jb9.55.61.55_jf_jg_jd7.60.60.50.0.60.0.0_je7.60.60.50.0.60.0.0_la3.55.60.0.1.1.1.1.1.1_lb_oa_os_ob_oc_od_oe_of22.59.0.0.0_lc_m004.55.0.0.0.2.25.54.600.760.4.61.25.500.0.0.1_s0016.60.60.60.2.60.65.710.991.1.6.0.60.2.61.500_s0116.60.60.60.1.60.65.710.990.1.6.0.60.2.61.500_s022.60.60.45.2.0.0.500.1000.1.11.0.0.5.61.500_s032.60.60.45.0.5.15.505.968.1.11.0.0.4.61.500_s042.60.60.45.0.25.10.507.931.1.11.0.0.4.61.500_og24.60.60.55_oh24.60.60.55_oo_op_oq_or_om8.60.58.0_on8.60.58.0_ok_ol_oi_oj
0 notes
Text
シングルライダース
※対応するキャラごとに胴の長さを書いていますが、胸の幅の影響もあるので調整が必要になるかと思います。 ※例によってベルトパーツ��最前面に配置して、ポケットに手を入れられるようにして��ります、これは最前面で無くしてもOKです。
【EXPORTデータ】 左から 私のキャラ用(胴の長さ15) 85**ia_if9.60.55.59.1.20.60.60.20.60.60.1.1.1_m1083.60.56.61.1.1.145.90.125.605.1.61.40.500.0.2.0_m1183.60.56.61.2.1.145.90.100.605.1.61.60.500.0.2.0_m1283.57.56.61.0.1.130.90.101.598.2.61.5.500.0.2.0_m1386.61.56.61.0.1.35.343.196.690.4.61.100.390.0.3.0_m1486.61.56.61.0.1.20.162.300.733.4.61.193.440.0.3.0_m1586.60.56.61.0.1.36.345.206.602.0.61.288.410.0.2.0_m1686.60.56.61.0.1.20.162.300.733.0.61.193.440.0.3.0_m1771.61.43.43.1.1.10.355.100.712.4.61.70.500.0.2.0_m1871.60.43.43.1.1.14.355.106.712.0.61.70.500.0.2.0_m1937.61.18.42.2.1.-12.0.134.712.5.61.-12.500.1.2.0_m2037.57.18.42.2.1.-15.0.134.712.5.61.-15.500.1.2.0_n00_s0017.60.60.60.0.35.84.615.566.3.9.1.69.0.61.550_s010.60.60.56.0.15.80.653.576.3.11.1.5.4.61.500
島風用(胴の長さ25) 86**ia_if9.60.55.59.1.20.60.60.20.60.60.1.1.1.0.0.0.0.1_m1083.60.56.61.1.1.145.90.125.605.1.61.40.500.0.2.0_m1183.60.56.61.2.1.148.90.100.602.1.61.60.500.0.2.0_m1283.57.56.61.0.1.135.90.101.596.2.61.5.500.0.2.0_m1386.61.56.61.0.1.35.343.196.690.4.61.100.390.0.3.0_m1486.61.56.61.0.1.20.162.300.733.4.61.193.440.0.3.0_m1586.60.56.61.0.1.36.345.206.601.0.61.297.410.0.2.0_m1686.60.56.61.0.1.20.162.300.733.0.61.193.440.0.3.0_m1771.61.43.43.1.1.10.355.100.712.4.61.70.500.0.2.0_m1871.60.43.43.1.1.14.355.106.712.0.61.70.500.0.2.0_m1937.61.18.42.2.1.-12.0.134.712.5.61.-12.500.1.2.0_m2037.57.18.42.2.1.-15.0.134.712.5.61.-15.500.1.2.0_n00_s0017.60.60.60.0.35.84.615.566.3.9.1.69.0.61.550_s010.60.60.56.0.15.80.653.576.3.11.1.5.4.61.500
けいおん!キャラ用(胴の長さ30) 86**ia_if9.60.55.59.1.20.60.60.20.60.60.1.1.1.0.0.0.0.1_m1083.60.56.61.1.1.145.90.120.599.1.61.40.500.0.2.0_m1183.60.56.61.2.1.150.90.100.601.1.61.60.500.0.2.0_m1283.57.56.61.0.1.135.90.101.595.2.61.5.500.0.2.0_m1386.61.56.61.0.1.29.343.196.690.4.61.99.390.0.3.0_m1486.61.56.61.0.1.20.162.300.733.4.61.194.440.0.3.0_m1586.60.56.61.0.1.36.345.206.599.0.61.295.410.0.2.0_m1686.60.56.61.0.1.20.162.300.733.0.61.193.440.0.3.0_m1771.61.43.43.1.1.10.355.100.712.4.61.70.500.0.2.0_m1871.60.43.43.1.1.14.355.106.712.0.61.70.500.0.2.0_m1937.61.18.42.2.1.-12.0.134.712.5.61.-12.500.1.2.0_m2037.57.18.42.2.1.-15.0.134.712.5.61.-15.500.1.2.0_n00_s0017.60.60.60.0.35.84.615.566.3.9.1.69.0.61.550_s010.60.60.56.0.15.80.653.576.3.11.1.5.4.61.500
ラブライブ!キャラ用(胴の長さ40) 86**ia_if9.60.55.59.1.20.60.60.20.60.60.1.1.1.0.0.0.0.1_m1083.60.56.61.1.1.147.90.120.596.1.61.40.500.0.2.0_m1183.60.56.61.2.1.152.90.100.599.1.61.60.500.0.2.0_m1283.57.56.61.0.1.138.90.101.593.2.61.5.500.0.2.0_m1386.61.56.61.0.1.29.343.196.690.4.61.99.390.0.3.0_m1486.61.56.61.0.1.20.162.300.733.4.61.194.440.0.3.0_m1586.60.56.61.0.1.33.345.206.597.0.61.304.410.0.2.0_m1686.60.56.61.0.1.20.162.300.733.0.61.193.440.0.3.0_m1771.61.43.43.1.1.10.355.100.712.4.61.70.500.0.2.0_m1871.60.43.43.1.1.14.355.106.712.0.61.70.500.0.2.0_m1937.61.18.42.2.1.-12.0.134.712.5.61.-12.500.1.2.0_m2037.57.18.42.2.1.-15.0.134.712.5.61.-15.500.1.2.0_n00_s0017.60.60.60.0.35.84.615.566.3.9.1.69.0.61.550_s010.60.60.56.0.15.80.653.576.3.11.1.5.4.61.500
0 notes
Text
チェスターコート
使用上の注意 ※服に使用する髪飾りパーツは11番以降に入っています。 ※体型によって着崩れが生じた場合は修正が必要となります。 ※特にテールの部分は身長や胴の長さの値による影響が出やすいようです。デフォルトキャラの島風くらい小さいと確実に崩れます。 ※ベルトパーツ1番2番を最前面に配置してあるのでポケットに手を入れるポーズが可能です。
【EXPORTデータ】 85**ia_if10.51.51.0.1.5.42.0.5.42.0.1.1.1_m1065.61.61.61.1.1.500.180.0.260.1.61.350.500.0.4.0_m1165.54.54.54.1.1.500.180.0.260.0.61.350.500.0.4.0_m1286.61.56.61.0.1.45.343.215.558.1.61.670.400.0.3.0_m1386.61.56.61.0.1.70.340.365.433.1.61.260.385.0.3.0_m1486.61.56.61.0.1.50.340.400.586.1.61.670.450.0.3.0_m1586.51.56.61.0.1.48.343.215.558.0.61.670.400.0.3.0_m1686.51.56.61.0.1.70.340.365.434.0.61.258.385.0.3.0_m1786.51.56.61.0.1.50.340.400.586.0.61.670.450.0.3.0_m1888.61.56.61.0.2.3.239.220.723.5.61.10.700.0.2.0_m1988.61.56.61.0.2.30.302.205.674.1.61.40.200.0.2.0_m2088.51.56.61.0.2.3.239.215.723.0.61.10.700.0.2.0_m2188.51.56.61.0.2.30.302.199.674.0.61.40.200.0.2.0_n00_s0017.51.51.51.0.60.79.644.451.3.9.0.100.0.61.500_s010.51.51.56.0.22.66.690.474.3.11.0.22.4.61.500
0 notes
Text
チェスターコートとバニーガール
使用上の注意 ※服に使用する髪飾りパーツは11番以降に入っています。 ※体型によって着崩れが生じた場合は修正が必要となります。 ※特にテールの部分は身長や胴の長さの値による影響が出やすいようです。デフォルトキャラの島風くらい小さいと確実に崩れます。 ※ベルトパーツ1番2番を最前面に配置してあるのでポケットに手を入れるポーズが可能です。
【EXPORTデータ】 85**pb3.454956.55.0_pc_pd_pe_ia_if_ib0.55.55.43.0.0.0.4.0.55.55.0.55.55.0_id15.51.51.42.1.1.1.5.55.55.5.55.55.3_ic_jc5.53.53.53_ie_ja_jb_jf_jg_jd8.60.26.26.12.60.54.51_je8.60.26.26.12.60.54.51_ka25.60.55.55.0_kb_kc_kd_ke_kf_la11.59.3.0.1_lb_oa_os_ob_oc_od_oe_of16.3.11.18.1_lc_m1065.61.61.61.1.1.500.180.0.260.1.61.350.500.0.4.0_m1165.54.54.54.1.1.500.180.0.260.0.61.350.500.0.4.0_m1288.61.56.61.0.2.3.239.220.723.5.61.10.700.0.2.0_m1388.61.56.61.0.2.30.302.205.674.1.61.40.200.0.2.0_m1488.51.56.61.0.2.3.239.215.723.0.61.10.700.0.2.0_m1588.51.56.61.0.2.30.302.199.674.0.61.40.200.0.2.0_n00_s0017.51.51.51.0.60.79.644.451.3.9.0.100.0.61.500_s010.51.51.56.0.22.66.690.474.3.11.0.22.4.61.500_s0217.61.61.61.0.19.78.700.806.1.5.1.100.2.61.600_s0317.51.51.51.0.28.90.655.799.1.5.0.250.1.61.675_s0417.51.51.51.0.19.78.698.808.1.5.1.100.0.61.600
0 notes
Text
ファー付コート
使用上の注意 ※服に使用する髪飾りパーツは11番以降に入っています。 ※体型によって着崩れが生じた場合は修正が必要となります。 ※特にテールの部分は身長や胴の長さの値による影響が出やすいようです。デフォルトキャラの島風くらい小さいと確実に崩れます。 ※ベルトパーツ1番2番を最前面に配置してあるのでポケットに手を入れるポーズが可能です。
【EXPORTデータ】 85**ia_if_ib2.59.54.5.2.3.0.1.30.54.6.30.54.6.1_id6.55.43.6.0.0.1.1.0.0.1.0.0.17_m1065.61.61.61.1.1.500.180.0.260.1.61.350.500.0.4.0_m1165.60.60.60.1.1.500.180.0.260.0.61.350.500.0.4.0_m1237.54.18.42.1.1.9.0.188.718.5.61.9.500.0.3.1_m1337.54.18.42.1.1.9.0.188.655.5.61.9.500.0.3.1_n00_s0017.59.59.59.0.60.79.644.451.3.9.0.100.0.61.500_s010.59.59.56.0.22.66.690.474.3.11.0.22.4.61.500_s0217.61.61.61.0.19.78.700.806.1.5.1.100.2.61.600_s0317.59.59.59.0.28.90.655.799.1.5.0.250.1.61.675_s0417.59.59.59.0.19.78.698.808.1.5.1.100.0.61.600
0 notes
Text
ミリタリーっぽいコート
寒い時期ですが、着せ替えにはコートが無いので作ってみました。 ウエストが窄まらない服が欲しかったことや、スカートでも着られるよう、Aラインにしています。 私のキャラなら1番のスカートやタイトスカートが限度ですが。デフォルトキャラ位の腰の幅なら大きく広がらないスカートなら着られると思います。 本当はM-51(モッズコート)っぽくしたかったのですが、部品点数が多くならないよう今の形で仕上げました。
使用上の注意 ※服に使用する髪飾りパーツは11番以降に入っています。 ※体型によって着崩れが生じた場合は修正が必要となります。 ※特にテールの部分は身長や胴の長さの値による影響が出やすいようです。デフォルトキャラの島風くらい小さいと確実に崩れます。 ※ベルトパーツ1番2番を最前面に配置してあるのでポケットに手を入れるポーズが可能です。
【EXPORTデータ】 85**ia_if_ib7.37.37.37.2.3.0.1.40.37.37.40.37.37.1_id1.53.53.53.0.0.1.1.0.0.1.0.0.3_m1165.61.61.61.1.1.500.180.0.260.1.61.350.500.0.4.0_m1265.38.38.38.1.1.500.180.0.260.0.61.350.500.0.4.0_m1361.37.37.37.1.1.100.0.0.927.1.61.75.500.0.3.0_m1461.38.38.38.1.1.80.0.0.920.0.61.75.500.0.3.0_n00_s0017.37.37.37.0.60.79.644.451.3.9.0.100.0.61.500_s010.37.37.56.0.22.66.690.474.3.11.0.22.4.61.500_s0217.61.61.61.0.19.78.700.806.1.5.1.100.2.61.600_s0317.37.37.37.0.28.90.655.799.1.5.0.250.1.61.675_s0417.37.37.37.0.19.78.698.808.1.5.1.100.0.61.600_s0517.37.37.38.0.10.0.640.890.1.9.0.0.0.61.500
0 notes
Text
巫女装束2019
新年も近いので、フライングぎみかな?とも思いながら巫女装束を作ってみました。 ちょっと部品点数が多く、使用上の注意が多くなってしまいましたが、年末年始に使っていただけると嬉しいです。
使用上の注意 ※服に使用する髪飾りパーツは11番以降に入っています。 ※体型によって着崩れが生じた場合は修正が必要となります。特に髪飾りの11番、17番18番は影響が出やすいかと思います。 ※また、ベルトパーツを服の上に重ねると主線がおかしくなる不具合があるようですが、ウエストを一度変更すると正常な表示になるので、お腹を一度キュッとして着つけてください(比喩)
【EXPORTデータ】 85**ia_if_ib_id0.55.55.55.0.0.1.35.55.6.35.55.6.1_ic_jc_ie_ja13.55.19.55_jb13.55.19.55_jf_jg_jd2.51.3.57.0.60.0.0_je2.51.3.57.0.60.0.0_m1062.57.57.57.1.1.85.0.0.908.1.61.50.500.0.3.0_m1183.6.56.61.2.1.50.118.87.707.1.61.100.500.0.2.0_m1283.55.56.61.2.1.50.118.99.705.1.61.100.500.0.2.0_m1383.6.56.61.1.1.100.121.8.670.1.61.100.500.0.2.0_m1483.55.56.61.1.1.100.121.10.665.1.61.100.500.0.2.0_m1548.6.6.43.1.1.35.0.0.552.3.61.50.500.0.2.0_m1683.61.56.61.0.1.250.90.193.581.1.61.150.340.0.2.0_m1783.55.56.61.0.1.249.90.193.581.0.61.149.340.0.2.0_m1825.6.43.0.1.1.0.180.0.617.5.61.0.500.0.2.0_m1916.6.16.42.1.1.0.180.0.620.5.61.0.500.0.2.0_m2081.6.56.61.0.1.-10.45.188.702.5.61.-10.500.0.2.0_n00_s0013.7.7.7.1.30.90.500.435.0.4.0.100.3.61.500_s0117.6.6.6.0.49.91.442.515.0.5.0.100.3.61.455_s0217.6.6.6.0.48.93.355.512.0.5.0.100.3.61.450_s0317.6.6.6.0.50.95.270.530.0.5.0.100.2.61.380_s040.6.55.56.1.38.0.500.968.1.8.0.100.4.61.500_s0516.55.55.55.0.45.60.810.810.1.4.0.45.3.61.500_og_oh_oo_op_oq_or_om_on_ok_ol_oi_oj
0 notes
Text
ゲームイベントガール(何?)
以前にムラシマスレに張ったものです。現在の環境に合わせて部品点数を減らしました。 ゲームイベントのコンパニオンをイメージして作り始めたのですが、最終的によくわか��ない出来に。 しかし割とお気に入りの衣装です。
使用上の注意 ※DL版のver85では、ウエスト辺りにベルトバーツを使用すると主線が無い状態になることがありますが、ウエストサイズを一度変更すると正常な表示に戻ります。ですので、ウエストを一度キュッとして着つけてください。(比喩) ※改造、改良は自由にやってください。
【EXPORTデータ】 85**ia_if_ib6.55.21.55.0.0.0.1.14.21.55.14.21.55.1_id_ic_jc_ie_ja32.55.3.55_jb32.55.3.55_jf_jg_jd6.3.3.50.0.60.0.0_je6.3.3.50.0.60.0.0_ka22.21.31.31.0_kb_kc_kd_ke_kf_la33.21.3.43.1_lb_oa_os_ob_oc_od_oe_of1.3.3.55.0_lc_s0016.55.55.55.0.30.60.720.910.0.4.0.30.4.61.500_s010.21.55.43.2.50.0.500.1000.1.0.0.50.2.61.500_og_oh_oo_op_oq_or_om_on_ok_ol_oi_oj
0 notes
Text
キャットスーツ
以前にムラシマスレに投稿したものを現環境に合わせました。
使用上の注意 ※顔の模様も使用しています。 ※目の部分の色、大きさはキャラに合わせて変えてください。 ※データとしては後ろ髪、もみあげを表示していませんが、画像のように出してもOKです。 ※改造、改良は自由にやってください。
【EXPORTデータ】 85**ea39.2B3544.2B3544.56.0.0_ec_ed_ef_eg_t0049.24.24.1.100.100.0.500.680.1.500_t013.61.2.0.100.40.0.500.480.1.500_t023.24.55.0.100.40.0.500.485.1.500_t030.61.61.0.25.20.360.620.470.0.500_t040.F9DCC3.F9DCC3.0.23.18.0.380.470.0.500_pb0.2B3544.2B3544.0_pc_pd_pe0.2B3544.2B3544.0.1.1.40_ia_if_ib_id2.24.24.24.0.0.0.0.0.0.0.0.0.16_ic_jc_ie_ja32.24.59.55_jb32.24.59.55_jf_jg_jd7.60.60.50.0.60.0.0_je7.60.60.50.0.60.0.0_ka25.24.55.55.0_kb_kc_kd_ke_kf_la_lb_oa_os_ob_oc_od3.24.57.0.0.0_oe_of_lc_m00_n00_s00_og_oh_oo_op_oq_or_om_on_ok_ol_oi0.24.24.0.3_oj0.24.24.0.3
0 notes
Text
ゴシックロリータなドレス
結構昔にムラシマスレに貼ったものを現環境でリメイク、部品点数が減りました。
使用上の注意 ※胸回りのフリルやリボンは体格によって修正が必要になるかもしれません。 ※改造、改良は自由にやってください。
【EXPORTデータ】 85**ia_if_ib0.60.55.0.0.0.0.3.3.42.55.3.42.55.0_id3.55.55.55.0.0.1.0.42.42.0.42.42.2_ic31.60.55.55.1_jc_ie_ja9.55.61.55_jb9.55.61.55_jf_jg_jd7.60.60.50.0.60.0.0_je7.60.60.50.0.60.0.0_la3.55.60.0.1_lb_oa_os_ob_oc_od_oe_of_lc_m004.55.3.0.0.2.25.54.600.760.4.61.25.500.0.0.1_n00_s0011.55.55.55.2.16.90.500.672.2.2.0.25.3.61.500_s0111.55.55.55.2.15.90.500.962.1.2.0.30.3.61.500_s0216.60.60.60.2.60.65.710.991.1.6.0.60.2.61.500_s0316.60.60.60.1.60.65.710.990.1.6.0.60.2.61.500_s042.60.60.45.2.0.0.500.1000.1.11.0.0.5.61.500_s052.60.60.45.0.5.15.505.968.1.11.0.0.4.61.500_s062.60.60.45.0.25.10.507.931.1.11.0.0.4.61.500_s0713.55.55.55.2.35.0.500.740.2.3.0.55.2.61.500_og24.60.60.55_oh24.60.60.55_oo_op_oq_or_om8.60.58.0_on8.60.58.0_ok_ol_oi_oj
0 notes
Text
疑似ジャケット
髪飾りパーツでラペルを作って疑似的にジャケットを作りました。 丈の長さを変更できるので燕尾服などに使用しています。 前開けのものは胸の大きさが8を超えると服の開き具合に干渉するため、専用に作る必要があります。 とりあえず、9までは対応するものを作成しました。
使用上の注意 ※服に使用した髪飾りパーツは11番以降に入っています。 ※使用する際には色替え、丈、袖の変更等の改造は自由にしてください。
【EXPORTデータ】 左から 1(前閉じ) 85**ia_if10.57.57.44.1.8.42.0.8.42.0.0.0.2_m1088.61.56.61.0.2.10.242.220.723.5.61.10.700.0.2.0_m1188.61.56.61.0.2.40.319.170.672.1.61.40.200.0.2.0_m1288.57.56.61.0.2.10.242.215.723.0.61.10.700.0.2.0_m1388.57.56.61.0.2.40.319.165.672.0.61.40.200.0.2.0_n00
2(前開け、胸の大きさ7まで) 85**ia_if10.57.57.44.1.8.42.0.8.42.0.1.1.2_m1088.61.56.61.0.2.3.239.220.723.5.61.10.700.0.2.0_m1188.61.56.61.0.2.30.302.205.674.1.61.40.200.0.2.0_m1288.57.56.61.0.2.3.239.215.723.0.61.10.700.0.2.0_m1388.57.56.61.0.2.30.302.199.674.0.61.40.200.0.2.0_n00
3(前開け、胸の大きさ8用) 85**ia_if10.57.57.44.1.8.42.0.8.42.0.1.1.2_m1088.61.56.61.0.2.3.239.220.723.5.61.10.700.0.2.0_m1188.61.56.61.0.2.30.298.214.674.1.61.40.200.0.2.0_m1288.57.56.61.0.2.3.239.215.723.0.61.10.700.0.2.0_m1388.57.56.61.0.2.30.298.209.674.0.61.40.200.0.2.0_n00
4(前開け、胸の大きさ9用) 85**ia_if10.57.57.44.1.8.42.0.8.42.0.1.1.2_m1088.61.56.61.0.2.3.239.220.723.5.61.10.700.0.2.0_m1188.61.56.61.0.2.30.292.231.671.3.61.40.200.0.2.0_m1288.57.56.61.0.2.3.239.215.723.0.61.10.700.0.2.0_m1388.57.56.61.0.2.30.292.224.671.1.57.40.200.0.2.0_n00
0 notes
Text
ブギーポップ(ブギーポップは笑わない)
※範囲外の数値を使っています
【EXPORTデータ】 88**aa6.0.0.0.50.6.0.0.0.50_ab_ac_ba50_bb5.1_bc543.500.8.0.1.0_bd5_be180_bf_bg_bh1_ca68.17.30.70.40.25.46.0.48.0.100.70_da1.0.0.100_db_dd9.3.45.15.10.55_dh1.30.50.50.0_di4_qa_qb_dc0.0.1.1.1.0_eh4.523B37.100_ea10.523B37.523B37.56.0.0_ec_ed7.68.1.1.523B37.56_ef_eg_r0240.523B37.523B37.56.0.2.20.0.7.580.530.0.1.490.0_r0319.523B37.523B37.42.0.2.37.100.193.415.602.0.4.529.0_r0519.523B37.523B37.42.0.2.20.82.191.417.569.0.4.529.0_fa19.75.27.29.-20.60.56_fb5_fh8_fc67.20.55.67.20.55.30.61.61.50.50.46_fj3.0.0_fd1.0.10.523B37.56_fe40.55_ff0000000000_fg11.22.56.0.0.1.0.0_fi_pa0.523B37.0.0.40.50.88.83.0.0_t003.F3BD95.0.0.100.100.317.546.730.1.500_t0114.61.0.0.3.3.118.474.494.1.500_t0222.61.61.0.0.1.0.484.381.1.678_pb_pc_pd_pe_ga0_gb1.0.10.40.65_gc1.0_ge0000000000_gh0_gf_gg_gd000000_ha90.90_hb50.1.50.100.100.50.50_hc0.50.30.0.50.30_hd0.1.50.50.2.60.50.50_ad0.0.0.0.0.0.0.0.0.0_ae1.0.0.0.0_ia2.394961.394961.394961.1.8.0.0.8.0.0.6.43.43.43.1_if5.49.49.0.1.0.0.0.0.0.0.0.0.3.0.0.0.0.1_ib0.55.55.0.0.0.0.1.1.0.0.1.0.0.3.0.0.0.0.1_id_ic_jc_ie_ja35.55.55.0_jb35.55.55.0_jf_jg_jd17.53.53.53.0.60.0.0_je17.53.53.53.0.60.0.0_ka6.60.60.60.0_kb6.60.60.60_kc_kd_ke_kf_kg_la_lb_oa_os_ob_oc_od_oe_of_lc_m0048.97524A.97524A.0.1.1.23.0.0.731.4.61.23.500.0.2.1_m0186.234434.0.0.1.1.-13.324.312.649.0.61.-1.295.0.2.0_m0286.D2C19A.0.0.1.1.-13.214.269.649.0.61.-1.705.0.2.0_m0386.234434.0.0.1.1.-18.0.312.659.0.61.-20.500.0.2.0_m0486.D2C19A.0.0.1.1.-18.0.271.659.0.61.-20.500.0.2.0_m0586.38312D.0.0.1.1.-17.0.291.650.5.60.-13.500.0.2.0_m063.1F1F33.0.0.1.1.44.0.2.504.3.61.0.500.0.0.1_m0790.61.0.0.1.3.66.132.0.684.4.61.66.500.0.0.0_m0827.61.0.0.1.3.66.180.0.691.5.61.30.500.0.0.0_m0937.61.0.0.2.3.185.4.168.1037.2.61.100.500.0.0.0_m1073.61.0.0.0.3.150.88.530.895.2.61.95.440.0.0.0_m1190.393A52.0.0.1.3.0.88.169.1101.3.61.58.500.0.0.0_m1237.393A52.0.0.2.3.185.4.168.1037.0.61.100.500.0.0.0_m1373.393A52.0.0.0.3.150.88.530.895.0.61.95.440.0.0.0_m1490.393A52.0.0.1.3.66.132.0.684.0.61.66.500.0.0.0_m1527.393A52.0.0.1.3.66.180.0.691.0.61.30.500.0.0.0_m160.393A52.393A52.0.0.0.40.74.279.801.5.61.40.500.0.0.0_m170.393A52.393A52.0.0.3.40.74.279.801.0.61.40.500.0.0.0_m1837.C1A758.0.0.1.3.50.50.0.766.2.61.50.500.0.0.0_m1973.816C35.0.0.1.3.0.249.37.738.0.61.19.500.0.0.0_m2040.EFD892.0.0.2.3.10.261.1.773.0.61.10.500.0.0.0_m2137.C1A758.0.0.1.3.6.50.0.769.5.61.6.500.0.0.0_m2237.C1A758.0.0.2.3.0.40.381.740.5.61.0.530.0.0.0_m2337.C1A758.0.0.1.3.0.40.381.714.5.61.0.530.0.0.0_m2437.C1A758.0.0.1.3.0.40.398.810.5.61.0.530.0.0.0_m2540.EFD892.0.0.2.3.-17.274.385.744.0.61.-17.485.0.0.0_m2640.EFD892.0.0.1.3.-17.274.402.814.0.61.-17.485.0.0.0_m2740.EFD892.0.0.1.3.-17.312.385.716.0.61.-17.485.0.0.0_m2840.EFD892.0.0.2.3.-13.243.0.771.0.61.-13.485.0.0.0_m293.1F1F33.0.0.1.1.34.183.9.956.3.61.34.500.0.3.1_m300.393A52.393A52.0.1.1.46.0.0.740.5.61.46.500.0.2.0_m3173.61.0.0.0.1.840.271.310.275.2.61.390.520.0.2.0_m3269.393A52.393A52.393A52.1.1.175.180.0.-118.5.61.90.500.0.2.0_m333.393A52.0.0.1.1.111.0.0.-135.2.61.100.500.0.2.1_m3473.393A52.0.0.0.1.840.271.310.275.1.393A52.390.520.0.2.0_m35101.1E1E32.0.0.2.1.100.103.338.-64.0.61.151.513.0.2.0_m3637.312925.0.0.1.1.170.164.73.41.1.61.169.500.0.2.0_m3737.61.0.0.1.1.170.164.176.46.0.61.148.500.0.2.0_m3837.393A52.0.0.1.1.170.164.186.46.0.61.148.500.0.2.0_m3969.393A52.393A52.393A52.1.1.175.180.0.-118.0.61.90.500.0.2.0_m4052.1F1F33.1F1F33.0.1.1.150.77.102.-59.0.61.170.500.0.2.0_m410.393A52.393A52.0.1.1.46.0.0.740.0.61.46.500.0.2.0_m4286.393A52.0.0.1.1.120.180.0.548.0.61.500.500.0.2.0_m4373.1E1E32.0.0.1.1.100.183.203.723.0.61.100.660.0.2.0_m44101.1E1E32.0.0.1.1.75.300.27.730.0.61.100.631.0.2.0_m4582.61.0.0.1.1.670.90.0.431.2.61.100.500.0.2.0_m4682.312925.0.0.1.1.673.90.0.429.1.312925.100.500.0.2.0_m4786.1A1614.0.0.1.1.10.177.0.733.0.61.0.468.0.2.0_m4886.1A1614.0.0.1.1.10.201.0.726.0.61.0.616.0.2.0_m4982.1A1614.0.0.1.1.44.55.93.-47.1.61.155.382.0.2.0_m5082.1A1614.0.0.1.1.47.55.93.-47.0.61.155.382.0.2.0_m5186.393A52.0.0.1.1.40.0.158.111.0.61.40.500.0.2.0_m52101.1E1E32.0.0.1.1.100.32.604.214.0.61.460.690.0.2.0_m53101.1E1E32.0.0.1.1.98.157.625.0.0.61.151.410.0.2.0_m54101.1E1E32.0.0.1.1.203.265.324.-77.0.61.196.590.0.2.0_m55101.1E1E32.0.0.1.1.161.236.649.-122.0.61.100.690.0.2.0_m5682.61.0.0.1.1.30.0.0.736.3.61.90.500.0.2.0_m5787.61.0.0.0.1.0.0.122.736.5.61.-13.500.0.2.0_m5882.816C35.0.0.1.1.30.0.0.736.0.61.90.500.0.2.0_m5987.816C35.0.0.0.1.0.0.118.736.0.61.-14.500.0.2.0_n00_s0017.A7AAB5.A7AAB5.A7AAB5.1.5.85.746.688.1.6.0.75.3.61.690_s0117.A7AAB5.A7AAB5.A7AAB5.1.10.84.665.668.1.6.0.75.3.61.540_s0217.A7AAB5.A7AAB5.A7AAB5.1.11.87.582.659.1.6.0.85.2.61.480_s0317.A7AAB5.A7AAB5.A7AAB5.1.11.89.499.657.1.6.0.90.2.61.480_s0417.A7AAB5.A7AAB5.A7AAB5.1.12.91.411.665.1.6.0.85.2.61.420_s0517.A7AAB5.A7AAB5.A7AAB5.1.8.93.320.674.1.6.0.90.2.61.355_s0617.A7AAB5.A7AAB5.A7AAB5.1.5.95.242.695.1.6.0.85.2.61.335_s070.A7AAB5.A7AAB5.56.1.30.84.700.723.1.11.0.30.0.61.500_s080.A7AAB5.A7AAB5.56.1.30.90.553.723.1.11.0.30.0.61.500_s090.A7AAB5.A7AAB5.56.1.21.91.464.724.1.11.0.21.0.61.500_s100.A7AAB5.A7AAB5.56.1.75.185.351.631.1.11.0.75.0.61.500_s117.61.61.0.1.100.0.500.785.1.12.0.100.4.61.500_s127.A7AAB5.A7AAB5.0.1.100.0.500.792.1.12.0.100.0.61.500_og_oh_oo_op_oq_or_om_on_ok_ol_oi_oj_f00
0 notes
Text
剣道着
使用上の注意 ※服に使用した髪飾りパ���ツは11番以降に入っています。 ※体格によって襟回りを直す必要があります。 ※改造、改良は自由にやってください。
【EXPORTデータ】 85**ia_if_ib_id0.23.23.23.0.0.1.38.23.23.38.23.23.2_ic_jc_ie_ja_jb_jf_jg_jd_je_m1083.23.56.61.2.1.70.115.110.700.1.61.140.425.0.2.0_m1183.23.56.61.1.1.210.115.-45.620.2.61.135.420.0.2.0_m1283.23.56.61.1.1.210.115.-45.620.0.61.135.420.0.2.0_m1362.24.24.24.1.1.80.0.0.930.1.61.10.500.0.3.0_m1478.23.2.43.2.1.30.0.140.595.3.61.10.500.0.2.0_m154.23.2.0.2.2.5.50.155.597.5.61.5.500.0.2.1_n00_s0013.60.60.60.1.30.90.500.435.0.4.0.100.3.61.500_s0117.24.24.24.0.40.91.442.470.0.5.0.100.3.61.455_s0217.24.24.24.0.40.93.345.460.0.5.0.100.3.61.450_s0317.24.24.24.0.38.95.260.461.0.5.0.100.3.61.380_s040.24.24.56.1.100.0.500.510.2.8.0.100.1.61.500_s050.24.24.56.0.3.3.500.508.2.8.0.3.5.61.500_s067.24.24.55.1.50.90.500.509.2.4.0.50.3.61.500
0 notes