プロジェクトと同じ階層にevent.txtがあり、そこに書き出すスクリプトを以下のように作ってみたのですが、うまく動きません。スクリプトの問題点等教えていただければ幸いです。
/*
* @help
* プラグインコマンド:
* TextWrite txt txtをevent.txtに書き出します。
*/
(function(txt){
var projectFilePath = decodeURIComponent(path.dirname(window.location.pathname.slice(1)));
fs.writeFileSync(projectFilePath+'/event.txt', txt);
})();
任意のtextをファイルに書き出す方法を教えてください。
- Plasma Dark
- 記事: 736
- 登録日時: 2020年2月08日(土) 02:29
- 連絡する:
Re: 任意のtextをファイルに書き出す方法を教えてください。
1. まず、どのようにうまく動かないかを説明されていないところが問題です。
エラーメッセージが出たなら、それを読んでください。
2. pathモジュール、fsモジュールを使うにはrequireする必要があります。
3. 定義した関数を即時実行していますが、引数としてtxtを定義しているにも関わらず何も渡していません。
これで初めて、 txt に 任意の文字列 という文字列がセットされます。
もっとも、これではゲームの起動時にプラグインにベタ書きされた文字列が設定されるため、使い勝手はよくなさそうです。
任意の文字列をどのように設定したいかによって、適した書き方は変わります。
4. 厳格モードの使用を推奨します。
エラーメッセージが出たなら、それを読んでください。
2. pathモジュール、fsモジュールを使うにはrequireする必要があります。
3. 定義した関数を即時実行していますが、引数としてtxtを定義しているにも関わらず何も渡していません。
コード: 全て選択
(function(txt){
// (中のコードは省略)
})("任意の文字列");
もっとも、これではゲームの起動時にプラグインにベタ書きされた文字列が設定されるため、使い勝手はよくなさそうです。
任意の文字列をどのように設定したいかによって、適した書き方は変わります。
4. 厳格モードの使用を推奨します。
Re: 任意のtextをファイルに書き出す方法を教えてください。
お返事誠ににありがとうございます。
MVもJSもともに初心者で要領を得ず、説明不足となってしまい申し訳ありません。
1.3. スクリプトはファイル名TextWrite.jsでプラグインとして登録してあります。その上でイベントからプラグインコマンドを使って「TextWrite イベント1」のように記述して起動させようと思ったのですが、まったく反応がありません(エラーは出ませんが)。
2.「pathモジュール、fsモジュールを使うにはrequireする必要があります。」
どの様に記述すればよいのか、教えていただければ幸いです。
MVもJSもともに初心者で要領を得ず、説明不足となってしまい申し訳ありません。
1.3. スクリプトはファイル名TextWrite.jsでプラグインとして登録してあります。その上でイベントからプラグインコマンドを使って「TextWrite イベント1」のように記述して起動させようと思ったのですが、まったく反応がありません(エラーは出ませんが)。
2.「pathモジュール、fsモジュールを使うにはrequireする必要があります。」
どの様に記述すればよいのか、教えていただければ幸いです。
Re: 任意のtextをファイルに書き出す方法を教えてください。
自分でいろいろ調べてみたところ、何とか自己解決に至りました。
因みに最終的に以下の様なスクリプトになりました。
(function(){
'use strict';
const path = require('path');
const fs = require('fs');
var pluginName = "TextWrite";
// プラグインコマンドの定義
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, txt){
_Game_Interpreter_pluginCommand.call(this, command, txt);
if(command === pluginName){
var projectFilePath = decodeURIComponent(path.dirname(window.location.pathname.slice(1)));
fs.writeFileSync(projectFilePath+'/event.txt', txt);
}
};
})();
因みに最終的に以下の様なスクリプトになりました。
(function(){
'use strict';
const path = require('path');
const fs = require('fs');
var pluginName = "TextWrite";
// プラグインコマンドの定義
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, txt){
_Game_Interpreter_pluginCommand.call(this, command, txt);
if(command === pluginName){
var projectFilePath = decodeURIComponent(path.dirname(window.location.pathname.slice(1)));
fs.writeFileSync(projectFilePath+'/event.txt', txt);
}
};
})();
- Plasma Dark
- 記事: 736
- 登録日時: 2020年2月08日(土) 02:29
- 連絡する:
Re: 任意のtextをファイルに書き出す方法を教えてください。
素晴らしい。ちゃんとnodeモジュールを使っているし、プラグインコマンドになっていますね。
動作には関係ないことですが、少しだけ補足します。
本掲示板にはコードを貼り付けるためのタグが定義されています。
書き込みフォーム上部の Code ボタンを押すことで挿入できます。
コードを貼り付ける際はこれを利用すると多少見やすくなります。
pluginName という名前の変数は、コード中ではプラグインコマンド名として使われているようですね。
たまたまプラグイン名と一致していますが、そういうケースばかりでもないので、後で読んで意味のわかる名前(例えば、 commandName とか)にしておくと未来の自分に優しいと思います。
動作には関係ないことですが、少しだけ補足します。
本掲示板にはコードを貼り付けるためのタグが定義されています。
書き込みフォーム上部の Code ボタンを押すことで挿入できます。
コードを貼り付ける際はこれを利用すると多少見やすくなります。
pluginName という名前の変数は、コード中ではプラグインコマンド名として使われているようですね。
たまたまプラグイン名と一致していますが、そういうケースばかりでもないので、後で読んで意味のわかる名前(例えば、 commandName とか)にしておくと未来の自分に優しいと思います。