トップページgamedev
540コメント205KB

【アリス】system4.0【御用達】

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2006/11/05(日) 19:38:18ID:cVqN/Dcb
アリスソフトのゲーム開発で使われているsystem4.0のスレです。

長所 
・フリー
・C/C++ JAVAっぽい(オブジェクト指向 仮想マシン)
・ゲーム製作に特化している
・ADV、SLG、3Dダンジョン、なんでも作れる
・同梱されているチュートリアルが親切、解りやすい
・実際にアリスソフトで使用されている言語なので、力さえされば同じレベルのものが作れる

短所
・使用者が少ないため、参考にするサイトが少ない
・専用エディタが無い

アリスソフト公式 ユーザークラブ専用ページからDL可(登録無料)
ttp://www.alicesoft.com/
0219名前は開発中のものです。2007/06/19(火) 22:06:32ID:rXfLnLfd
>>218
はい。そういうことです。

一つの関数が自身の内部で、別な計算用の関数を呼び出し、
自身のローカル変数の値を、その計算用の関数で計算されるローカル変数の値に変更する時、
returnで計算された結果を返し、その戻り値を=するか あるいは
参照変数型での引き数を使うと思いますが、
その際
単独のローカル変数を変更するのであれば 戻り値を=
複数のローカル変数を同時に変更するのであれば 参照変数型での引き数
を使用するということでいいのでしょうか?

という風に聞きたかったのです。分かりにくくてすみませんでした。
0220名前は開発中のものです。2007/06/21(木) 19:37:12ID:eiLXPffC
まあ構造体組んでそいつを返せば無理やりできんことはないが、
普通は構造体なんかに値突っ込むときも参照だわな。
0221名前は開発中のものです。2007/06/29(金) 18:49:40ID:MGei+fJA
ほっしゅ
0222名前は開発中のものです。2007/06/29(金) 19:28:18ID:yKQrVVdW
ちょっと困りました。
コンパイルエラーが出たとき、アウトプットに出力される、
ファイルにリンクされた文字をクリックしても、そのファイルを開けません。

(例:gamemain.jaf(7):構造体【a】は宣言されていません)
~~~~~~~~~~~~~~~~~ここ

クリックすると、

"C:\サンプル\source\gamemain.jaf(7)"が見当たりません
 新規作成しますか?

というダイアログが表示されます。何故でしょうか。
ちなみにエディターはテラパッドです。
0223名前は開発中のものです。2007/06/30(土) 20:17:04ID:RMC7WURe
環境設定でパラメータがないやつは
ファイル名の最後に行数までくっつけてエディタに送っちゃうから。
>"C:\サンプル\source\gamemain.jaf(7)"が見当たりません
の(7)がそれ。
0224名前は開発中のものです。2007/07/01(日) 21:17:19ID:FtSxvsXR
ありがとうございます!
秀丸エディターに設定したらちゃんと開けました。
0225名前は開発中のものです。2007/07/07(土) 12:55:13ID:LDQTU85a
処理に関して質問です

キャラクターの移動をママトトやままにょにょみたいに表したく

 SP_GET_POS( 0, x, y);
 for( i=0; i<4; i++){
  x = x + 8;
  SP_SET_POS( 0 ,x ,y);
  SACT_UPDATE();
  W(100);
 }

上記のように8ドットづつ動かしたいのですが、
実際に実行してみると
0.1秒に8ドットづつ32ドット右に移動する場合と
0.4秒待ってから一気に32ドット移動する場合があります

なぜ分かれてしまうのでしょうか? }
0226名前は開発中のものです。2007/07/08(日) 02:34:41ID:OMaK/Dvz
void game_main(void)
{
SP_CREATE(1, 200, 200, 255, 0, 0, 255);
int i;
int x = 0;
int y = 0;

SP_GET_POS( 1, x, y);
 for(i=0; i<4; i++){
  x = x + 8;
  SP_SET_POS( 1 ,x ,y);
  SACT_UPDATE(100);
}

'移動'A;
game_main;
}

とりあえずやってみたけど、一気に進むのが再現できないので
何故分かれるのか分からん。一気に32ドット進むのは、UPDATEができていないからだと
思うけど、別にUPDATEするのに何か条件を入れているわけじゃないしね。仮にforの
中身がスルーされているならそもそも進むことすらないわけだし。

どういう状況で分かれるのか教えてもらえると助かる。
あと、変数の宣言はGOかLOか? どんな数値が入っているか? 
他のスプライトに重なってたりして見えなくなっているということはないか?
といったことなんかも。移動用関数としてあるなら、そのままのせて欲しい。
0227名前は開発中のものです。2007/07/08(日) 12:58:00ID:1gTI6MKH
>>226
ありがとうございます。

