■過去の記事
【NPC露店 第1回】NPC露店の仕様
NPC露店実装の第2回です。
今回は看板をクリックすると商品リストを表示する、まで実装しました。
(前回は看板表示のみ)
通常の露店はカート内アイテム情報を渡しているのに対し、
今回はNPCに露店に出品するアイテム情報を保持し、渡すようにしました。
NPCがアイテムを持ってる感じです。
露店に関するパケットも幾つかあるのですが、
露店キャラのプレイヤー指定をNPC指定もできるように、
カート内アイテム情報をNPCアイテム情報に置き換えるだけで
難なくクリアしております。
さて、商品の表示と情報の保持は出来ましたが、
次回は実際に商品が買える所までやってみようと思います。
■map.h
・npc_vending構造体の定義を追加
struct npc_vending {
int value;
struct item item;
};
・npc_data構造体のメンバに以下を追加
int vender_id;
int vend_num;
char shop_title[80];
struct npc_vending vending[MAX_VENDING];
■vending.*
・以下の関数を追加
int vending_opennpcvending(struct npc_data *nd, char *shop_title);
int vending_closenpcvending(struct npc_data *nd);
・【新規】vending_opennpcvending()
→NPCのアイテム情報、看板文字列をチェックして露店開設する関数
・【新規】vending_closenpcvending()
→NPC露店開設状態から閉鎖する関数
・【変更】vending_vendinglistreq()
→露店アイテムリスト要求
→引数のIDからblock_list型に変換、PCとNPCに両対応
■clif.*
・以下の関数を追加
void clif_npcvendinglist(struct map_session_data *sd, struct npc_data *vnd);
・【新規】clif_npcvendinglist()
→露店アイテムリスト表示(NPCアイテム情報から読み取り)
・【変更】clif_getareachar_npc()
→NPC表示
→NPCに露店フラグが立っていれば看板表示