伺的なフォーラム

伺か向けのフォーラム。自由に使ってください。ユーザアカウント登録なしで閲覧できます。

共有アカウント: 774user / 774user

ログインしていません。

#26 2017-01-04 03:24:01

Nao
メンバー
登録日: 2016-11-07
投稿: 13

Re: 文/YAYAでの開発相談

YAYAの関数のオプションにnonoverlapがありますが

ダブルクリック0Head : nonoverlap
{
	PokeHead++
	if (PokeHead == 1){
		<<"
		テスト1
		">>

		<<"
		テスト2
		">>

		<<"
		テスト3
		">>
	}
	elseif (PokeHead >= 3){

		<<"
		テスト4
		">>

		<<"
		テスト5
		">>

		<<"
		テスト6
		">>
	}
	else{

		<<"
		テスト7
		">>

		<<"
		テスト8
		">>

		<<"
		テスト9
		">>

	}
}

と記述しても、連続して同じ文章が出力される場合があります。
条件分岐が入るとnonoverlapの動作が変わったりするのでしょうか?

編集者 Nao (2017-01-07 21:38:45)

オフライン

#27 2017-02-20 07:48:49

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 文/YAYAでの開発相談

あまりYAYAには詳しくないのですが、nonoverlapは分岐があると正しく動きません。
関数呼び出し時に出力候補が変わると、今までの抽選結果を破棄しているような気がします。
これが仕様かバグかは申し訳ないですが分かりません。

この場合、条件分岐の後にnonoverlapをつけた関数を用意するしかないと思います。

ダブルクリック0Head
{
	PokeHead++
	if (PokeHead == 1){
		ダブルクリック0Head1()
	}
	elseif (PokeHead >= 3){
		ダブルクリック0Head2()
	}
	else{
		ダブルクリック0Head3()
	}
}

ダブルクリック0Head1 : nonoverlap
{
	<<"
	テスト1
	">>

	<<"
	テスト2
	">>

	<<"
	テスト3
	">>
}
// 以下略

オフライン

#28 2017-06-21 11:30:50

akizawa230
メンバー
登録日: 2017-06-21
投稿: 4

Re: 文/YAYAでの開発相談

I want to make a list to know which ghost is in started,but the On_otherghostname and ghostexlist is not working, That only can get ghostexcount to know how many are there.
how can I get the list for the starting ghost's name?

オフライン

#29 2017-06-21 22:59:45

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 文/YAYAでの開発相談

ベースウェア「SSP」でのみ動作します。
関数「OnEventName」を呼び出すと、グローバル変数「ghostbootinglist」に現在起動しているゴーストの名前が配列で取得出来ます。
「さくらスクリプト」については、ukadocを参照してください。

OnFetchBootingGhostNameList
{
	_talk = ''
	_talk += '\![get,property,OnGetBootingGhostNameByPropertySystem'
	for _i = 0; _i < 100; _i++
	{
		_talk += ',activeghostlist.index(' + _i + ').name'
	}
	_talk += ']'
	_talk
}

OnGetBootingGhostNameByPropertySystem
{
	ghostbootinglist = IARRAY
	for _i = 0; _i < 100; _i++
	{
		if ( STRLEN(reference[_i]) > 0 )
		{
			ghostbootinglist ,= reference[_i]
		}
	}
}

「さくらスクリプト」を使うため、トークとして出力するので、注意してください。
起動と同時にゴースト名リストを取得したい場合、以下のような処理が必要です。

OnBoot
{
    _talk = ''
    _talk += OnFetchBootingGhostNameList()
    _talk += '\![embed,OnBootTalk]'
    _talk
}

OnBootTalk
{
    _talk = ''
    _talk += 'Hallo!\n'
    _talk += ANY(ghostbootinglist) + ' is booting.'
    _talk
}

オフライン

#30 2017-06-21 23:02:17

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 文/YAYAでの開発相談


関数「OnEventName」を呼び出す


関数「OnFetchBootingGhostNameList」を呼び出す

オフライン

#31 2017-06-22 20:05:26

akizawa230
メンバー
登録日: 2017-06-21
投稿: 4

Re: 文/YAYAでの開発相談

774user さんの発言:


関数「OnEventName」を呼び出す


関数「OnFetchBootingGhostNameList」を呼び出す

thank's at all!it's work!

オフライン

#32 2017-08-02 22:18:19

akizawa230
メンバー
登録日: 2017-06-21
投稿: 4

Re: 文/YAYAでの開発相談

Hi is me again!
I want to know the sakura and kero coordinate (X, Y) in the screen, how do I get that?
I want the kero follow the sakura's moving, and the kero just can move around the sakura.
And also I want to know how far they from each other

編集者 akizawa230 (2017-08-02 22:31:06)

オフライン

#33 2017-08-03 22:26:25

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 文/YAYAでの開発相談

#31
get,propetyを使います。
何が取得出来るのかは、ukadocを参照してください。

getCoordinate
{
    _ret = ''
    _ret += '\![get,property,OnGetCoordinate,'
    _ret += 'currentghost.scope(0).x,currentghost.scope(0).y,'
    _ret += 'currentghost.scope(1).x,currentghost.scope(1).y
    _ret += ']'
    _ret
}

OnGetCoordinate
{
    sakuraPosX = reference[0]
    sakuraPosY = reference[1]
    keroPosX = reference[2]
    keroPosX = reference[3]
}

// any event
OnRandomTalk
{
    _talk = ''
    _talk += getCoordinate()
    _talk += '\![embed,OnCoodinateTalk]'
    _talk
}

OnCoodinateTalk
{
    _talk = ''
    _talk = '\0My X is ' + sakuraPosX + '.'
    _talk = '\1My Y is ' + keroPosY + '.'
    _talk
}

オフライン

#34 2017-08-09 17:22:06

akizawa230
メンバー
登録日: 2017-06-21
投稿: 4

Re: 文/YAYAでの開発相談

774user さんの発言:

#31
get,propetyを使います。
何が取得出来るのかは、ukadocを参照してください。

getCoordinate
{
    _ret = ''
    _ret += '\![get,property,OnGetCoordinate,'
    _ret += 'currentghost.scope(0).x,currentghost.scope(0).y,'
    _ret += 'currentghost.scope(1).x,currentghost.scope(1).y
    _ret += ']'
    _ret
}

OnGetCoordinate
{
    sakuraPosX = reference[0]
    sakuraPosY = reference[1]
    keroPosX = reference[2]
    keroPosX = reference[3]
}

// any event
OnRandomTalk
{
    _talk = ''
    _talk += getCoordinate()
    _talk += '\![embed,OnCoodinateTalk]'
    _talk
}

OnCoodinateTalk
{
    _talk = ''
    _talk = '\0My X is ' + sakuraPosX + '.'
    _talk = '\1My Y is ' + keroPosY + '.'
    _talk
}

I have try this one, but that only can get the coord for last time, like

The first time X = 100, Y = 200, that show nothing.
Second time X = 150, Y = 200, that show X = 100, Y = 200
The third time X = 200, Y = 250, that show X = 150, Y = 200 etc.

オフライン

#35 2017-08-14 03:40:28

774user
774user
登録日: 2015-11-16
投稿: 78

Re: 文/YAYAでの開発相談

スクリプトの間違いは修正しているとします。
こちらの環境では、正しく現在の値が取れています。
get,propertyで取得した値を、すぐに使う場合、embedもしくはraiseで、別のイベントとして処理しなければなりません。
embedの解説も読んでみてください。

オフライン

Board footer