分かれる状況は実行する度にランダム(?)で処理が分かれていました。、
もしかしたら、チュートリアルにあるぱたぱたアニメーションと同時に行っている為、
その際、移動する画像が消えた瞬間に移動を実行してしまった為かと思い始めました。

ソースが長くなってしまったので以下にあげました
ttp://www11.axfc.net/uploader/16/so/N16_19439.txt.html
ttp://www11.axfc.net/uploader/16/so/N16_19440.txt.html
pass : source
0228名前は開発中のものです。2007/07/08(日) 13:44:11ID:jNRdLWCe
>227
待機モーションでnSp1の方が表示されているときに移動しようとすると、
nSp0が未表示になってるから移動が見えないんだと思われ。

移動の時にnSp0を表示するようにするか、現在表示されている方を移動させるようにすれば
直ると思われます。
0229名前は開発中のものです。2007/07/08(日) 14:47:34ID:1gTI6MKH
移動時の表示の切り替えを正したら直りました。

回答下さった方ありがとうございました。
0230名前は開発中のものです。2007/07/17(火) 23:18:26ID:u+tbtlEn
hosyu
0231名前は開発中のものです。2007/07/24(火) 22:16:50ID:eLT263mP
保守
0232名前は開発中のものです。2007/07/25(水) 02:49:00ID:9LCgxJ9S
system 4.0ってさオブジェクトの再利用ってどうすんの?
クラスの継承もprototypeによる委譲もMix-inもないけどさ。
演算子オーバライドも無いからメンバアクセスをprototypeにリダイレクトもできないし。

それにこれのどこがOOPなの?言語仕様が劣化C++でライブラリ設計がベターCじゃん。
使ってる人はどうやってOO実現してるの?
名前空間もパッケージも無いけどモジュール性の確保とかどうするの?
0233名前は開発中のものです。2007/07/25(水) 20:38:35ID:AsNfm7Ol
下手をすれば、未だに構造化すらされていないスクリプトのエンジンが動いてるような
エロゲ業界においては、最も進んだプログラムパラダイムに位置しているシステムのうちの一つ、
という意味で、オブジェクト指向に近いという程度の話。

一方で、学問的な美しさとは程遠い泥臭さも強い。
言語仕様が劣化C++でライブラリ設計がベターCってのは、全く持ってその通り。
天才級のプログラマ達が、長年かけて積み上げてきたシステム設計ハックを
Sys4が言語的にサポートした所で、それを(PGとしては)にわか仕立てである
ライターやグラフィッカーが使いこなせなければ意味がない。


要するに、アレがサポートされてない、コレがサポートされてないと
何でもブーたれる本職のプログラマは、素直にアレとコレがサポートされている言語を選んで
足りないゲームライブラリを自前で書けば良い。と俺は思う
0234名前は開発中のものです。2007/07/26(木) 18:30:37ID:wUr/yAzc
そう考えると吉里吉里のTJSはエロゲにはとんでもないオーバーテクノロジーなんだな、
今風の動的なパラダイム満載言語は。

作者のハードウェアとソフトウェアを頭の中で分離出来てなくて
アセンブリで関数エミュレートして動的リンクとか言ってたのは、流石に何言ってんだコイツ?
とか思ったけど、エロゲ界のマだと普通なんだろうか。
0235名前は開発中のものです。2007/07/26(木) 20:19:55ID:RIwjy3oY
難しい言語話している人達は日本人ですか?
トーシロの私はさっぱりわからんべさ。

楽できないアレがほしいという部分はあるけど、ウィザードリィを作ろうと思えば
作れるスクリプト、そのくらいの機能があるだけでとりあえずは十分だと思えてしまう。
そして、そういう点でいえば吉里吉里よりも(個人的に)使いやすい。

私的にはセーブ日時やクリアデータの保存ぐらいにしか構造体は必要ない、
ぶっちゃけじゃま〜と考えている人間だけど、これって少数派ですかね。
0236名前は開発中のものです。2007/07/27(金) 11:34:34ID:HnpebtNA
ウィザードリィ作ろうと思うと構造体欲しくないか?
0237名前は開発中のものです。2007/07/27(金) 18:31:28ID:Sob+9ToY
配列で十分かな。
0238名前は開発中のものです。2007/07/28(土) 01:00:12ID:1WPiB24Y
アリスソフトは分業が確立されてるから
ゲームくむひととシステムつくるひととライブラリつくるひとが
分かれてる(システムとライブラリは同じ人かも試練)

