■吉里吉里/KAG/TJS雑談質問スレ■その30 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
ノベルゲーム製作ツール吉里吉里/KAGのユーザーが雑談・質問をするスレです。
自作ゲームの進行状況や製作ツールについての話、TJS等の話題もどうぞ。
マルチポストはやめましょう。個人叩きも禁止です。
※スレで質問をするときは※
KAG/TJS/吉里吉里ドキュメント、スレの過去ログ、公式掲示板のログ、
FAQ、Google等で調べてからにしましょう。
努力の形跡が見られないとスルーされがちです。初心者?でも頑張れ!
吉里吉里スレ過去ログ倉庫
ttp://bbs.bokunatu.com/krkr/
吉里吉里2/KAG3雑談質問スレ_過去ログ
ttp://www.geocities.jp/kirikiri_log/
吉里吉里ダウンロードページ
ttp://kikyou.info/tvp/
ダウンロードしたアーカイブに含まれる「KAG System リファレンス」は
初心者にとって最も頼もしい教科書です。何度も繰り返し読みましょう。
■タグリファレンス … KAGの機能が網羅的、辞書的に載っています。
大よその機能(KAGでどんなことが出来るか)は把握しておきましょう。
■Tips/その他 … 陥り易いミスやより高度な使い方への足掛かりになる
数々のTipsが記載されています。
■TJSをもっと使うために
ゲームのインターフェイスをカスタマイズしたい、また
KAGの命令に無いことをしたくなったらまずここを読んでみよう。
必要に応じて>>3-6の公式掲示板や講座等を併用してください。
(併用に、紙媒体の参考本が欲しい人は、ダウンロードページにリストがあります)
前スレ
■吉里吉里/KAG/TJS雑談質問スレ■その29
http://echo.2ch.net/test/read.cgi/gamedev/1433436610/ なんのためのシステムか知らんけどBOTの名前付けとかだったら 氏名×名前で適当にくっつければ それなりの数になるんじゃないか
1*5だと 5種類だけど 2*5になれば10だし 5*5なら25になるし 1000人作るにしても 30*30で900になるわけで
日本人だと鈴木とか佐藤とか多いから 配列に鈴木を3個入れたりしてもいいんじゃないか var dic = %[
苗字接頭:['東','西','南','北','大','山','石','森','金','黒'], // 10
苗字接尾:['田','口','山','村','野','川','園','浜','井','本','木','崎','森','小路' ], // 14
苗字単体:['勅使河原'], // 接頭+接尾でなく単体で抽出される苗字
男名前単体:['しんのすけ'],
男名前接頭:['将','翔','優','正','健','良'], // 6
男名前接尾:['男','雄','太','一','助','人'], // 6
女名前単体:['ルイズ'],
女名前接頭:['雪','夏','秋','春','愛','優'], // 6
女名前接尾:['子','絵','奈','華','美',''], // 6
];
function getRandomName( dic, ch = '苗字' ) {
var r = function( arr ) { return arr[ intrandom(arr.count-1) ]; }; // 配列からランダムで要素抽出
if( !intrandom(49) ) return r(dic[ch+'単体']); // 1/50で単体の配列から抽出
for(;;) {
var c0 = r(dic[ch+'接頭']);
var c1 = r(dic[ch+'接尾']);
if( c0 == c1 ) continue; // 山山とか接頭接尾が被る苗字はNG
var nm = c0+c1;
return nm;
}
}
for( var i = 0 ; i < 100 ; i++ ) dm( getRandomName(dic,'苗字')+' '+getRandomName(dic,'男名前') );
for( var i = 0 ; i < 100 ; i++ ) dm( getRandomName(dic,'苗字')+' '+getRandomName(dic,'女名前') );
Debug.console.visible = true;
// これで、10(苗字接頭)*14(苗字接尾)*6(名前接頭)*6(名前接尾)*2(男女)=10080個(単体は除く)
// 配列の充実化は自分で頑張れ >>250
横から失礼します
配列関係のスクリプトは勉強してなかったから勉強にんりました 今や吉里吉里はプロ・セミプロユースがほとんどで
フリー素材とかもoggが大抵一緒にあることを
考えるとねえ 組んでてふと思ったんだけど、
ifの中で直接ジャンプしてそこから強制的にタイトルに戻ったり
call先で強制的にタイトルに戻ったり
あまつさえifの中のcall先で強制的にタイトルに戻ったらまずいのではないかな?
ifやcallがずっとスタックされ続けるよね?タブン……
解決法あるのかねこれ それとも無視して平気? titleタグ踏んだらその辺はリセットされたんじゃないかと思うけど……
最近KAG触っていないので若干自信ないが 吉里吉里講座のホームページが潰れていて高度な事のやり方がわからなくなった。
たとえばタイトル画面の選択肢から栞を読み込ませる方法とか、右クリックで栞にセーブする方法とか。 KAGで扱う部分は初歩的な事だと思うけど
サイトと情報が消えていくのはまずいね
最近過疎ってるのはやっぱ
スマホブームに乗れなかったからか 元々プログラマ文化の強いツールで、初心者迎合はムリにやってたようなところもあるからね 次に吉里吉里ブームが来るとしたら逆にセミプロ・プロユースとしてだと思う
「アマチュアがノベルゲーム作りたい」って方向なら色々別なのが出てきたしねえ KAGまで面倒みたのは大正解だったと思うけど
もしKAGなくてKAGを自力で実装必須だったら
一部の通向けの道具として埋もれてたはず あの時代は吉里吉里でもまあまあ易しいほうだったんだよ
そして「頑張ればFateも作れまっせ」という誘引力がプラスされて
中級者にとってドンピシャだった
アマが凝ったノベルゲーを作りたいという最盛期はもう去っちゃったからね
ノベルに限らず、セミプロやプロが2Dゲームを作る選択肢としての
立ち位置になっていきそう 作る側も若年層はPCよりスマホ触る時間長くて
プログラミング文化が衰退してるのもあるかも くそっ新しいksファイル作って新しいラベル作って栞にセーブしようとすると、
セーブファイルがどうしてもfirstのスタートになってしまう。
ラベルに|もつけて[cm]タグもつけたのに、なぜだ! krkrzって、結局とりあえずこれで動くってSDKは無いのかね
kagexからいろいろ組み直しが多くて、kagex環境そこそこ構築して使えてる俺からしてもハードル高い
誰か作ってある環境ゆずってくれないかな…… 吉里吉里ZはKAGで使うものじゃなくてTJSをゴリゴリ書くものだと思ってる
KAGParserは一応使うけどね 俺もzの環境欲しいな
メモリ関係が改善されているのが羨ましい >>266
つ ttps://github.com/krkrz/kag3
そういう意味じゃない? ttps://github.com/krkrz/kag3_ham
こういうのも 質問です。下記のスクリプトは
履歴で「う」の文字だけがリンクとなると思うのですが、
実際には「うえお」の部分がリンクになります
hactとendhactに囲まれた部分だけをリンクにしたい場合
どうすればいいでしょう?
あい[hact exp="dm(1)"]う[endhact]えお[s] 自己解決。HistoryLayerの
endAction()は改行などでも実行され
そん時にリンク終端部分が更新されてるせいだ
HistoryLayer.tjs, endAction()内の
last.end = font.getTextWidth(currentLine);
の行を
if( last.end === void ) last.end = font.getTextWidth(currentLine);
に修正して直せた メッセージのデータを CSVファイルで用意して、
csvParser.dllプラグインで読み込んでいるんですが、
そのメッセージ(レイヤ)に、インライン画像を入れる方法はないでしょうか?
[graph storage="○○.bmp" char=false]→普通に文字で表示されてしまいます。
できれば、CSVデータの中に画像のリンク先を入れたいのですが… フリーフォントを文章に埋め込みたくて[mappfont]を使ったんですが
文字の大部分が切れたまま表示されてしまいます
フリーフォントだからかと思って
とりあえずMSゴシックをレンダリングしてみたのですが
状況は変わりませんでした
ファイル構造は以下になります
・otherフォルダにレンダリング済みの「フォント名.tft」格納
・pluginフォルダに「addFont.dll」格納
・「Override.tjs」でaddFont.dllを読み込み
・AfterInit.tjsでフォント定義
var fontfilename = "フォント名.tft";
System.addFont(fontfilename, true);
・first.ksでフォント指定
[font face="MS Pゴシック"][mappfont storage="フォント名.tft"]
どこかおかしい部分はありますか?
よろしくお願いします krkrzのdev_multi_platformブランチが
DrawCycleTimer.hがないと言われてビルドできない。
KAGSigmaは一体どうやって開発してるんだーー jin1016さんに遙か彼方からリプするメソッド? ncbind使って吉里吉里プラグイン書くときに
void sample::test( const tjs_char hoge )
{
省略
}
って書くとコンパイル通るけどconst外すとエラー出すようになるのって何でなんでしょうか 萌えるゲーム制作吉里吉里で作る美少女ゲームって本で作ってたんですが選択肢二回目のシナリオを表示するところでわからなくなった data.xp3にstartup.tjsが含まれているにも関わらずstartup.tjsを外部から実行して、system/Initialize.tjs を実行させるのって可能なのかなこれ 化石レスで恐縮コーナー
>>274
ttf(TrueTypeフォント形式)とtft(吉里吉里独自プリレンダ画像フォント形式)をごっちゃにしてない?
拡張子が紛らわしいけどaddFont.dllはttf用、mappfontはtft用なので注意
mappfontを使うときはface名はユーザー独自名にしておいて、
mappfontを呼んだ時のフォントフェイス・サイズ・修飾が合致した場合にそのtftが使われる…だったと思う
>>278
const tjs_char* ではないの?
単なる数値ならconstつける意味があまりないような…? >>280
どういう目的か知らんけど既存の市販等の吉里吉里ゲーのhack目的なら作品次第。
素の吉里吉里なら自前のtpmプラグイン作ってスクリプトより先に外部処理呼ぶとかすればできなくはないと思う
アーカイブ暗号化用の専用のtpmが既にある場合は対策コードが入ってる場合があるので不可かもねー
あと吉里吉里Zとか独自ビルドでtpm自動リンクがカットされてたりする場合もある >>281
const tjs_char* ですね
すいません。 >>283
class sample {
int member;
public:
sample(int);
static void test1(const tjs_char *);
void test2(const tjs_char *);
};
sample::sample(int num) : member(num) { TVPAddLog(ttstr(TJS_W("sample:")) + ttstr(member)); }
void sample::test1(const tjs_char *hoge) { TVPAddLog(ttstr(TJS_W("test1:")) + hoge); }
void sample::test2(const tjs_char *hoge) { TVPAddLog(ttstr(TJS_W("test2:")) + hoge + TJS_W(" / member:") + ttstr(member)); }
NCB_REGISTER_CLASS(sample) {
Constructor<int>(0);
Method(TJS_W("test1"), &Class::test1);
Method(TJS_W("test2"), &Class::test2);
}
/*
Plugins.link("sample.dll");
sample.test1("fuga"); // (※staticメンバ)-> test1:fuga
var test = new sample(123); // -> sample:123
test.test2("hoge"); // -> test2:hoge / member:123
*/
みたいに動くけど、ただどうもconst ttstr&とかの参照はダメみたいだね。(参照じゃなければ普通に通る)
もし自動型変換に拘らないのであればsimplebinderが簡単なので使ってみては?
> ttps://sv.kikyou.info/trac/kirikiri/browser/kirikiri2/trunk/kirikiri2/src/plugins/win32/00_simplebinder
こっち使う場合、tTJSVariantから文字列に変換するときはGetString()呼ぶか、直接 ttstr strvalue(variant) みたいに渡すか、かな
AsString系は参照カウントが絡むので注意しないとリークの原因になるからお勧めしない >>284
ありがとうございます。
simplebinderで試してみます。 @layopt layer=0 visible=true
@video mode=layer
@videolayer channel=1 page=fore layer=0
@openvideo storage=test.wmv
@videosegloop start=0 end=20
@playvideo
過去スレ(その13,レス924)を参考に記述したのですが、上手くいきません
動画を特定のフレーム間でループさせたいのですが、ループせずに動画の最後まで再生されてしまいます
movie.tjsを書き換えたりしなければいけないのでしょうか?
御教示願います
OSはwin10
ツールはKKDEを使用しています メッセージレイヤ0に画像やHPゲージ、いくつかのグラフィカルボタンで選択肢を表示
メッセージレイヤ1で選択肢がそれで良いかの確認・および文章が入る
右クリックで選択前の画面に戻れる
という品を作りたいのですが、どうしても安定した動作にならず、
右クリックでメッセージレイヤ1の枠が表示され、メッセージレイヤ1のボタンが反応しなくなったり、
右クリックサブルーチンが消えてしまったりします。
http://devdoc.kikyou.info/tvp/docs/kag3doc/contents/RClick.html
ここを参考にしているのですが、アドバイスをいただけませんでしょうか? *一番最初
*右クリックで戻ってくる先
[layopt layer=message1 page=fore visible=false]
[current layer=message0 page=fore]
[layopt layer=message0 page=fore visible=true frame="" left=0 top=0 width=800 height=600 marginl=0 margint=0 marginr=0 marginb=0]
■選択肢・レイヤーを表示■
■1ターンで5回の行動を選ぶ。右クリックで選んだ行動をキャンセル出来る■
;右クリックサブルーチン
@rclick call=true storage="rclick.ks" target="*rclick" enabled=true
;何かしら5回クリックするまで戻る
;選択肢を選んだあとの行動
@rclick enabled=false
[layopt layer=message1 page=fore visible=false frame="テキスト枠" left=0 top=600 width=800 height=150 marginl=8 margint=8 marginr=8 marginb=8]
;行動結果の表示★
■選択肢に応じた言動■
[jump target="*一番最初]
288です。おおまかにこのような内容なのですが、一度★までいくと、右クリックでキャンセルした後ボタンは表示されているのに左クリックでボタンの選択が出来なくなってしまいます。
visibleをfalseにしてもメッセージレイヤ1は存在するから下のレイヤがクリック出来ないのでしょうか?その場合、メッセージレイヤ1を削除する方法はありませんでしょうか? dev_multi_platformブランチとKAGSigmaやっと動いたべ。 ここ、人いるのかなあ
bgmその1を再生、終了したらbgmその2を再生、終了したらbgmその1を再生といったような、2つのbgmをループ再生というようなことは出来ますか
2つのbgmを繋げて1つのファイルにしてしまえば簡単なんですが、もし出来るなら出来たほうがいいので、よろしくお願いします TJSで出来ると思うけどそれするより一つのファイルにする方が絶対簡単だと思う やっぱりそうですよねえ
別ファイルのほうが若干都合がいいので、質問させてもらったんですけど、tjsを書いてまでは難しそうなのであきらめます 背景写真保管の会ってサイトから素材をダウンロードしようとすると、
「個人情報が漏れてる」みたいなエラーメッセージとともにうるさい音が出る事ない? .maファイルでのif文の書き方についての質問です。
よろしくお願いします。
aが真 + bかcが真
f.a == 1 && f.b == 1 || f.c == 1
だったらボタン設置という命令を書きたいのですが、
if(f.a == 1 && f.b == 1 || f.c == 1){ 〜これだと動くけれども望んだ判定にはならない
if((f.a == 1) && (f.b == 1 || f.c == 1)){ 〜エラーになる
どう書けば正しく動作してくれるのでしょうか? よろしくお願いします。 >>295
その書き方だと
f.a == 1とf.b == 1 or f.c == 1
って意味になる はず すみません、お陰様で自己解決しました。
お騒がせいたしました。 イヴの日にまでエロゲ開発とか、死にたくならないの? 簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
Z4DJB1XXW0 ■ このスレッドは過去ログ倉庫に格納されています