Would you like to react to this message? Create an account in a few clicks or log in to continue.

1日1回のみNPC script

Go down

1日1回のみNPC script Empty 1日1回のみNPC script

投稿 by 構築さん 2014-06-03, 17:06

案1. 一日一回だけNPCと会話できる

 これは、NPCのscript で日付を判断するか何かして一日一回だけ動かすものです。
 23:58 に会話しても、00:00 にはまた会話できるが23:59までもう会話できない 0:00 になれば会話できる、
 script の先頭でどの様な判断をすればできるのか実現方法はないでしょうか。

案2. 一定の時間が経過するとNPCと会話できる

 これは、NPCのscript で時間か何かを判断して前回の会話から一定時間(例えば6時間)が経過したら動かすものです。
 SQLのデータベースに前回の時間を記憶しておく!?とかが必要なのかも。
 script の先頭でどの様な判断をすればできるのか実現方法はないでしょうか。

以下※

例えば、SQLに下の変更を加えて、

Code:
ALTER TABLE `characters` ADD COLUMN `lastDate1` date NOT NULL DEFAULT '0000-00-00';
ALTER TABLE `characters` ADD COLUMN `lastDate2` date NOT NULL DEFAULT '0000-00-00';
ALTER TABLE `characters` ADD COLUMN `lastDate3` date NOT NULL DEFAULT '0000-00-00';
ALTER TABLE `characters` ADD COLUMN `lastTime1` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00';
ALTER TABLE `characters` ADD COLUMN `lastTime2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00';

1日1回動くNPCを3体まで作れる様に、一定時間で動くNPCを2体まで作れる様に、する例です。

NPCのscriptで使用できる次の様なルーチンをJAVAで用意したら出来るのでしょうか?
・getCurrentDate()
 現在の日付を返す
・getLastDate( int n )
 nは1~3で、SQLから日付をもらう。(nが1の時、lastDate1の値をもらう)
・setLastDate( int n )
 nは1~3で、SQLに現在の日付を書き込む。(nが3の時、lastDate2に現在の日付を書き込む)
・getCurrentTime()
 現在の時間を返す
・getLastTime( int n )
 nは1~2で、SQLから時間をもらう。(nが1の時、lastTime1の値をもらう)
・setLastTime( int n )
 nは1~2で、SQLに現在の時間を書き込む。(nが2の時、lastTime2に現在の時間を書き込む)

案.1 は

Code:
if( getCurrentDate() != getLastDate(3) ) {

  /* NPC 処理 */

 setLastDate(3);
}

案.2 は

Code:
if( getCurrentTime() > getLastTime(2) + /* 必要な経過時間 */ ) {

  /* NPC 処理 */

 setLastTime(2);
}
構築さん
構築さん
Admin

Posts : 193
Join date : 2014/05/29

https://maplescience.forumjap.com

トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可