みんながそれぞれ仕事をやりやすくするための落としどころが
劣化C++でライブラリ設計がベターCってところなのかもね。
あくまでも市販ソフトを作るための社内ツールなので、社員にとって
使いやすいか、嫌らしいバグを生み出しにくいような設計になってるか、
機能性よりも安定性か、、あたりが重視されてるんだとおも。

そういえば社内ではゲームくむひとの都合でSystem3.xライクな
命令名のライブラリを使ってるんじゃないっけ?
0239名前は開発中のものです。2007/07/28(土) 03:12:45ID:oK2zS/M5
BASIC時代じゃないんだからそりゃ分業はするだろ。
とくにエロゲなら徹底的に分業すると思う。
分業した結果ならなおさら劣化C++構文は負担になりそうだけど。
0240名前は開発中のものです。2007/07/28(土) 12:59:46ID:xxhma4iV
専任のプログラマがSys4の上に更にゲームシステムを構築した上で
他のスタッフに投げる事を想定してるみたいだから
末端のシナリオ関数はBASIC的な形式にしてしまっても何ら問題ない。
プログラマはプログラマで、DLLを作ってSys4に組み込むことができる。


商業ベースで定期的にソフトを出すのでエンジンが必要で、
ADVだけでなくRPGやSLGにも持って行きたいが、エンジンを複数抱える余裕はない。
ゲームの規模が小さくないので、まるで構造化されてないコードは管理が難しく、オブジェクト指向を取り入れるメリットもある。
しかし所詮エロゲメーカーなので社員数も少なく、エンジンに触れる人をプログラマだけに限定できるわけでもないので
本物のオブジェクト指向設計を強いることは現実的ではない。
同じコードを使い回すことでエンジンを安定させたいが、タイトルによっては
固有のC++&DirectXのコードを拡張できる余地は残したい。
という完全にアリスソフトの内向きの都合でできてるものなので、変態仕様なのは百も承知してる。

プログラマの立場から見るなら、
C++の機能が使えない事が不服ならC++を使いましょう。
非プログラマの立場から見るなら、
C++の構文が不服なら普通のADVエンジンでも探しましょう。あるいはプログラマを探しましょう。
って所
0241名前は開発中のものです。2007/07/28(土) 22:10:52ID:L3NhbgI6
単にBASIC時代の人間が今時普通のOOとVMに触発されただけじゃないの?
ライブラリがベターCなのは命名規則をSys3.xに似せた互換性の問題で。

文法が劣化C++ならVMじゃなくてコンバータでC++ソース吐いてコンパイラに食わせた方が勝手が良いてのはマなら思うだろうし。
VMにしたのは趣味じゃない?
0242名無しさん@そうだ選挙に行こう2007/07/29(日) 01:33:10ID:rW3UYyqT
http://www.xfuweb.com/alice/wiki/wiki.cgi/alice?page=%A5%B9%A5%BF%A5%C3%A5%D5

この辺にヒントが。妹尾氏の趣味的な要素もあるんだろね。
関係ないけどMSX版はMSX-BASICと簡単なマシン語で組まれてたの思い出した。
0243名無しさん@そうだ選挙に行こう2007/07/29(日) 09:44:31ID:h8wW1RfM
>>242
それ読んでアリスがチャンピオンソフトだってこと思い出した。
0244名無しさん@そうだ選挙に行こう2007/07/29(日) 11:54:31ID:EE6V65Tj
>240
>専任のプログラマがSys4の上に更にゲームシステムを構築した上で
>他のスタッフに投げる事を想定してるみたいだから
ゲームシステムも上の方はディレクターとかが直接調整してんじゃね?
さすがに昔みたいにシナリオ、プログラム、音声編集を一人でなんてことはないだろうけど。
0245名前は開発中のものです。2007/08/05(日) 21:46:32ID:hMQ0peJL
>>237
配列は便利だし、大抵のことはできるけど、=でコピーが出来ないのが個人的にめんどいかな。
構造体(といっても、配列変数だけのもの)の配列なら構造体コピーの形でコピー出来るんで、
そっちの方がちょっと不便だけど便利かもしれない。(Σどっちだ)
0246名前は開発中のものです。2007/08/09(木) 23:34:07ID:OpEyQuyp
ふう……。
floatの最大値はどうやって入力したもんでしょう。
普通なら 3.402823466*POW(10,38) 
でいいんでしょうけど、グローバル変数で宣言しようにも
【const値の要求に対して式が与えられました】って怒られてしまうし……。
0247名前は開発中のものです。2007/08/11(土) 10:24:18ID:cjFV7OEr
>>246
3.402823466e+38
0248名前は開発中のものです。2007/08/12(日) 19:39:20ID:A9TrQSIZ
>>247
オー サンクスです。
0249名前は開発中のものです。2007/08/17(金) 20:27:32ID:JLD0UdeZ
超初心者的な質問で恐縮なんですが、
最初から用意されている機能だけを使って画面揺らしながら同時に文章表示とか出来ないですか?
0250名前は開発中のものです。2007/08/17(金) 20:33:38ID:dXA5Pbtb
最初から用意されているってのは
特別HLLライブラリとかをインポートせずに、サンプルのコードだけをちょちょっと弄って
文字を出したいってこと?
やりたいことがよく判らないな、なんとなく出来なさそうな気がするけど
0251名前は開発中のものです。2007/08/17(金) 21:17:42ID:JLD0UdeZ
はい、そういう事です。分かりにくくてすいません・・・
0252名前は開発中のものです。2007/08/17(金) 21:45:39ID:9fQEwE3z
お手軽コースなら文章表示後SACT_QUAKE_SCREEN関数
文字を徐々に一文字ずつ表示と画面を揺らしっぱなのを
並列実行とかだとめんどいことになりそう
0253名前は開発中のものです。2007/08/17(金) 22:08:25ID:BvI/SudH
文字はシングルフォーテーションでなく、
stringの引数で取る関数を使って一文字ずつごと揺らすように
した方がいいかな? できないことはないと思う。

