2

まず第一に、私は経験の浅いコーダーで、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

基本的に、指定された文字 (この場合はコンマ) でフレーズを区切ります。

4

1 に答える 1