added painting system
parent
731bc554b4
commit
74eb2ea4a6
63
init.lua
63
init.lua
|
@ -7,6 +7,69 @@ ju52.min_speed = 5
|
|||
ju52.max_engine_acc = 9 --5
|
||||
ju52.lift = 11 --12
|
||||
|
||||
ju52.colors ={
|
||||
black='#2b2b2b',
|
||||
blue='#0063b0',
|
||||
brown='#8c5922',
|
||||
cyan='#07B6BC',
|
||||
dark_green='#567a42',
|
||||
dark_grey='#6d6d6d',
|
||||
green='#4ee34c',
|
||||
grey='#9f9f9f',
|
||||
magenta='#ff0098',
|
||||
orange='#ff8b0e',
|
||||
pink='#ff62c6',
|
||||
red='#dc1818',
|
||||
violet='#a437ff',
|
||||
white='#FFFFFF',
|
||||
yellow='#ffe400',
|
||||
}
|
||||
|
||||
ju52.skin_texture = "ju52_painting.png"
|
||||
ju52.textures = {
|
||||
"ju52_metal.png", --bequilha
|
||||
"ju52_brown.png", --assentos pilotos
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
ju52.skin_texture, --proteção motor
|
||||
"ju52_metal.png", "ju52_black.png", --escapamento
|
||||
ju52.skin_texture, --superficies controle
|
||||
"ju52_compass.png", --bussola
|
||||
"ju52_white.png", --ponteiros
|
||||
"ju52_metal.png", "ju52_black.png", --manetes potencia
|
||||
ju52.skin_texture, --porta exterior
|
||||
"ju52_glass.png", -- vidro porta
|
||||
"ju52_bege.png", -- interno porta
|
||||
"ju52_engine.png", "ju52_black.png", --motor
|
||||
"ju52_engine.png", "ju52_black.png", --motores
|
||||
ju52.skin_texture, --fuselagem
|
||||
"ju52_black.png", -- aros mostradores
|
||||
"ju52_climber.png", --climbers
|
||||
"ju52_speed.png", --indicadores de velocidade
|
||||
"ju52_altimeter.png", --altimetros
|
||||
"ju52_fuel.png", --combustivel
|
||||
"ju52_compass_ind.png", --indicador da bussola
|
||||
"ju52_glass.png", -- vidros laterais
|
||||
ju52.skin_texture, -- estabilizador horizontal
|
||||
"ju52_bege.png", -- interior
|
||||
"ju52_metal.png", "ju52_black.png", --assoalho
|
||||
"ju52_metal.png", -- interno cabine - pes
|
||||
"ju52_bege.png", -- interior cauda
|
||||
ju52.skin_texture, --trem de pouso
|
||||
"ju52_panel_color.png", "ju52_black.png", --painel
|
||||
"ju52_panel_color.png", "ju52_black.png", --console de manetes
|
||||
"ju52_black.png", "ju52_metal.png", --pneu da bequilha
|
||||
ju52.skin_texture, --estabilizador vertical
|
||||
"ju52_black.png", "ju52_metal.png", --pneus do trem principal
|
||||
"ju52_glass.png", "ju52_metal.png", -- vidros parabrisa
|
||||
ju52.skin_texture, --asas
|
||||
--"ju52_red.png", --
|
||||
--"ju52_white.png", --asas
|
||||
}
|
||||
|
||||
dofile(minetest.get_modpath("ju52") .. DIR_DELIM .. "ju52_global_definitions.lua")
|
||||
dofile(minetest.get_modpath("ju52") .. DIR_DELIM .. "ju52_crafts.lua")
|
||||
dofile(minetest.get_modpath("ju52") .. DIR_DELIM .. "ju52_control.lua")
|
||||
|
|
|
@ -58,7 +58,14 @@ initial_properties = {
|
|||
|
||||
})
|
||||
|
||||
ju52.skin_texture = "ju52_skin_war1.png"
|
||||
function ju52.textures_copy()
|
||||
local tablecopy = {}
|
||||
for k, v in pairs(ju52.textures) do
|
||||
tablecopy[k] = v
|
||||
end
|
||||
return tablecopy
|
||||
end
|
||||
|
||||
minetest.register_entity("ju52:ju52", {
|
||||
initial_properties = {
|
||||
physical = true,
|
||||
|
@ -69,49 +76,7 @@ minetest.register_entity("ju52:ju52", {
|
|||
backface_culling = true,
|
||||
mesh = "ju52_mine.b3d",
|
||||
stepheight = 0.6,
|
||||
textures = {
|
||||
"ju52_metal.png", --bequilha
|
||||
"ju52_brown.png", --assentos pilotos
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
"ju52_brown.png", --assentos passageiros
|
||||
ju52.skin_texture, --proteção motor
|
||||
"ju52_metal.png", "ju52_black.png", --escapamento
|
||||
ju52.skin_texture, --superficies controle
|
||||
"ju52_compass.png", --bussola
|
||||
"ju52_white.png", --ponteiros
|
||||
"ju52_metal.png", "ju52_black.png", --manetes potencia
|
||||
ju52.skin_texture, --porta exterior
|
||||
"ju52_glass.png", -- vidro porta
|
||||
"ju52_bege.png", -- interno porta
|
||||
"ju52_engine.png", "ju52_black.png", --motor
|
||||
"ju52_engine.png", "ju52_black.png", --motores
|
||||
ju52.skin_texture, --fuselagem
|
||||
"ju52_black.png", -- aros mostradores
|
||||
"ju52_climber.png", --climbers
|
||||
"ju52_speed.png", --indicadores de velocidade
|
||||
"ju52_altimeter.png", --altimetros
|
||||
"ju52_fuel.png", --combustivel
|
||||
"ju52_compass_ind.png", --indicador da bussola
|
||||
"ju52_glass.png", -- vidros laterais
|
||||
ju52.skin_texture, -- estabilizador horizontal
|
||||
"ju52_bege.png", -- interior
|
||||
"ju52_metal.png", "ju52_black.png", --assoalho
|
||||
"ju52_metal.png", -- interno cabine - pes
|
||||
"ju52_bege.png", -- interior cauda
|
||||
ju52.skin_texture, --trem de pouso
|
||||
"ju52_panel_color.png", "ju52_black.png", --painel
|
||||
"ju52_panel_color.png", "ju52_black.png", --console de manetes
|
||||
"ju52_black.png", "ju52_metal.png", --pneu da bequilha
|
||||
ju52.skin_texture, --estabilizador vertical
|
||||
"ju52_black.png", "ju52_metal.png", --pneus do trem principal
|
||||
"ju52_glass.png", "ju52_metal.png", -- vidros parabrisa
|
||||
ju52.skin_texture, --asas
|
||||
--"ju52_red.png", --
|
||||
--"ju52_white.png", --asas
|
||||
},
|
||||
textures = ju52.textures_copy(),
|
||||
},
|
||||
textures = {},
|
||||
driver_name = nil,
|
||||
|
@ -141,6 +106,8 @@ minetest.register_entity("ju52:ju52", {
|
|||
_wing_configuration = ju52.wing_angle_of_attack,
|
||||
_passengers_base = {},
|
||||
_passengers = {},
|
||||
_color = nil,
|
||||
_skin = 'ju52_skin_lufthansa.png',
|
||||
|
||||
get_staticdata = function(self) -- unloaded/unloads ... is now saved
|
||||
return minetest.serialize({
|
||||
|
@ -150,6 +117,8 @@ minetest.register_entity("ju52:ju52", {
|
|||
stored_power_lever = self._power_lever,
|
||||
stored_driver_name = self.driver_name,
|
||||
stored_flap = self._flap,
|
||||
stored_color = self._color,
|
||||
stored_skin = self._skin,
|
||||
})
|
||||
end,
|
||||
|
||||
|
@ -163,6 +132,8 @@ minetest.register_entity("ju52:ju52", {
|
|||
self._power_lever = data.stored_power_lever
|
||||
self.driver_name = data.stored_driver_name
|
||||
self._flap = data.stored_flap
|
||||
self._color = data.stored_color
|
||||
self._skin = data.stored_skin
|
||||
--minetest.debug("loaded: ", self._energy)
|
||||
end
|
||||
ju52.setText(self)
|
||||
|
@ -217,6 +188,12 @@ minetest.register_entity("ju52:ju52", {
|
|||
self._passengers_base[10]=minetest.add_entity(pos,'ju52:seat_base')
|
||||
self._passengers_base[10]:set_attach(self.object,'',{x=6.5,y=6.7,z=-30.5},{x=0,y=0,z=0})
|
||||
|
||||
if self._color ~= nil then
|
||||
ju52.paint(self.object, self._color, ju52.skin_texture)
|
||||
else
|
||||
ju52.set_skin(self.object, self._skin, ju52.skin_texture)
|
||||
end
|
||||
|
||||
self.object:set_armor_groups({immortal=1})
|
||||
end,
|
||||
|
||||
|
@ -271,7 +248,11 @@ minetest.register_entity("ju52:ju52", {
|
|||
end
|
||||
|
||||
local is_attached = false
|
||||
if puncher:get_attach() == self.object then is_attached = true end
|
||||
local seat = puncher:get_attach()
|
||||
if seat then
|
||||
local plane = seat:get_attach()
|
||||
if plane == self.object then is_attached = true end
|
||||
end
|
||||
|
||||
local itmstck=puncher:get_wielded_item()
|
||||
local item_name = ""
|
||||
|
@ -320,7 +301,13 @@ minetest.register_entity("ju52:ju52", {
|
|||
if self.hp_max <= 0 then
|
||||
ju52.destroy(self)
|
||||
end
|
||||
|
||||
else
|
||||
local _,indx = item_name:find('dye:')
|
||||
if indx and self._engine_running == false then
|
||||
ju52.paint_formspec(self.owner)
|
||||
itmstck:set_count(itmstck:get_count()-1)
|
||||
puncher:set_wielded_item(itmstck)
|
||||
end
|
||||
end
|
||||
|
||||
end,
|
||||
|
@ -359,11 +346,13 @@ minetest.register_entity("ju52:ju52", {
|
|||
local passenger = minetest.get_player_by_name(self._passenger)
|
||||
if passenger then ju52.dettach_pax(self, passenger) end
|
||||
end
|
||||
for i = 10,1,-1
|
||||
for i = 10,1,-1
|
||||
do
|
||||
if self._passengers[i] then
|
||||
local passenger = minetest.get_player_by_name(self._passengers[i])
|
||||
if passenger then ju52.dettach_pax(self, passenger) end
|
||||
if self._passengers[i] then
|
||||
local passenger = minetest.get_player_by_name(self._passengers[i])
|
||||
if passenger then ju52.dettach_pax(self, passenger) end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -42,7 +42,64 @@ function ju52.pilot_formspec(name)
|
|||
minetest.show_formspec(name, "ju52:pilot_main", basic_form)
|
||||
end
|
||||
|
||||
function ju52.paint_formspec(name)
|
||||
local basic_form = table.concat({
|
||||
"formspec_version[3]",
|
||||
"size[8.1, 11.8]",
|
||||
},"")
|
||||
|
||||
basic_form = basic_form.."image_button[1,1.0;3,1;ju52_p_lufthansa.png;lufthansa;Lufthansa;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,2.1;3,1;ju52_p_luftwaffe.png;luftwaffe;Luftwaffe;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,3.2;3,1;ju52_white.png^[multiply:#2b2b2b;black;Black;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,4.3;3,1;ju52_white.png^[multiply:#0063b0;blue;Blue;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,5.4;3,1;ju52_white.png^[multiply:#8c5922;brown;Brown;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,6.5;3,1;ju52_white.png^[multiply:#07B6BC;cyan;Cyan;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,7.6;3,1;ju52_white.png^[multiply:#567a42;dark_green;Dark Green;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,8.7;3,1;ju52_white.png^[multiply:#6d6d6d;dark_grey;Dark Gray;false;true;]"
|
||||
basic_form = basic_form.."image_button[1,9.8;3,1;ju52_white.png^[multiply:#4ee34c;green;Green;false;true;]"
|
||||
|
||||
basic_form = basic_form.."image_button[4.1,1.0;3,1;ju52_white.png^[multiply:#9f9f9f;grey;Gray;false;true;]"
|
||||
basic_form = basic_form.."image_button[4.1,2.1;3,1;ju52_white.png^[multiply:#ff0098;magenta;Magenta;false;true;]"
|
||||
basic_form = basic_form.."image_button[4.1,3.2;3,1;ju52_white.png^[multiply:#ff8b0e;orange;Orange;false;true;]"
|
||||
basic_form = basic_form.."image_button[4.1,4.3;3,1;ju52_white.png^[multiply:#ff62c6;pink;Pink;false;true;]"
|
||||
basic_form = basic_form.."image_button[4.1,5.4;3,1;ju52_white.png^[multiply:#dc1818;red;Red;false;true;]"
|
||||
basic_form = basic_form.."image_button[4.1,6.5;3,1;ju52_white.png^[multiply:#a437ff;violet;Violet;false;true;]"
|
||||
basic_form = basic_form.."image_button[4.1,7.6;3,1;ju52_white.png^[multiply:#ffe400;yellow;Yellow;false;true;]"
|
||||
basic_form = basic_form.."image_button[4.1,8.7;3,1;ju52_white.png^[multiply:#ffffff;white;White;false;true;]"
|
||||
|
||||
minetest.show_formspec(name, "ju52:paint", basic_form)
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname == "ju52:paint" then
|
||||
local name = player:get_player_name()
|
||||
local plane_obj = ju52.getPlaneFromPlayer(player)
|
||||
local ent = plane_obj:get_luaentity()
|
||||
|
||||
ent.initial_properties.textures = ju52.textures_copy() --reset the textures first
|
||||
local search_string = ju52.skin_texture --then set to find the defaults
|
||||
|
||||
if fields.lufthansa then ju52.set_skin(plane_obj, "ju52_skin_lufthansa.png", search_string) end
|
||||
if fields.luftwaffe then ju52.set_skin(plane_obj, "ju52_skin_luftwaffe.png", search_string) end
|
||||
|
||||
if fields.black then ju52.paint(plane_obj, "#2b2b2b", search_string) end
|
||||
if fields.blue then ju52.paint(plane_obj, "#0063b0", search_string) end
|
||||
if fields.brown then ju52.paint(plane_obj, "#8c5922", search_string) end
|
||||
if fields.cyan then ju52.paint(plane_obj, "#07B6BC", search_string) end
|
||||
if fields.dark_green then ju52.paint(plane_obj, "#567a42", search_string) end
|
||||
if fields.dark_grey then ju52.paint(plane_obj, "#6d6d6d", search_string) end
|
||||
if fields.green then ju52.paint(plane_obj, "#4ee34c", search_string) end
|
||||
|
||||
if fields.grey then ju52.paint(plane_obj, "#9f9f9f", search_string) end
|
||||
if fields.magenta then ju52.paint(plane_obj, "#ff0098", search_string) end
|
||||
if fields.orange then ju52.paint(plane_obj, "#ff8b0e", search_string) end
|
||||
if fields.pink then ju52.paint(plane_obj, "#ff62c6", search_string) end
|
||||
if fields.red then ju52.paint(plane_obj, "#dc1818", search_string) end
|
||||
if fields.violet then ju52.paint(plane_obj, "#a437ff", search_string) end
|
||||
if fields.yellow then ju52.paint(plane_obj, "#ffe400", search_string) end
|
||||
if fields.white then ju52.paint(plane_obj, "#ffffff", search_string) end
|
||||
minetest.close_formspec(name, "ju52:paint")
|
||||
end
|
||||
if formname == "ju52:passenger_main" then
|
||||
local name = player:get_player_name()
|
||||
local plane_obj = ju52.getPlaneFromPlayer(player)
|
||||
|
|
|
@ -249,6 +249,40 @@ function ju52.checkAttach(self, player)
|
|||
return false
|
||||
end
|
||||
|
||||
--painting
|
||||
function ju52.paint(object, colstr, search_string)
|
||||
if colstr then
|
||||
local entity = object:get_luaentity()
|
||||
entity._color = colstr
|
||||
entity._skin = ju52.skin_texture
|
||||
local l_textures = ju52.textures_copy()
|
||||
for _, texture in ipairs(l_textures) do
|
||||
local indx = texture:find(search_string)
|
||||
if indx then
|
||||
l_textures[_] = search_string .."^[multiply:".. colstr
|
||||
end
|
||||
end
|
||||
object:set_properties({textures=l_textures})
|
||||
end
|
||||
end
|
||||
|
||||
function ju52.set_skin(object, skin_image_name, search_string)
|
||||
if skin_image_name then
|
||||
local entity = object:get_luaentity()
|
||||
entity._color = nil
|
||||
entity._skin = skin_image_name
|
||||
local l_textures = ju52.textures_copy()
|
||||
for _, texture in ipairs(l_textures) do
|
||||
local indx = texture:find(search_string)
|
||||
if indx then
|
||||
l_textures[_] = skin_image_name
|
||||
--minetest.chat_send_all(l_textures[_])
|
||||
end
|
||||
end
|
||||
object:set_properties({textures=l_textures})
|
||||
end
|
||||
end
|
||||
|
||||
function ju52.start_engine(self)
|
||||
if self._engine_running then
|
||||
self._engine_running = false
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.5 KiB |
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Loading…
Reference in New Issue