LengthByte()で文字列の長さを取得、
文字を szB = szA[nLoop];みたいに一文字ごと取得しながら
文字の表示X位置を増やしつつ振動させるみたいな感じになるかな。
分かりにくくてごめん。



0254名前は開発中のものです。2007/08/17(金) 23:29:54ID:2MBXeHrG
MES_CALL_FUNC のサンプルコードが使えそうな気がする
振動用の関数作らなきゃいけないけど
0255名前は開発中のものです。2007/08/18(土) 02:00:59ID:CwbJmHSx
249の者です、こんな初心者な質問に答えて下さって皆さんどうもありがとうございます。

先程まで書かれていた方法を試そうと色々やっていたのですが、
私の知識では結局>>254さんの方法しか成功させることが出来ませんでした。
>>252-253さんの方法ではどうしても一文字ずつ取得する方法が分からなかったもので・・・、
(string型やarray@とか見たことも聞いたこともありません・・・、ポインタとか使えないみたいだし・・・)

とにかくお陰で問題を解決することができました、皆さん本当にありがとうございました。
0256名前は開発中のものです。2007/08/19(日) 23:26:54ID:2nMt3sJN
すまんがちょっとだけ質問です。

CGのフェードアウトができる関数(フェードアウトのパターンが幾つかあって、引数で指定できる)が
SACT2だかに組み込みであったような記憶があるんだけど、マニュアルを探してもそれらしい関数が見つからない。
名前を思い出させてください
0257名前は開発中のものです。2007/08/19(日) 23:49:57ID:6QwYBDpR
んー。

SACT_EFFECT(int nType, int nTime, int nfKey);

じゃないかな?
0258名前は開発中のものです。2007/08/19(日) 23:55:13ID:2nMt3sJN
それでした
お騒がせいたしました
0259名前は開発中のものです。2007/08/24(金) 00:15:19ID:vTd5piEW
お題:戦国ランスのタイトル画面の焔玉の演出

こいつぁーいかにもDrawSnowで実装されてそうな気がするぜ
と思って調べてみたら意外とあっさり再現できて拍子抜けした。
既出だったらごめんなさい。 →まとめWiki
02601952007/08/30(木) 03:53:25ID:aU2W/YNb
DC38のURL見つけてダウンロードしようとしたら404・・・・
サーバ容量不足で削除されたっぽい?
タイミング悪〜
0261名前は開発中のものです。2007/09/11(火) 20:32:08ID:FHs3wfoj
hosyu
0262名前は開発中のものです。2007/09/14(金) 08:14:32ID:mYG5MPRu
system4.0で
FFのようなRPGのMAPって、
MAPチップでつくるのか?
あるいはいったん一枚のCGにするのか?
0263名前は開発中のものです。2007/09/14(金) 17:18:53ID:e30btVMx
どっちもできる

