したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |
レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。

改造・制作スレ part6

1名無しさん:2013/06/26(水) 00:02:37 ID:???
改造・オリシナ制作などはこちらで。
過去に似たような質問があるかもしれないので、極力調べてから質問しましょう。

ヴァーレントゥーガまとめwiki シナリオ製作講座
http://www28.atwiki.jp/vahren_ency/pages/411.html


改造・制作スレ
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1250722590/l50
改造・制作スレ part2
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1282244590/l50
改造・制作スレ part3
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1305281909/l50
改造・制作スレ part4
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1331214703/
改造・制作スレ part5
http://jbbs.livedoor.jp/bbs/read.cgi/computer/42292/1350187379/

993名無しさん@不意の鯖落ちにご用心:2014/03/27(木) 16:34:04 ID:???
story tyakkutyakku
{
friend = sc1
fight = on
if(inBattle(tyakku)){
msg(イベントtyakkucallを読み込みます)
battleEvent(tyakkucall) or event(tyakkucall) or call(tyakkucall) ←ここ
}
}

event tyakkucall
{
set(i,0)
msg(イベントtyakkucallを読み込みました)
rif(getTime() > 1000 && i == 0){
msg(100秒経ちました)
storeAliveUnit(goblin, @gnumber)
pushv(@gnumber, n)
msg(ゴブリンの数は&n&体です)
set(i,n)
}
}

質問です
戦闘開始から100秒後のユニットの数を調べる上のスクリプトを作りました
battleEvent(tyakkucall)の場合、msg(イベントtyakkucallを読み込みました)は表示されませんでしたが100秒後にちゃんと数えてくれました
event(tyakkucall)の場合、msg(イベントtyakkucallを読み込みました)が戦闘開始直後に表示され100秒経っても数を数えません
call(tyakkucall)の場合、msg(イベントtyakkucallを読み込みます)以降には進まないようです
これらの違いはイベント関数の中で使える関数に制限があるといことですか?

またこれとまったく同じスクリプトを使ってもbattleEvent(tyakkucall)すらmsg(イベントtyakkucallを読み込みます)以降に進まない場合があります
それはなぜですか?

994名無しさん@不意の鯖落ちにご用心:2014/03/27(木) 17:29:28 ID:???
992ですけど
配置時は常に部隊メンバー数で間隔が一定になることが判明しました
バグではなかったようです

btl_lineshiftで、配置時も間隔を指定できる仕様になると
開きすぎが起こらなくなって良くなると思いました

995名無しさん@不意の鯖落ちにご用心:2014/03/27(木) 21:52:23 ID:???
>>993
戦闘シーンでのevent()は戦闘終了後に処理されるそうで、call()は、まあちょっと放置された関数ですし……
で、battleEvent()でのイベント呼び出しなんですが基本if文とrif文のみ取り出すもんと覚悟したほうがいいみたいです。
なので
event tyakkucall
{
if(isEvent()){
set(i,0)
msg(イベントtyakkucallを読み込みました)
}
rif(getTime() > 1000 && i == 0){
msg(100秒経ちました)
storeAliveUnit(goblin, @gnumber)
pushv(@gnumber, n)
msg(ゴブリンの数は&n&体です)
set(i,n)
}
}
みたいな書き換えはいかがでしょう

996名無しさん@不意の鯖落ちにご用心:2014/03/27(木) 22:18:09 ID:???
あと2段落目ですが、event tyakkucallの1,2行目が読み込まれず変数iに何らかの理由で0以外が入っていた場合
rif文は読んでても無反応に見えるんじゃないかな、と想像します。

997名無しさん@不意の鯖落ちにご用心:2014/03/28(金) 18:03:47 ID:???
>>995
ありがとうございます
うまくいくようになりました
最後のbattleEvent()が進まない場合があるのを調べてみると
どうやら戦闘する場所によって起こるが起こらないかが決まるようです

上のスクリプトはむなしい努力で使っているのですが、zone0 = s2, s3, s4, s5, s6, s7で指定された雪国では戦闘中battleEventが読み込まれません
ここ以外では正常に機能しました

998名無しさん@不意の鯖落ちにご用心:2014/03/28(金) 18:45:20 ID:???
魔法攻撃ユニットに積極的に前衛させるにはどうスクリプト弄ればいいか教えてください

999名無しさん@不意の鯖落ちにご用心:2014/03/28(金) 19:52:21 ID:???
>>998
自己解決しました

1000名無しさん@不意の鯖落ちにご用心:2014/03/28(金) 21:18:42 ID:???
>>997
試してみましたが当方のむなしい努力では問題スポットでも動きました。
問題の再現ができないので想像なんですが、数値変数に0代入したときなぜか動かなくなるケースがあるんですよね。
なので
event tyakkucall
{
if(isEvent()){
set(i,1)
msg(イベントtyakkucallを読み込みました)
}
rif(getTime() > 1000 && i == 1){
msg(100秒経ちました)
storeAliveUnit(goblin, @gnumber)
pushv(@gnumber, n)
msg(ゴブリンの数は&n&体です)
set(i,2)
}
}
といった0使わない形に変えて一度試してみてはいかがでしょう。
なおiにnが入ってないため余所で使ってる場合はまた書き換えが必要になってしまいますが……
フワッとした説明で申し訳ない




掲示板管理者へ連絡 無料レンタル掲示板