挑発スキル作成
167 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 21:32:09 ID:IJsfgkCz
VXと格闘してたのだけど、どうにもギブアップ。
質問させてくだちぃ。
「挑発」を作ろうと思って、Game_Unitの53行目以降を見よう見真似で
以下のように書き換えてみたところ、63行目(下から3つ目のend)で
Syntax Errorが出やがります。
def random_target
roulette = []
for member in existing_members
member.odds.times do
roulette.push(member)
end
if member.states.include?($data_states[26]) then #ここから追加
12.times {
roulette.push(member)
}
end #ここまで追加
end
return roulette.size > 0 ? roulette[rand(roulette.size)] : nil
end
実のところ、まだRubyを全然理解できていないので、
他人の素材スクリプトを参考にしながらツギハギしてるような状態です。
たぶん、分かってる人から見たら根本的に何かがおかしいのだと思いますが、
それが自分では分かりません('A`)
どうぞ、ご指導お願いしますm(_ _)m
168 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 21:42:04 ID:RJ/Gfk2q
>>167
コメントの前に全角スペース入ってるけどそれは大丈夫?
170 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 21:56:35 ID:IJsfgkCz
>>168
あああありがとう!!
全角スペースが入ってるだけでエラーが出るんですね・・・
しかし。りあえずエラーは出なくなったのですが、
今度は挑発としての効果が出てないみたいです・・・
行いたかった処理は、
「 挑発ステート(ステートID26番)を持っている場合、
roulette配列に12回、多く書き込む」
ということなのですが・・・
171 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 22:31:01 ID:RJ/Gfk2q
>>170
部分的には間違っていないように見える。
ステートがちゃんとついてないとか、他の素材がrandom_targetを
上書きしてるとか、別の原因じゃないかな?
173 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 23:11:37 ID:IJsfgkCz
>>171
度々ありが㌧です。
ステートが付加されていること、他の素材でrandom_targetが再定義されてないか、
確認しました。問題なさそうです。
ところで。
data_statesの番号って0から数えるんですよね?
データベース上で 027 なら、配列では26ですよね?
一応、26と27の両方で試してみましたが、どっちでも同じでした・・・
174 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/14(水) 00:02:06 ID:1Wi642YC
>>173
ステートの監査方法が違う。
修正箇所だけに絞れば
if member.state?(26)
12.times {
roulette.push(member)
}
end
が正解。
ただし、今の修正箇所のままだと
ポジションが前衛なら36回、中衛なら24回、後衛なら12回
追加される。(狙われやすさ回ループしてるところに入ってるから)
それがイヤなら改造箇所変えるといい。
ちなみに個人的には判定とループどっちも増やすくらいなら
今の改造よりも
Game_Actorの
odds(狙われやすさ)
を修正したほうがキレイじゃないかと思った。
「 挑発ステート(ステートID26番)を持っている場合、
roulette配列に12回、多く書き込む」
ならばこんな感じで。
def odds
if self.state?(26)
return 16 - self.class.position
else
return 4 - self.class.position
end
end
敵も挑発ありうるんなら
Game_Enemyも同じような改造。
ちなみにデータベース上のIDは配列の順番とは関係ないよ。
ステータスはIDをきちんと情報としてもってます。
175 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/14(水) 00:20:20 ID:ElSUhm5h
>>173
配列の0番目はnilなので、データベースの番号と一緒で良い。
>>174
狙われやすさ回ループには入ってないと思うけど・・・
176 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/14(水) 00:26:19 ID:1Wi642YC
あ、ごめーん。カンチガイ☆
貼り付けるとこ間違えた。
でもちゃんと動くから許して。
VXと格闘してたのだけど、どうにもギブアップ。
質問させてくだちぃ。
「挑発」を作ろうと思って、Game_Unitの53行目以降を見よう見真似で
以下のように書き換えてみたところ、63行目(下から3つ目のend)で
Syntax Errorが出やがります。
def random_target
roulette = []
for member in existing_members
member.odds.times do
roulette.push(member)
end
if member.states.include?($data_states[26]) then #ここから追加
12.times {
roulette.push(member)
}
end #ここまで追加
end
return roulette.size > 0 ? roulette[rand(roulette.size)] : nil
end
実のところ、まだRubyを全然理解できていないので、
他人の素材スクリプトを参考にしながらツギハギしてるような状態です。
たぶん、分かってる人から見たら根本的に何かがおかしいのだと思いますが、
それが自分では分かりません('A`)
どうぞ、ご指導お願いしますm(_ _)m
168 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 21:42:04 ID:RJ/Gfk2q
>>167
コメントの前に全角スペース入ってるけどそれは大丈夫?
170 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 21:56:35 ID:IJsfgkCz
>>168
あああありがとう!!
全角スペースが入ってるだけでエラーが出るんですね・・・
しかし。りあえずエラーは出なくなったのですが、
今度は挑発としての効果が出てないみたいです・・・
行いたかった処理は、
「 挑発ステート(ステートID26番)を持っている場合、
roulette配列に12回、多く書き込む」
ということなのですが・・・
171 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 22:31:01 ID:RJ/Gfk2q
>>170
部分的には間違っていないように見える。
ステートがちゃんとついてないとか、他の素材がrandom_targetを
上書きしてるとか、別の原因じゃないかな?
173 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/13(火) 23:11:37 ID:IJsfgkCz
>>171
度々ありが㌧です。
ステートが付加されていること、他の素材でrandom_targetが再定義されてないか、
確認しました。問題なさそうです。
ところで。
data_statesの番号って0から数えるんですよね?
データベース上で 027 なら、配列では26ですよね?
一応、26と27の両方で試してみましたが、どっちでも同じでした・・・
174 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/14(水) 00:02:06 ID:1Wi642YC
>>173
ステートの監査方法が違う。
修正箇所だけに絞れば
if member.state?(26)
12.times {
roulette.push(member)
}
end
が正解。
ただし、今の修正箇所のままだと
ポジションが前衛なら36回、中衛なら24回、後衛なら12回
追加される。(狙われやすさ回ループしてるところに入ってるから)
それがイヤなら改造箇所変えるといい。
ちなみに個人的には判定とループどっちも増やすくらいなら
今の改造よりも
Game_Actorの
odds(狙われやすさ)
を修正したほうがキレイじゃないかと思った。
「 挑発ステート(ステートID26番)を持っている場合、
roulette配列に12回、多く書き込む」
ならばこんな感じで。
def odds
if self.state?(26)
return 16 - self.class.position
else
return 4 - self.class.position
end
end
敵も挑発ありうるんなら
Game_Enemyも同じような改造。
ちなみにデータベース上のIDは配列の順番とは関係ないよ。
ステータスはIDをきちんと情報としてもってます。
175 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/14(水) 00:20:20 ID:ElSUhm5h
>>173
配列の0番目はnilなので、データベースの番号と一緒で良い。
>>174
狙われやすさ回ループには入ってないと思うけど・・・
176 名前: 名無しさん@お腹いっぱい。 [sage] 投稿日: 2008/05/14(水) 00:26:19 ID:1Wi642YC
あ、ごめーん。カンチガイ☆
貼り付けるとこ間違えた。
でもちゃんと動くから許して。
無料レンタルWIKIサービス