どんなゲームにするかにもよると思うけど
一枚絵にアイテムのみチップで乗せるのが
作るのもチェックするのも個人的には楽だった
0264名前は開発中のものです。2007/09/14(金) 17:51:20ID:k4+u9ySn
ママトトみたいな、アイテムボックスの出し入れをやりたいんだけど、
何をどうしたらいいのかわからない・・・誰か教えてくだしあorz
0265名前は開発中のものです。2007/09/15(土) 01:52:21ID:8xNpHwwW
>>263
でもその方法だと
樹とかの障害物だと楽でも
壁とかの障害物は大変そうだな
0266名前は開発中のものです。2007/09/15(土) 11:16:20ID:GdSXpNtY
>>265
全部チップで並べるとマップの読み込みが遅くなるし
木でも壁でも進入不可区域の設定は同じようなもんだから
そうでもない……と思ってたけど、もっと楽な方法あるかも
0267名前は開発中のものです。2007/09/15(土) 13:27:31ID:cmmKy4o+
PCが根性をインストールしているなら
一枚サイズのどデカイのを各種類ごと(アイテム、障害物、背景)つくって
三枚重ねて置くというのもできる。キャラ座標との重なりをαマップチェックで判定。
大きいマップなら便利かもしらん。当然重い。

ただ、個人的には全チップが一番楽だと思う。

>>264
ママトトPC買い換えて以来インストールしてないや……。
覚えてないんだけど、ままにょにょのnotパズルみたいなやつだっけ?
多分WIZとかのアイテムシステムと同じだと思う。
0268名前は開発中のものです。2007/09/15(土) 23:30:48ID:8R4Y24aZ
int フラグ=0;
while(1){
 KEY_CLEAR();

 if(KEY_IS_DOWN(VK_LBUTTON)){
  if(フラグ==2&&マウス動いたかチェック()){// アイテムつかんで移動中
  }
  else{
   if(今選択中のアイテム==クリックしたとこのアイテム){
    フラグ=2; // 二度目の選択なので掴ませる
   }
   else{
    フラグ=1; // 選択アイテム変更
   }
  }
 }
 else{
  if(フラグ==1){
   フラグ=0;
  }
  else if(フラグ==2){
   フラグ=0; // アイテム放した時の処理
  }
 }
}

イメージ的にはこうか?
選択後左ボタン離さなくていいならこれより簡単になるね。
0269名前は開発中のものです。2007/09/16(日) 15:31:45ID:/KVPUWxW
みんなどんなの作ってるの?
0270名前は開発中のものです。2007/09/18(火) 21:46:33ID:xaL6FU+C
>>267
>WIZとかのアイテムシステム
ってのはどのようなものですか?
0271名前は開発中のものです。2007/09/18(火) 21:58:37ID:xaL6FU+C
>>264
ままにょにょ でしたすいません。
0272名前は開発中のものです。2007/09/18(火) 23:15:28ID:OkpVoOWr
>>267
最近なくなってきたけどキャラが八個までとか
十個までしかアイテム持てないタイプのシステム。
アイテム用の配列をつくるんじゃなく、キャラクターデータの配列に
(他のパラメーターと同じように)所持アイテムの要素を加えているもの。
0273名前は開発中のものです。2007/09/18(火) 23:16:17ID:OkpVoOWr
おっと>270。
0274名前は開発中のものです。2007/09/18(火) 23:19:48ID:xaL6FU+C
>>272
なんとなくイメージが掴めました。

すると、ままにょにょのように(2*2マス)アイテムとかをセットしていくのは、
多次元配列っぽい扱いで組むと良い・・・感じになるのでしょうか。
0275名前は開発中のものです。2007/09/18(火) 23:23:06ID:nh0I3KRl
キャラデータに二次元配列でも持たせる。
0=装備不可、1=装備可、2=装備中として
2,2,1,1,0
2,2,1,1,0
1,1,1,0,0
みたいな感じにして装備時の判定に使う。
画面表示につかう装備位置とか種類はキャラごとにリストとして持っておく。

ぱっと思いついたのを適当にまとめようとしたら
中途半端になりそうだったのでここだけ。
というか、アイテムリストとかの作り方とかから関係してそうだし、
効率とかは別としていろんなパターンありそうだが。
0276名前は開発中のものです。2007/09/20(木) 23:28:58ID:20DvfK8F
txtファイルやバイナリファイルの
読み込み方がわからない・・・
誰か教えて下さい。
0277名前は開発中のものです。2007/09/21(金) 06:04:07ID:9fbbqFiF
それが何らかの構造体に対応する形式なら(設定データとか)File.dll使用。

と書いててふと思ったけど、
stringのみの構造体にFile.dllで全部読み込ませて
自前で文字列分割すればいける?。
File.dllで書き出したものしかダメかもしんないけど。
0278名前は開発中のものです。2007/09/21(金) 11:26:28ID:Tv3x8N6Q
DATAアクセスのDATA.hllってどうやって使うん?
変換ツールの使い方すらよくわからんorz
0279名前は開発中のものです。2007/09/21(金) 20:31:35ID:9fbbqFiF
使ったこと無いから違うかも。

