У меня проблема с моим кодом, и я не могу найти преступника. Я отлаживал это по-разному, и все они подошли так, как будто проблема не существует.Почему эти значения установлены на неправильные переменные?
Этот код используется для игры в шахматы, которую я делаю в Roblox, которая используется для создания руд.
--[[
an ore can have one of these different 'spawn types' that is predefined when the game starts which dictates what 'OreTypes' it can have,
and if there are multiple OreTypes under one SpawnType,
then percent values will be given controlling the odds of one OreType being chosen over the other.
]]--
OreSpawnTypes = {}
-- all the different ore Types
OreTypes = {}
--[[
creates a new ore type with its name, the ore's base value,
and variables defining how it looks in game.
ignore 'chance=0' that's just for defining purposes
]]--
function add_ore_type(n,ov,bc,mat,ref,tran) --
OreTypes[n] = {
BrickColor=bc,
Material=mat,
Reflectance=ref,
Transparency=tran,
Name=n,
ore_value=ov,
chance=0
}
end
--[[
when used in 'add_spawn_type' to keep track of the previous ore type,
that was just created by it, to be used in 'add_ore'
to add the different ores do the ore type
--]]
local name = ""
--[[
creates a new spawn type, and sets the name variable to the key
of the ore type listed in the OreSpawnTypes table
--]]
function add_spawn_type(n)
OreSpawnTypes[n] = {}
name=n
end
--[[
adds one of the defined ores from 'OreTypes' and with a number form 1-100,
adds it to the previously created spawntype
--]]
function add_ore(ch,n)
local o = OreTypes[n]
o.chance = ch
OreSpawnTypes[name][#OreSpawnTypes[name]+1] = o
end
-- what I use to view the table
function show_spawn_types()
print("------------------------------------------------")
for k,v in pairs(OreSpawnTypes) do
print(k.."=")
for k2,v2 in pairs(v) do
print(" "..k2.."=")
for k3,v3 in pairs(v2) do
print(" "..k3.."="..v3)
end
end
end
end
-- this next part is where the ore types are set and the ores are set to each one.
add_ore_type("grass",2,"Earth green","Plastic",0,0)
add_ore_type("ground",4,"Earth green","Slate",0,0)
add_ore_type("rock",8,"Dark stone grey","Slate",0,0)
add_spawn_type("grass")
add_ore(100,"grass") --<NOTE ARGUMENT ONE
add_spawn_type("grass/ground")
add_ore(50,"grass") --<NOTE ARGUMENT ONE
add_ore(50,"ground") --<NOTE ARGUMENT ONE
add_spawn_type("ground")
add_ore(100,"ground") --<NOTE ARGUMENT ONE
add_spawn_type("rock")
add_ore(100,"rock") --<NOTE ARGUMENT ONE
show_spawn_types()
Ниже приведен список руд, которые я планирую добавить. некоторые из них используются в приведенном выше коде.
--[[
0= all_grass
1= grass/ground
2= ground
3= rock
4= rock/stone
5= stone
6= stone/limestone/slate
7= gold deposit
8= silver deposit
9= nickel deposit
10= copper deposit
11= emerald deposit
12= saphire deposit
13= ruby deposit
14= diamond deposit
15= rare mineral deposit
16= super rare ores 1
17= super rare ores 2
18= radioactive ores
--]]
Проблема в том, что в show_spawn_types()
выходе, он показывает:
grass=
1=
Transparency=0
BrickColor=Earth green
Reflectance=0
chance=50 --<NOTE THESE VARIABLES
Material=Plastic
Name=grass
ore_value=2
rock=
1=
Transparency=0
BrickColor=Dark stone grey
Reflectance=0
chance=100 --<NOTE THESE VARIABLES
Material=Slate
Name=rock
ore_value=8
ground=
1=
Transparency=0
BrickColor=Earth green
Reflectance=0
chance=100 --<NOTE THESE VARIABLES
Material=Slate
Name=ground
ore_value=4
grass/ground=
1=
Transparency=0
BrickColor=Earth green
Reflectance=0
chance=50 --<NOTE THESE VARIABLES
Material=Plastic
Name=grass
ore_value=2
2=
Transparency=0
BrickColor=Earth green
Reflectance=0
chance=100 --<NOTE THESE VARIABLES
Material=Slate
Name=ground
ore_value=4
Если вы заметили, что первый аргумент в функции add_ore()
и сравнить их с их значениями на выходе, на «траву» Единственная связанная руда типа spawn имеет вероятность появления 50%, когда я устанавливаю ее равной 100 в функции. Кроме того, первая связанная руда имеет шанс появления нереста на 100, когда она должна быть равна 50.
Я проверил это по-разному, я положил функцию print()
внутри функции добавления руды, в которой установлена вероятностная переменная появления. И в этих отладках это показывает, что переменная задана правильно, но дело в том, что ... Нигде в коде я не устанавливаю случайную переменную после этого, если значения не получат «смешение» каким-то образом, но даже тогда Я проверил, чтобы установить значение в нужный тип.
Есть ли что-либо, что мне не хватает или я нашел ошибку в lua ???
ПРИМЕЧАНИЕ. Я приглашаю вас скопировать и вставить код в командную строку lua, отредактировать код и поместить в print fuctions для отладки частей кода. Он должен работать правильно.
Мне это интересно, но какой из них меньше взимает плату за процессор? Я предполагаю, что это metatables. – Andrew900460
Метатемы немного более подвержены налогообложению при вычислении, они применяются после сбоя поиска, поэтому они могут выполнять два поиска, но они могут быть намного эффективнее с точки зрения памяти. Однако с такими крошечными таблицами ни один из них не имеет значения, и чистый поддерживаемый код имеет ** большую ** большую ценность. – ryanpattison