[解決済み] Lua: グローバルな 'mapfinishes' (nil 値) に対して演算を実行しようとした。
2022-02-10 17:28:01
質問
Luaで動くゲームで、プレイヤーがマップを終了したときに、この特定のローカル関数がトリガーされるように設定しようとしています。以下はそのコードです。
local function setDrRanks( ply )
local name = SQLStr( ply:Nick() )
local sid = ply:SteamID()
drsql:query( "SELECT MapFinishes from dr_exp WHERE SteamID = '"..sid.."'", function( q, data )
local row = data[1]
if ( row ) then
mapfinishes = row["Mapfinishes"]
end
drsql:query( "REPLACE into dr_exp (`SteamID`, `PlayerName`, `MapFinishes`) VALUES('"..sid.."', "..name..", '"..(mapfinishes+1).."');" );
end )
end
この関数はlua関数を介してSQLに挿入するもので、最初に実行したときはプレイヤーが0回のフィニッシュだったため、正常に実行されました。1になると、mapfinishesの値に単純に+1することを拒否されました。不思議なのは、プレイヤーが0フィニッシュのときは100%動作するようで、1にしてくれますが、1になってしまうと、それ以上追加してくれません。受け取ったエラーは
attempt to perform arithmetic on global 'mapfinishes' (a nil value)
どなたかお分かりになる方はいらっしゃいますか?よろしくお願いします。
解決方法は?
local row = data[1]
if ( row ) then
mapfinishes = row["Mapfinishes"]
end
drsql:query( "REPLACE into dr_exp (`SteamID`, `PlayerName`, `MapFinishes`) VALUES('"..sid.."', "..name..", '"..(mapfinishes+1).."');" )
問題は式にあります。
mapfinishes+1
を使わずに実行されてしまったようです。
mapfinishes
が設定される。このことから
if
ループが実行されなかったのは
row
は
nil
または
false
. Luaでは、0と空文字列は真理値であることを忘れないでください。
もう一つの可能性は
row["Mapfinishes"]
は、それ自体が
nil
そうすると
mapfinishes
残る
nil
.
通常、グローバル変数は最小限またはゼロにするのがよいでしょう。もし、あなたが
mapfinishes
をこの関数の中だけで宣言するのが適切でしょう。
local
.
関連
-
[解決済み] LUA がグローバルな nil 値のインデックスを作成しようとした
-
[解決済み] Lua 5.1の__callメタメソッドは、実際にはどのように動作するのでしょうか?
-
[解決済み] Luaでのインクリメント
-
[解決済み] "ローカルへのインデックス作成試行..." なぜこのエラーが発生するのでしょうか?
-
[解決済み] WoW Lua - 1.13でスペルランクを取得する方法 (クラシック)
-
[解決済み] Lua が nil を呼び出そうとした
-
lua loadlib 関数がグローバルな 'loadlib' (nil 値) を呼び出そうとする
-
グローバルな 'setmetatable' (nil 値) または同様のものを呼び出そうとすると、lua がエラーを報告する。
-
Lua基本関数 type、tonumber、tostring、pcall、print
-
[解決済み】Luaの文字列をintに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] .luaスクリプトを実行するにはどうしたらいいですか?[クローズド]。
-
[解決済み] "Unable to cast value to Object" エラーメッセージ
-
[解決済み] WoW Lua - 1.13でスペルランクを取得する方法 (クラシック)
-
[解決済み] LuaでNewLine( \n) alternative?
-
[解決済み] トーチ[cpuType]の文法説明
-
lua が表示される xxx: nil 値 (フィールド 'getn') を呼び出そうとする 解決方法
-
luaの一般的なエラーの種類
-
Lua基本関数 type、tonumber、tostring、pcall、print
-
[解決済み] テーブルをコンソールにダンプするには?
-
[解決済み] Luaでファイルからデータを読み込む方法