Aggiunto modello del proiettile. Iniziato a fixare l'orientamento dello stesso.

master
_Zaizen_ 2020-05-17 10:33:49 +02:00
parent c264a5c929
commit e3a35d7f71
8 changed files with 181 additions and 5 deletions

View File

@ -127,4 +127,6 @@ arena_lib.on_death("quake", function(arena, p_name, reason)
end
end
end)

102
_weapons/bazookaNew.lua Normal file
View File

@ -0,0 +1,102 @@
function quake.register_bullet(name,def)
local bullet = {}
bulllet.initial_properties = {
name = name,
physical = def.physical,
visual = def.visual,
mesh = def.mesh,
visual_size = def.visual_size,
tiles = def.tiles,
textures = def.textures,
collisionbox = def.collisionbox,
speed = def.speed,
damage = def.damage,
explosion_range = def.explosion_range,
durata = def.durata,
explosion_damage = def.explosion_damage,
lastpos = { },
def = def,
}
bullet._destroy = function()
if (self.initial_properties.def.on_destroy) then
self.initial_properties.def.on_destroy(self);
end
--self.initial_properties.timer = 0
--self.initial_properties.user = nil
--self.initial_properties.p_name = nil
self.object:remove()
end
bullet.on_activate = function(self, staticdata)
if staticdata ~= "" and staticdata ~= nil then
self.p_name = staticdata
self.user = minetest.get_player_by_name(staticdata)
end
self.object:set_acceleration({ x=0, y=0, z=0 })
end
bullet.timer = 0
bullet.p_name = ""
bullet.user = nil
bullet.check_timer() = function(self, timer)
minetest.after(timer)
if(self.object) then
self:_destroy()
return
end
end
bullet.on_step = function(self, dtime)
local pos = self.object:get_pos()
self.timer = self.object:get_luaentity().initial_properties.timer + dtime
minetest.chat_send_all("timer:"..timer)
--self.initial_properties.timer = self.initial_properties.timer + dtime
local node = minetest.env:get_node(pos)
if self.timer > (1/(2*self.initial_properties.speed)) and self.timer < self.initial_properties.durata then
local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y-1.475,z=pos.z},0.5)
if objs then
for k, obj in ipairs(objs) do
--check da aggiungere
--minetest.chat_send_all("p_name"..self.initial_properties.p_name)
if (obj:get_entity_name() ~= self.object:get_entity_name() and obj:is_player()) then
quake.shoot(self.initial_properties.p_name, obj, self.initial_properties.damage, false)
self:_destroy();
return;
end
end
end
elseif self.initial_properties.timer >= self.initial_properties.durata then
self:_destroy()
return
else
local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y-1.475,z=pos.z},0.5)
if objs then
for k, obj in ipairs(objs) do
--check da aggiungere
--minetest.chat_send_all("p_name"..self.initial_properties.p_name)
if (obj:get_entity_name() ~= self.object:get_entity_name() and obj:get_player_name() ~= self.initial_properties.p_name and obj:is_player()) then
quake.shoot(self.initial_properties.p_name, obj, self.initial_properties.damage, false)
self:_destroy();
return;
end
end
end
end
if (self.initial_properties.lastpos.x ~= nil) then
if (node.name ~= "air") then
self:_destroy();
return;
end
end
self.initial_properties.lastpos = { x=pos.x, y=pos.y, z=pos.z };
end
minetest.register_entity(name, bullet)
end

View File

@ -12,7 +12,6 @@ function quake.register_bullet(name, def)
visual = def.visual,
visual_size = def.visual_size,
mesh = def.mesh,
tiles = def.tiles,
textures = def.textures,
collisionbox = def.collisionbox,
speed = def.speed,

View File

@ -1,10 +1,16 @@
quake.register_bullet("quake:rocket",{
physical = false,
visual = "mesh",
visual_size = {x=1, y=1, z=1},
mesh = "railgun.obj",
tiles = {"quake_railgun.png"},
textures = "quake_railgun.png",
visual_size = {x=1, y=1},
mesh = "rocket.obj",
textures = {
"quake_bullet_rocket.png",
"quake_bullet_rocket.png",
"quake_bullet_rocket.png",
"quake_bullet_rocket.png",
"quake_bullet_rocket.png",
"quake_bullet_rocket.png",
},
collisionbox = {0,0,0,0,0,0},
speed = 18,
damage = 10,

View File

@ -118,6 +118,7 @@ function shoot_bullet(user, pointed_thing, bullet_name, pos_head, dir)
z=(dir.z * speed),
})
bullet:set_acceleration({ x=dir.x, y=dir.y, z=dir.z })
bullet:set_rotation({ x=0, y=dir.y, z=dir.z })
--bullet:setacceleration({ x=0, y=0, z=0 })
end

12
models/rocket.mtl Normal file
View File

@ -0,0 +1,12 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl Material
Ns 323.999994
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2

54
models/rocket.obj Normal file
View File

@ -0,0 +1,54 @@
# Blender v2.82 (sub 7) OBJ File: ''
# www.blender.org
mtllib rocket.mtl
o Cube
v 1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 4.633310
v -1.000000 1.000000 4.633310
v 1.000000 1.000000 4.633310
v 1.000000 -1.000000 4.633310
vt 0.625000 0.500000
vt 0.875000 0.500000
vt 0.875000 0.750000
vt 0.625000 0.750000
vt 0.625000 0.000000
vt 0.375000 0.000000
vt 0.375000 0.000000
vt 0.625000 0.000000
vt 0.625000 0.250000
vt 0.375000 0.250000
vt 0.125000 0.500000
vt 0.375000 0.500000
vt 0.375000 0.750000
vt 0.125000 0.750000
vt 0.375000 0.750000
vt 0.625000 0.750000
vt 0.625000 1.000000
vt 0.375000 1.000000
vt 0.125000 0.750000
vt 0.875000 0.750000
vn 0.0000 1.0000 0.0000
vn -1.0000 0.0000 0.0000
vn 0.0000 -1.0000 0.0000
vn 1.0000 0.0000 0.0000
vn 0.0000 0.0000 -1.0000
vn 0.0000 0.0000 1.0000
usemtl Material
s off
f 1/1/1 5/2/1 7/3/1 3/4/1
f 7/5/2 8/6/2 9/7/2 10/8/2
f 8/6/2 7/5/2 5/9/2 6/10/2
f 6/11/3 2/12/3 4/13/3 8/14/3
f 2/12/4 1/1/4 3/4/4 4/13/4
f 6/10/5 5/9/5 1/1/5 2/12/5
f 12/15/6 11/16/6 10/17/6 9/18/6
f 8/14/3 4/13/3 12/15/3 9/19/3
f 3/4/1 7/3/1 10/20/1 11/16/1
f 4/13/4 3/4/4 11/16/4 12/15/4

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B