変換はドラッグアンドドロップ。
iniファイルに書かれたフォルダに全部変換されるからNL5でリンク。

Openでデータを開いてReadで指定された構造体へ読込。
書いてないがRead毎に一つのデータを読むのかも。

サンプルデータ.txtだと多分構造体は
struct Data{
string; //名前
int; //性別
int; //体力
int; //攻撃
int; //魔法
int; //防御
int; //魔抵
string; //特技
int; //属性
};
こんな感じだと思われ(変数名とかはめんどいので省略)
データの#defineが効くのは変換時だろうし。
0280名前は開発中のものです。2007/09/21(金) 20:33:45ID:9fbbqFiF
改行多すぎたorz

int result;
Data param;
result = Open(リンク番号);
if(result == 1)
{
if(Read(param) == 1)
{
// 成功
}
Close();
}
これをちゃんと動くように書き直して試してみたらなんとかなるかも。
サンプルデータ.txt使ってランスが読み出せたら正解。
0281名前は開発中のものです。2007/09/22(土) 01:34:26ID:5k6/7BO3
ああ、iniファイルに指定されたフォルダ作ってドラッグドロップすれば良かったのか。
exeだけ実行しても何も起きないはずだorz

サンキュー、これでデータ組み込み&修正が楽になりまする。
0282名前は開発中のものです。2007/09/22(土) 20:55:43ID:lCiDoZD6
>>279
NL5って何?
0283名前は開発中のものです。2007/09/22(土) 21:02:08ID:lCiDoZD6
すまん、調べたらすぐでてきた
0284名前は開発中のものです。2007/09/23(日) 14:51:39ID:1iwE3MFE
>279,280

おかげさまでデータ読み込みまで出来るようになりましたアリガト!(´▽`)

予想通りreadコマンドで読めるの一行だけみたいでしたけど、
配列構造体に格納しつつエラーが出るまで読み続ければOKでした。

これでデータがかなり整理できまする(;つД`) タスカッタ

今まではエクセルのリストから初期化用定義文吐きだしてコピペ。
一個ずつ代入してくって面倒なコトしてたw
0285名前は開発中のものです。2007/09/23(日) 17:44:12ID:gTMsvm9z
>>284
できればソースを見せてくれませんか?
僕もやっているのですがうまくいかなくて
02862842007/09/24(月) 01:33:40ID:wQrq8l22
>>285
こんなんす。
ループが入っているだけで、教えてもらったのとほとんど一緒です。

===
void ★ReadData(void){
int No = 0;

if(Data.Open(1) == 1) {
while(true) {
No++;
if(Data.Read(g_ReadData[No]) == 1) {
// 読み込み成功

//system.MsgBox("No = " + g_ReadData[No].nNo.String() + ":名前 = " + g_ReadData[No].sName);

} else {
//system.MsgBox("データの読み込みを終了しました。");
break;
}
};

Data.Close();
} else {
system.MsgBox("データのロードに失敗しました。");
}

}
02872842007/09/24(月) 02:16:10ID:wQrq8l22
あ、そだそだ。
データチェックとか色々してたんでwhile文とif文分かれてますけど、
普通に作る分にはwhileだけで問題ないです。

うちも最終的には直すんで。
0288名前は開発中のものです。2007/09/24(月) 15:02:52ID:PLTvhaxX
>>286
サンクス。
286のやつでやってもうまくいかないから
Data.dllかNL5でのリンクがうまくいってないみたいだ
0289名前は開発中のものです。2007/09/30(日) 00:54:23ID:jYQSajes
「Data.dll」→RUN\DLLフォルダ
「Data.hll」&「Data.inc」→HLLフォルダ
この三つをそれぞれのフォルダに置いてSys42IDEの"HLLを追加"で追加したけれど
【Open】関数は定義されていません となって使えません
もしかして追加の仕方が間違ってるのでしょうか?
0290名前は開発中のものです。2007/09/30(日) 07:39:52ID:DbtRC+b1
ちゃんと「エイリアス名.Open」にしてるか。
System40.iniをしてるか。

