謎に重い自作関数

引数に渡したentityに 引数に渡したパラメータをもとにした性能の 弾丸を発射させる関数なのですが こいつを実行させると妙に重くなります ※2個目の関数です
function entityHeadVec(e: entity) :: vector:
set {_vec} to vector from {_e}'s head to location 1 meter infront of {_e}'s head
return {_vec}

function mobShootGun(entity: entity,dmg: number, prc: number, kb: number, speed: number, spread: number):
# 雪玉発射
make {_entity} shoot snowball at speed 0
# 変数設定
set {_projectile} to last shot projectile
# 重力消去
set gravity of {_projectile} to false
# 射撃者設定
set shooter of {_projectile} to {_entity}
# 弾のばらつきを作るためのランダムなvector生成
set {_spreadVec} to vector randNum(-1,1),randNum(-1,1),randNum(-1,1)
# 弾の直進vector生成
set {_shootVec} to entityHeadVec({_entity})
# spreadVecの強さをランダムで再設定
set normal length of {_spreadVec} to randNum(0,{_spread})*0.1
# velocityを消去
delete velocity of {_projectile}
# 再push
push {_projectile} {_shootVec}
push {_projectile} {_spreadVec}
# 弾速をspeedに基づいて再設定
set normal length of velocity of {_projectile} to {_speed}
#broadcast "%{_dmg}, {_prc}, {_spread}%"
# metadataで性能を保存
set metadata value "damage" of {_projectile} to {_dmg}
set metadata value "piercing" of {_projectile} to {_prc}
set metadata value "kb" of {_projectile} to {_kb}
function entityHeadVec(e: entity) :: vector:
set {_vec} to vector from {_e}'s head to location 1 meter infront of {_e}'s head
return {_vec}

function mobShootGun(entity: entity,dmg: number, prc: number, kb: number, speed: number, spread: number):
# 雪玉発射
make {_entity} shoot snowball at speed 0
# 変数設定
set {_projectile} to last shot projectile
# 重力消去
set gravity of {_projectile} to false
# 射撃者設定
set shooter of {_projectile} to {_entity}
# 弾のばらつきを作るためのランダムなvector生成
set {_spreadVec} to vector randNum(-1,1),randNum(-1,1),randNum(-1,1)
# 弾の直進vector生成
set {_shootVec} to entityHeadVec({_entity})
# spreadVecの強さをランダムで再設定
set normal length of {_spreadVec} to randNum(0,{_spread})*0.1
# velocityを消去
delete velocity of {_projectile}
# 再push
push {_projectile} {_shootVec}
push {_projectile} {_spreadVec}
# 弾速をspeedに基づいて再設定
set normal length of velocity of {_projectile} to {_speed}
#broadcast "%{_dmg}, {_prc}, {_spread}%"
# metadataで性能を保存
set metadata value "damage" of {_projectile} to {_dmg}
set metadata value "piercing" of {_projectile} to {_prc}
set metadata value "kb" of {_projectile} to {_kb}
こいつを何とか改善する方法はありませんか…?
No description
14 Replies
月猫ch
月猫chOP13mo ago
なるほど… となると、一般playerの発射した玉も怪しいんですかね 一応400x400です うえぇぇ…
unnnnnnnnnnn
unnnnnnnnnnn13mo ago
これ解決しました?
月猫ch
月猫chOP13mo ago
結局してないですね… なんだか射出した弾がplayerに当たると重くなるみたいで
unnnnnnnnnnn
unnnnnnnnnnn13mo ago
set metadata value "damage" of {_projectile} to {_dmg}
set metadata value "piercing" of {_projectile} to {_prc}
set metadata value "kb" of {_projectile} to {_kb}
set metadata value "damage" of {_projectile} to {_dmg}
set metadata value "piercing" of {_projectile} to {_prc}
set metadata value "kb" of {_projectile} to {_kb}
これを読み取ってる部分見せてほしい こっちの環境でやってみたら全く重くならなかったから
月猫ch
月猫chOP13mo ago
Agames突然コンソールいじれなくなっちゃった…
月猫ch
月猫chOP13mo ago
No description
unnnnnnnnnnn
unnnnnnnnnnn13mo ago
ええ 今どうしてるの
月猫ch
月猫chOP13mo ago
月猫ch
月猫chOP13mo ago
@unnnnnnnnnnn 持ってこれました 一部補足ですが、getGun~とか 銃のスペックを取得してるような変数は 事前にymlから読み取って変数に保存されたデータを呼び出しているだけなので 特に問題はないと思います ちなみに現状ありえそうだと思っているのは rotate_() ※rotationを変えるpacket送信関数 を player以外( それこそゾンビとか)に適応しようとして重くなってるのかなって感じです
unnnnnnnnnnn
unnnnnnnnnnn13mo ago
on cs shootってskriptで出した雪玉にも反応するの? setしたmetadataをどこで使ってるか見たい 多分どこかにon cs shootで設定したmetadataとmobShootGunで雪玉出すときに設定したmetadataを両方処理してるイベントがあるはずで
on damage:
event-projectile is set
metadata value "damage" of event-projectile is set
set damage to metadata value "damage" of event-projectile
on damage:
event-projectile is set
metadata value "damage" of event-projectile is set
set damage to metadata value "damage" of event-projectile
みたいなのない? これが本当ならそこでおかしくなってそうだなって思った
unnnnnnnnnnn
unnnnnnnnnnn13mo ago
GitHub
SkRage/src/main/java/com/akon/skrage/skript/syntaxes/CrackShot/EvtC...
Skript Addon. Contribute to akon1248/SkRage development by creating an account on GitHub.
月猫ch
月猫chOP13mo ago
月猫ch
月猫chOP13mo ago
月猫ch
月猫chOP4w ago
これ後々普通に原因分かったわ パーティクルの処理でチェックするために ブロックに衝突したかを確認する処理があったんだけど 弾を連射したときに、単純に球数分 get block at ~ が増えてたせいだった IQ3

Did you find this page helpful?