第7話
「さてと、Fランクで受けられる依頼はと。」
母と二人でギルドの掲示板にやってきた。
ふむふむ。近隣に自生している薬草採取と、倉庫の掃除、ペットの犬探しに
子供の世話か。
やっぱり、薬草採取かな。1人で出来そうだし、他の依頼は、辛そうだもんな。
薬草採取は常設依頼で、受付に持っていって受理してもらわなくてもいい依頼だ。
期限も特になし。
依頼表に、薬草の絵が書いてあって分かりやすかった。
この、薬草を集めればいいのかなんて、考えていたら、母が話しかけてきた。
「どう? 出来そうな依頼ある?」
「うん、薬草採取してみようかな」
「そうね、薬草なら町の中にも生えてる場所あるし、そうしましょっか」
『そうなんだ、町の中にも生えてるんだ』
母に手をつながれ、ギルドを出る。
「カラムちゃんは、私のそばを離れちゃだめだからね」
「うん、わかった」
ギルドを出てから、北の方角へ向かって歩き、しばらくすると、
ちょっとした広場があった。
木の囲いがあって、何本かの木と、草が生えている。
ちょっとした公園くらいの広さだ。
「ここなら、キズール草が見つかると思うわ」
キズール草は、HPを少し回復するポーションの材料だ。
「わかった! 探してくる」
遠くの方に、3人くらい人がいた。
あの人達も、薬草採取かな?
下を見ながら、キズール草を探す。
木の下とか、色々と探し回ったが、ちっとも見つからない。
「ない」
ふと、こぼした言葉を、母が聞いていた。
「諦めちゃだめよ、きっと見つかるから」
「わかった」
とりあえず、考えてみた。
薬草って、ゲームでいうとアイテムだよな。
薬草をひろうと、プレイヤーが使えるアイテムとして登録されるはず。
アイテムテーブルって、確かあったな。
player_items これか!
sql> select * from player_items\G
*************************** 1. row ***************************
Id: 1
ItemId: 9
Quantity: 1
*************************** 2. row ***************************
Id: 2
ItemId: 11
Quantity: 1
2 rows in set (0.00 sec)
リュックの中には確か、水袋と、パンが入れてあったはず。
コード変換のテーブル? いや、アイテムテーブルそのものがあったな。
あった!
sql> select Id, Name, Description from items where id in('9','11')\G
*************************** 1. row ***************************
Id: 9
Name: 水袋
Description: 水を入れておける袋
*************************** 2. row ***************************
Id: 11
Name: パン(小)
Description: ちょっと硬めのパン、少しの間空腹を紛らわす
ことが出来る
2 rows in set (0.00 sec)
ビンゴ!
ベルトにナイフもあるんだけど、これはアイテムじゃないのかな?
ベルトから、ナイフを外して、リュックに入れてみた。
sql> select * from player_items\G
*************************** 1. row ***************************
Id: 1
ItemId: 9
Quantity: 1
*************************** 2. row ***************************
Id: 2
ItemId: 11
Quantity: 1
*************************** 3. row ***************************
Id: 3
ItemId: 120
Quantity: 1
3 rows in set (0.00 sec)
お! アイテムが増えた。
sql> select Id, Name, Description from items where id in('9','11','120')\G
*************************** 1. row ***************************
Id: 9
Name: 水袋
Description: 水を入れておける袋
*************************** 2. row ***************************
Id: 11
Name: パン(小)
Description: ちょっと硬めのパン、少しの間空腹を紛らわす
ことが出来る
*************************** 3. row ***************************
Id: 120
Name: ナイフ(小)
Description: 初心者用のナイフ。解体にも使える。
3 rows in set (0.00 sec)
なるほど、ナイフは装備してたって事か。
地面にしゃがみこんで、草を見ながら、なにやら、考え込んでいる様に見える
カラムを見て、母が話しかける。
「カラムちゃん、その草はキズール草じゃないわよ」
「うん。」
ちょっと、聞いてみるか
「母さん、キズール草って、大体同じ場所に生えてる?」
母は、ちょっと考え込む様な感じで、答えてくれた。
「そうね、私が見つけた時って、いつもあの辺なんだけど、
行ってみる?」
「うん」
母が連れて来てくれた場所に行くと、キズール草が見つかった。
「あった!」
ニッコリする母。
「良かったわね、カラムちゃん」
「ありがとう、母さん!」
大体いつも同じ場所に生えているキズール草。
スポーンか!
キズール草(10/10) みたいな感じで、一つ取ると(9/10) になって
設定された時間で、キズール草が生えて、(10/10) になる。
もしかすると、これかも。
となると、スポーンテーブル? あるかなー
ないな…
イベントテーブルとかにあったりするかな?
うーん…
イベントテーブルに、リスポーンタイム(RespawnTime)とかあるな
とりあえず、キズール草をリュックに入れてと。
sql> select * from player_items\G
*************************** 1. row ***************************
Id: 1
ItemId: 9
Quantity: 1
*************************** 2. row ***************************
Id: 2
ItemId: 11
Quantity: 1
*************************** 3. row ***************************
Id: 3
ItemId: 120
Quantity: 1
*************************** 4. row ***************************
Id: 4
ItemId: 30
Quantity: 1
4 rows in set (0.00 sec)
キズール草のItemId は、30か
sql> select Id, Name, Description from items where id='30'\G
*************************** 1. row ***************************
Id: 30
Name: キズール草
Description: HPを少し回復する。ポーションの素材
よーし! 更なるハック!
イベントテーブルに登録されているキズール草を検索だ!
sql> select count(*) from events where ItemId='30';
+-----------------------+
| count(*) |
+-----------------------+
| 450|
+-----------------------+
1 rows in set (0.00 sec)
おっと、450個も登録されてる!
どうやって、特定すればいいんだ?
この場所のキズール草…この場所、この場所か!
確か、players テーブルに、緯度、経度の座標データが登録されていたはず!
俺のIdは、1236 だったから、SQLは、Id指定にする。
Like 文は、検索遅いからね。
sql> select * from players where Id='1236';
*************************** 1. row ***************************
Id: 1236
Name: カラム
~
~
latitude : 35.738449
longitude : 139.327006
elevation : 130.8461303710938
緯度、経度、標高のデータが登録されてる。
これ、俺が移動したら、データ変わるかな?
試してみよう!
カラムは立ち上がると、広場の奥の方へと駆け出した。
「ちょっと、カラムちゃん!?」
地面を見つめたまま、固まっていたかと思えば、いきなり駆け出したカラムに
困惑する母。
「いきなり走ったら、危ないわよ!」
よし、この辺でいいかな。
ダッシュしたから、疲れた…
sql> select * from players where Id='1236';
*************************** 1. row ***************************
Id: 1236
Name: カラム
~
~
latitude : 35.738449
longitude : 139.3264414
elevation : 130.8461303710938
お! 変わってる!
前のデータをヒストリーで見ながら、比べてみた。
よし、これなら、リアルタイムで俺の移動データが書き換わっているって事だな。
という訳で、さっきキズール草を採取した場所の、座標で、イベントデータを検索だ!
sql> select * from events where ItemId='30'
and latitude like '%35.738%' and longitude like '%139.327%'\G
*************************** 1. row ***************************
Id: 129
Name: キズール草を集めよう!
PlayerId: NULL
ItemId: 30
EventKind: 002
EventFlag: 001
RespawnTime: 86400
MaxQuantity: 10
Quantity: 9
latitude : 35.738449
longitude : 139.327006
elevation : 130.8461303710938
~
~
うおーあったよ!
RespawnTimeが 86400 か。
俺はこの数字に見覚えがあった。
エンジニアなら、日付の計算とか、しょっちゅうするもので、
その度にググってたけど、まぁ、この数字は、よく使った。
86400
そう、1日は、86400秒なのだ。
たぶんというか、おそらく、1日たつと、あの場所に、キズール草が生えるって事だと思う。
ほんとにそうかな?
分だったり、マイクロsec かもしれないけど。
まぁ、要確認だな。
明日、もう一度ここに来てみよう。
次に気になったのは、MaxQuantity
最大個数かな。それが 10個。
Quantity は、個数? それが 9個。
1個取ったから、9個になったって事?
この構造だと、プレイヤー毎のテーブルじゃないみたいだから、1人が10個取ったら
無くなっちゃうのかな? 速いもの勝ち?
イベントリセットみたいなのが、あって、個数がリセットされる仕組みがあるかも
しれないから、なんともだな。
とりあえずだ。
色んな事がわかったぞ!
にししし
「カラムちゃん! ちょっと大丈夫? いきなり走り出したと思ったら、地面を見ながら
変な笑いかたしてるし…」
あっ、やべ。見られてた。
「ははは…薬草探しが楽しくて…ははは」
母は、困ったような顔をして、俺を見てた。
その後、俺は、キズール草のイベントデータを検索し、近くにある座標を特定した。
「なにこれ?」
自分のリュックも、母の持っていたリュックも、キズール草で一杯になっていた。
町中を歩き回ったけどね。
「カラムちゃんの行く所、行く所に、キズール草が生えてるなんて
凄すぎるわね! しかも、町の中でこんなに!」
不思議そうな顔をしっぱなしの母。
「今日はもう、これくらいでいいんじゃないかしら?」
「うん、そうするよ」
「キズール草を、ギルドに売りに行こうかな。」
「ギルドカードがないけど、大丈夫かしら?」
「さっきも言ったけど、たぶん、大丈夫。登録済だし、だめなら、
母さんのギルドカードで、完了報告してもいいし」
「そんなの、だめよ。カラムちゃんの依頼達成なんだから!
明日、売りに行けばいいんじゃない?」
母はこういうが、俺は、今日、キズール草を売るつもりだった。
なぜなら
「んーでも、キズール草は、早めに売った方が、素材の価値が高いから、
今日取ったものは、今日売りたいな。」
「そっかぁ。カラムちゃんが、そう言うなら、そうしましょうか」
「うん」
お読み頂きありがとうございます。
ブックマーク、評価など頂けるととても励みになります。