diff options
| author | Hume2 <teratux.mail@gmail.com> | 2018-08-28 21:58:41 +0200 | 
|---|---|---|
| committer | Hume2 <teratux.mail@gmail.com> | 2018-08-28 21:58:41 +0200 | 
| commit | d55b6cb0e7b205cf60aaadab35c7e2311b8bb96c (patch) | |
| tree | 103629a8c70df20674c2fa6b391fa88bf61fa77c | |
| parent | 3f788eddd335594e1177cd3e2f9734e02872b1ca (diff) | |
Dismount the player when falling
| -rw-r--r-- | init.lua | 35 | 
1 files changed, 23 insertions, 12 deletions
| @@ -43,11 +43,28 @@ local bike = {  	stepheight = 0.6,  	driver = nil, +	old_driver = nil,  	v = 0,  	last_v = 0,  	removed = false  } +local function dismount_player(bike) +	local name = bike.driver:get_player_name() +	bike.object:set_velocity({x = 0, y = 0, z = 0}) +	bike.v = 0 + +	bike.old_driver = bike.driver +	bike.driver = nil +	bike.old_driver:set_detach() +	default.player_attached[name] = false +	--default.player_set_animation(bike.old_driver, "stand" , 30) +	local pos = bike.old_driver:get_pos() +	pos = {x = pos.x, y = pos.y + 0.2, z = pos.z} +	minetest.after(0.1, function() +		bike.old_driver:set_pos(pos) +	end) +end  function bike.on_rightclick(self, clicker)  	if not clicker or not clicker:is_player() then @@ -55,18 +72,7 @@ function bike.on_rightclick(self, clicker)  	end  	local name = clicker:get_player_name()  	if self.driver and clicker == self.driver then -		self.object:set_velocity({x = 0, y = 0, z = 0}) -		self.v = 0 - -		self.driver = nil -		clicker:set_detach() -		default.player_attached[name] = false -		--default.player_set_animation(clicker, "stand" , 30) -		local pos = clicker:get_pos() -		pos = {x = pos.x, y = pos.y + 0.2, z = pos.z} -		minetest.after(0.1, function() -			clicker:set_pos(pos) -		end) +		dismount_player(self)  	elseif not self.driver then  		local attach = clicker:get_attach()  		if attach and attach:get_luaentity() then @@ -133,6 +139,11 @@ end  function bike.on_step(self, dtime) +	if self.object:get_velocity().y < -10 and self.driver ~= nil then +		dismount_player(self) +		return +	end +  	local current_v = get_v(self.object:get_velocity()) * get_sign(self.v)  	self.v = (current_v + self.v*3) / 4  	if self.driver then | 