この辺。
0291名前は開発中のものです。2007/10/09(火) 22:50:08ID:q9E93AE4
hosyu
0292名前は開発中のものです。2007/10/20(土) 01:07:20ID:+048CWqr
0乗は1になるのかー。初めて知った。
0293名前は開発中のものです。2007/10/23(火) 23:14:01ID:g6dhJWeE
過疎だ……。
誰かRPGとか作っている人います?
0294名前は開発中のものです。2007/10/24(水) 00:35:21ID:xn+nw84C
今パズル作ってるけど業務が忙しくなって丸2ヶ月くらい触ってない・・・
0295名前は開発中のものです。2007/10/25(木) 00:31:39ID:Zn6cpkxM
よさげな戦闘システム思いついたけど実装できなくて放置中
0296名前は開発中のものです。2007/10/25(木) 16:27:46ID:vNqY00up
>>295
晒したら誰か助言くれるかもよ
0297sage2007/10/26(金) 12:02:12ID:/MaVV48B
今ボードゲームタイプのRPGモドキを作ってる。

最近はwikiの更新が多くて嬉しい。
wiki充実させたいけど、面白い関数とかのネタも特にない。
どういう情報が載ってれば便利なのかな。
0298名前は開発中のものです。2007/10/26(金) 13:27:24ID:+vtTpZVu
あのゲームのこういうとこはこういう風にして動いててsystem4で書くとこうなるんですよ
的な解説とか面白そう&便利そう
0299名前は開発中のものです。2007/10/26(金) 23:39:08ID:HBlQXi9f
ゲームそのものの解説になるけど、そういうサイト自体少ないからな。


それより、wikiの更新が途切れないのはいいんが
あの独特のインデント・カッコの使い方は修整してもいいんだろうか?
まぁコード書いてる本人が判ってるなら別に文句を言う筋はないんだが
あんなスタイル始めて見た
0300名前は開発中のものです。2007/10/27(土) 00:00:22ID:94TX4bJ6
いいよー。もともと我流の上に、普段からTAB使いなんで
WIKIだと自分でも分かりにくいなと思ってる。
0301名前は開発中のものです。2007/10/29(月) 22:11:56ID:F5r4jyoq
今更思ったんだけど……。
RPGの制作って解説に向いて無い?
ソースの増え方が天井知らず。
0302名前は開発中のものです。2007/10/30(火) 00:03:44ID:c1631LRa
RPGでソースが増えるのは仕方ないかと

jafじゃなくてtxtファイルにしてくれたらブラウザで読めて便利かなと思った
ファイル数多いと落とすのがちょっと大変
まあ勝手な言い分なのでやりやすい形で続けてくれ
0303名前は開発中のものです。2007/11/01(木) 00:12:05ID:mCtKzBY/
システム4.0でシューティングは作れるのだろうか
グラディウスやR-TYPEのレベル
0304名前は開発中のものです。2007/11/01(木) 00:29:38ID:v32JWrVo
システム4.0でシューティングのサンプル、見たことありますよ。
0305名前は開発中のものです。2007/11/01(木) 00:43:59ID:mCtKzBY/
すげぇ
突き詰めればかなり融通が効くのだろうか
0306名前は開発中のものです。2007/11/01(木) 07:09:28ID:53sZItNQ
タスクシステムサンプルならスゲスゴにあると思う。

融通が効くというか、関数ポインタを構造体に持たせられるなら、
STGもACTもRPGもSLGもSRPGもそれほど変わらないような作り方で出来る。
処理の重さがネックだけど。
0307名前は開発中のものです。2007/11/01(木) 07:17:14ID:mCtKzBY/
関数どころか算数が出来ないレベルに落ちたぜ

最低限は可能だが(プラスマイナスかけるわり算)
それ以上の方程式という高度なレベルは
学生時代から投げ出していたぜ

そんな自分でもシステム4.0を構築出来なくはないレベルなのだろうか
0308名前は開発中のものです。2007/11/01(木) 11:16:48ID:4l261QOy
大丈夫でしょ。
面倒な計算はそれこそPCにさせればいい。
0309名前は開発中のものです。2007/11/01(木) 11:33:17ID:mCtKzBY/
何という恐怖
システム4.0を突き詰めれば
大概のゲームが作れるとわ…

数学分からないとか言い訳せず
頑張ってみる
0310名前は開発中のものです。2007/11/01(木) 19:34:57ID:gkLUOEZ3
究極に突き詰めたら、
最初にゲームシステムDLLを呼び出したまま最後まで返ってこなくなる気がする。
まあそこまで行ったら他のフリーライブラリのほうがいいんじゃね?とも思うが。
0311名前は開発中のものです。2007/11/02(金) 17:38:20ID:LI5jfqFF
俺はアリス儲だからsystem4.0でやる事に意義がある
まあたいしたもん作ってないけどさw
0312名前は開発中のものです。2007/11/02(金) 23:44:46ID:n3OSdW5H
ユーザークラブのZEROは「こういうのも作れます」
のよい見本だと思う。
0313名前は開発中のものです。2007/11/05(月) 22:47:48ID:eDoMJSU2
うー実行時に

