まず第一に、私は経験の浅いコーダーで、PiL を読み始めたばかりです。私が知っていることは 1 つか 2 つしかありませんが、すぐに学習して理解することができます。この方法は本当に不必要ですが、もっと学ぶために苦労したいと思っています。
さて、テストと言語の理解を深めるために、2 つの異なるファイルから 2 つの異なる値を取得してテーブルに格納しようとしています。
local gamemap = file.Read("addons/easymap/data/maplist.txt", "GAME")
local mapname = string.Explode( ",", gamemap )
local mapid = file.Read("addons/easymap/data/mapid.txt", "GAME")
local id = string.Explode( ",", mapid )
最後に mapname と id の 2 つの値を取得しています
それらを取得したら、使用することを知っています
for k, v in pairs(mapname)
ファイルから取得したデータに特定の値を与えるか、少なくともそれらを割り当てます。
しかし、両方のテーブルで行う必要があるのは、サーバーに特定のマップがある場合、マップ名が nil でない限りテーブルの値をチェックし、名前を取得したら、そのマップの値を取得して一致させることです。他のファイルのIDで。
たとえば、私は maplist.txt ファイル gm_construct にあり、それは最初のエントリ [1] であり、mapid.txt の対応する ID は 54321 であり、最初のエントリでもある [1] と言えます。
しかし、ここでサーバーの現在のマップをgame.GetMap
関数でチェックする必要があります。これで問題は解決しました。現在のマップを取得し、それを mapname テーブルと照合してから、id テーブルで対応する値 (gm_construct = 1) をチェックします。
たとえば、次のようなものになります
local mapdl = game.GetMap()
local match = mapname[mapdl]
if( match != nil )then --supposing the match isn't nil and it is in the table
--grab its table value, lets say it is 1 and match it with the one in the id table
これは、このhttp://pastebin.com/3652J8Pvのより複雑なバージョンです
不要なことはわかっていますが、このスクリプトを実行すると、スクリプトをさらに拡張するためのオプションが増えます。
TL;DR : 異なるテーブルとファイルからの 2 つの値を一致させる関数を見つける必要がありますが、最終的には両方のファイルで同じ順序 ([1] = [1]) になります。または、別のファイルから完全なテーブルを取得する方法。テーブルをグローバルにロードしてから別のファイルで取得して、そのファイルで使用できるかどうかはわかりません。
言い過ぎで申し訳ありませんが、私が住んでいるところでは、プログラミングを学びたい場合は、独学で行う必要があります。少なくとも大学までは、授業やそれに類するものを提供する学校はありません。高校を卒業するのはまだ先です。
編集: これは Garry の mod で使用するためのものです。string.Explode については、こちらで説明しています: http://wiki.garrysmod.com/page/string/Explode
基本的に、指定された文字 (この場合はコンマ) でフレーズを区切ります。