サイト別設定の書き出しは推奨しません!!
最新のわんコメではサイト別設定から
・ニコニ広告
・引用
・クルーズ
・リクエスト
・配信延長
・ランクイン
・ランク変動
・来場
・アンケート
・配信終了時刻通知
の情報がプラグイン経由で書き出すことができる
しかし4月7日現在この情報を送信するとほとんどのVCIではエラーが出てしまい、正常に動かなくなってしまう。
今後公式がどのような対応を取るかは不明だが、一応対策を取っておきたい、または対応しておきたいという人のために記録として書いておきます。
今回はこの中から扱いが特殊な「ニコニ広告」について説明します。
まずニコニコ広告を送った場合どのような情報が送られるか見ていこう!
ニコ生ギフトAPIの場合
{"id":"ni-nicoad-EhoKEgkbe7lNfg-WARHZux17-MrnmBDA8ZvLAQ",
"liveId":"system",
"userId":"onecomme.system",
"name":"ニコニコ",
"timestamp":{"year":2025,"month":4,"day":7,"hour":18,"minute":4,"second":18,"ms":425},
"isOwner":false,
"hasGift":true,
"comment":"【広告貢献1位】悠里さんが100ptニコニ広告しました",
"displayName":"ニコニコ",
"profileImageUrl":"(省略)",
"type":"niconico-gift"}
共通受信APIの場合
{"type":"niconico-gift",
"author":"ニコニコ",
"comment":"【広告貢献1位】悠里さんが100ptニコニ広告しました",
"timestamp":{"year":2025,"month":4,"day":7,"hour":18,"minute":4,"second":18,"ms":425},
"iconUrl":"(省略)"}
という情報がそれぞれに送られています
ギフトの場合は"price"のデータも一緒に送られるのですが、広告の場合"price"の情報がないデータがギフト用のアドレスとして送信されているのです。
つまりVCIのスクリプト上で"price"を参照する処理を入れているとそこでエラーが出てしまうということなんですね。
これを回避するためにはどうすればいいのか、というと
①そもそも"price"を参照しない
または、
②"price"があるときだけ実行する
json.parseでOSCのデータを展開するときに例えば
local oscData = json.parse(content)
if oscData.price ~= nil then
--処理を書く
end
のようにする
では逆に広告が来たときに演出などを発生させたい場合は
local oscData = json.parse(content)
if oscData.price ~= nil then
--ギフトの処理
else
--広告の処理
end
とすればいいでしょう。
私の場合はめんどくさいので
oscPrice = oscData.price or 0
if oscPrice == 0 then
--無料ギフトの処理
end
として無料ギフトとまとめて処理をしています
おわりに
現在この処理がされているVCIはほとんどなくほぼ確実にエラーが出てしまいます
なのでサイト別設定の書き出しは推奨しません(公式で書いてほしい)
どうしても対応したいという方だけやってみてください
(あまり大きな声では言えませんが私のVCIは対応済みです!!)