【HLLからIString::Set()が呼ばれましたが、stringの実体は一時オブジェクトです】

と出る……。
これがintの場合は大丈夫なのに何故でしょう。
0314名前は開発中のものです。2007/11/06(火) 21:18:33ID:dVZUWYYT
>313
ふと思ったんだが、dll.func("ABC")とかやってない?
ref stringで。
いや、参照じゃなくてもこれができるかはわかんないし、
intなら大丈夫の意味もわかんないんだけど。

もし自前DLL作ってるなら、
どういう風に呼び出してるかとかHLLとか出してみてよ。
(そのままじゃなくてもいいから)
0315名前は開発中のものです。2007/11/06(火) 23:18:45ID:cZ2R0MB+
それが自作のDLLを使用しているわけではないんです。
全体のソースをはらせていただきます。

http://wikiwiki.jp/system4/?plugin=attach&pcmd=open&file=Source.zip&refer=%CB%DC%A5%B9%A5%EC%A3%D1%A1%F5%A3%C1%A4%DE%A4%C8%A4%E1

無駄に量はありますが、エラーの条件は

RPG \ CHAR_MAKE \ tagObject.jaf

にある、object構造体のコンストラクタの一行です。
同ファイルの先頭にあるg配列の

array@object asChar[20];

の要素数の倍、実行時にエラーメッセージが出るようですが、原因の見当がつきません。
ローカルでoName_baseを呼ぶ分には問題ないようです。
もし宜しければ教えて下さい。
0316名前は開発中のものです。2007/11/06(火) 23:23:09ID:cZ2R0MB+
あれ……テキストは直リンクできるのにZIPは出来ない?
このファイルです。

http://wikiwiki.jp/system4/?plugin=attach&pcmd=info&file=Source.zip&refer=%CB%DC%A5%B9%A5%EC%A3%D1%A1%F5%A3%C1%A4%DE%A4%C8%A4%E1
0317名前は開発中のものです。2007/11/07(水) 20:40:19ID:aH1Zfske
ええとごめん、時間がないからエラーの出る場所だけで。

game_main>asChar_Data>oCharMakeと辿っていって、
最終的にans_t::SString関数内の
if(szX != szA){asY[nL] = szX;return asY[nL];}
の行でエラーが出る。
asChar_Dataを呼ぶ前にAコマンドで止めて、
ブレークポイント使ってステップ実行するとわかると思う。

ただ、使い方が間違ってるのかどうかまではわかんない。
(ライブラリの作者さんならわかりやすいのかな)
あと、intなら大丈夫の意味も未だにわかんない。
0318名前は開発中のものです。2007/11/07(水) 22:25:35ID:aH1Zfske
ふと思いついて、
if(szX != szA){asY[nL] = szX;return asY[nL];}

if(szX != szA){asY.Erase(nL);asY.Insert(nL, szX);return asY[nL];}
としたらエラーはなくなったんだが、
これは>313、ライブラリ作者さん共に正しい動作になってるか?
0319名前は開発中のものです。2007/11/07(水) 23:13:39ID:xpaYlRaB
>>317-318
どうも有り難うございます。エラー箇所は分かったのですが、
何故エラーになるのかがどうしても分かりません。

>>318
まことに申し訳ないのですが、正しい動作になりません……。
第二引数に何を入れてもマウンテンデューが返ってくるようです。
「intなら大丈夫」というのはこういうことです。

//テスト
void game_main(void)
{
ans_t MS;

//MS.nSet("keyword",100);
//MS.nSet("keyword",200);
//N(MS.nGet("keyword"));A;//正常な動作だと200が出力

MS.ssSet("keyword","じむ");
MS.ssSet("keyword","がんたんく");
S(MS.ssGet("keyword"));A;//正常な動作だと"がんたんく"が出力
}

nSetはans_tのメソッド、SNumとほぼ同等のメソッドです。
ssSetはans_tのメソッド、SStringとほぼ同等のメソッドです。
SNumとSStringの違いは、int配列に入れるかstring配列に入れるかというだけで、
操作はほとんど同じです。

しかしnSet(上のコメントアウトしている方)は正常に動作し、
下のssSetの方は単独では前述のエラーメッセージが出ます
(コメントアウトを外し、先にnSetの方を動かすとssSetの方も正常に動きます)
どうしてこんな違いが出るのかに大混乱です。
■ このスレッドは過去ログ倉庫に格納されています