HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0408
Lock on Hsp情報をTxtにセーブしたい だが...7解決


Lock on Hsp

リンク

2017/4/8(Sat) 18:49:23|NO.79008

よくゲームで見かける情報(スコア系統)を自分でもやりたいのですがよくわかりません
ただ、メモから拾っているのはわかります。できれば教えてください



この記事に返信する


さすらいの旅人

リンク

2017/4/8(Sat) 19:26:00|NO.79009

具体的にどのようなものを保存したいのか明確に記述してくださらないと、正しい回答が得られない場合があります。より具体的に状況を説明してみましょう。

ちなみに、変数の一括保存はhspdaから、vsave命令を使用する方法があります。また、自由に文章や保存したい内容を定め、保存するにはメモリノートパッド命令を使うといいかと思います。



さすらいの旅人

リンク

2017/4/8(Sat) 19:28:08|NO.79010

また、HOMEには自身のHPのURLを、もし持っているのであれば記述します。回答者がこれをもとにスクリプトなどを解析するきっかけになることがあります。



名無し

リンク

2017/4/9(Sun) 03:07:02|NO.79017

NO.79009の記載通りなのですが、取り合えず作ってみる。


zyouhou=1 ;「情報」 notesel data noteadd ""+zyouhou,0,1 notesave"data.txt";保存先のパスに変更して
↑で保存できます。情報が何か分からないため勝手に情報=変数という解釈で
尚且つすでに変数には情報が格納されているという事で記載しました。
「zyouhou=1」を保存する情報の変数に変更しnoteaddにその変数を入れ保存すればいいかと。



Mitumitu2017

リンク

2017/4/9(Sun) 03:25:40|NO.79018

いろいろな情報をtext形式でまとめるのであれば、
目次
1文字編
1.1保存
1.2読み込み
2変数編
2.1保存
2.2読み込み

1.1 保存

notesel Test noteadd "HSP3",0 noteadd "大根",1 notesave "Hsp_date.dat" ;(ファイル名なのでなんでも可)
notesel...
変数をメモリノートパッド命令のバッファに設定します。
変数は、強制的に文字列型に変更されます。
noteadd...
メモリノートパッドの内容を追加・変更します。
文字例入力カッコ内("___")に文字を入力して、かっこ外(,0)で、対象となる行(に1を足す 例:1行目=0)を指定します。
省略するか、-1を指定すると最終行が対象になります。
notesave...
メモリノートパッド命令のバッファの内容を指定したファイルにテキストファイルとして保存します。
これで保存は完了です。
これをメモ帳で開いたら、

HSP3 大根
と出てきます。

1.2 読み込み

exist "Hsp_date.dat";(ファイル名なのでなんでも可) if strsize=-1:mes "ファイルが見つかりません":stop sotesel Test noteload "Hsp_date.dat" mes Test
exist...
"ファイル名"で指定したファイルが存在するかをチェックして、
そのファイルサイズを取得します。
exist命令が実行されると、システム変数strsizeに結果が反映されます。
もしファイルが存在しなかった場合は、-1がstrsizeに代入されます。
noteload...
指定したファイルをメモリノートパッド命令のバッファに読み込みます。
通常は、テキストファイルを読み込み、メモリノートパッド命令で読み出す対象とします。

これで文字編は終了です。お疲れさまでした。
変数編
2.1保存

sdim Test lpoke Test,20,500 bsave "Test.dat"
sdim...
文字列型の配列変数を作成します。
lpoke...
変数に保存されたデータメモリ上の任意の場所にある 4バイトの内容を書き換えます。
パラメータ◆↓は詳しいことなので、検索してください。
bsave...
メモリバッファの内容をファイルに書き出します。
通常は、sdim命令で確保したメモリバッファに対して使用しますが、
それ以外の型を持つ変数や、配列変数に対して使うこともできます。

2.2読み込み
読み込みは文字編と同じです。

ゲームのデータをセーブするとき
レベル:5=変数名:LV
名前:Lock on HSP=変数名=NAME
の場合、

;設定 LV=5 NAME=Lock on HSP lpoke LV,50,200 lpoke NAME,50,200 DATE=""+LV+"\n"+NAME bsave "gamedate_level.dat",DATE
でセーブ、

LV=0 NAME="" exist "gamedate_level.dat" if strsize=-1:mes"ファイルが見つかりません":stop noteload"gamedate_level.dat" noteget LV,1 mes LV noteget NAME,2 mes NAME
これでできるはずです。
noteget...
メモリノートパッド内の、行(1を引くあれ)をパラメータ1で指定した変数に代入します。
メモリノートパッド内の任意の行にある内容を読み出すことができます。

以上、お疲れさまでした。



Mitumitu2017

リンク

2017/4/9(Sun) 03:26:34|NO.79019

以下文章で問題があれば、お申しつけください。



沢渡

リンク

2017/4/9(Sun) 13:59:04|NO.79040

テキストデータなら、他の回答者さんの言っているnotesave、noteloadが良いのですが、
「よくゲームで見かける情報(スコア系統)」というあたりからして、ハイスコア等の数値データを
保存・読み込みしたいのでしょうか?
その場合、bsaveとbloadを用いるのが一般的です。

保存・読み込みの際は、まず、sdimで読み書き用のバッファを確保します。
保存する時は、このバッファにpoke、wpoke、lpokeといった命令を使ってデータを書き込み、
最後にバッファの内容をbsaveでファイルに保存します。
読み込みの時は、まずbloadでファイルの内容をバッファに読み込み、
このバッファからpeek、wpeek、lpeekといった関数を使ってデータを取り出すという流れです。
以下、簡単な例を示してみます。

○データの保存

a=186 //この変数の範囲は0〜255の整数と決めておく。 //(1バイトでは0〜255の数値を表現できる) b=54328 //この変数の範囲は0〜65535の整数と決めておく。 //(2バイトでは0〜65535の数値を表現できる) c=-6548716 //この変数はどのような整数でもよい。 //(4バイトではどのような整数でも表現できる) sdim buf,7 //データセーブ用のバッファを用意。 //今回は7バイト必要なので、7バイト確保。 poke buf,0,a //バッファの先頭にaの内容を1バイト書き込む //pokeは1バイト書き込む命令。 wpoke buf,1,b //バッファの先頭から1バイト進んだところに、bの内容を2バイト書き込む //wpokeは2バイト書き込む命令。 lpoke buf,3,c //バッファの先頭から3バイト進んだところに、cの内容を4バイト書き込む //lpokeは4バイト書き込む命令。 bsave "test.dat",buf,7 //バッファの内容を7バイトファイルに保存する。


○データの読み込み

exist "test.dat" if strsize=-1 : dialog "ファイルがありません" : end sdim buf,7 //データロード用のバッファを用意。 //今回は7バイト必要なので、7バイト確保。 bload "test.dat",buf,7 //ファイルから7バイトバッファに読み込む。 a=peek(buf,0) //バッファの先頭からaに1バイト読み込む。 //peekは1バイト読み込む関数。 b=wpeek(buf,1) //バッファの先頭から1バイト進んだところから、bに2バイト読み込む //wpeekは2バイト読み込む関数。 c=lpeek(buf,3) //バッファの先頭から3バイト進んだところから、cに4バイト読み込む //lpeekは4バイト読み込む関数。 mes a mes b mes c
このような形でよろしいでしょうか?



Lock on Hsp

リンク

2017/4/9(Sun) 16:51:16|NO.79045

皆さんのおかげでできました!ありがとうございます!



ONION software Copyright 1997-2018(c) All rights reserved.