character classes
parent
9f2f4af2e9
commit
6b26b878fb
|
@ -1,7 +1,5 @@
|
|||
#Sizes
|
||||
hud_scaling = 1.5
|
||||
gui_scaling = 1.3
|
||||
font_size = 22
|
||||
|
||||
|
||||
player_transfer_distance = 60
|
||||
# Temperature variation for biomes.
|
||||
|
|
|
@ -41,6 +41,7 @@ end
|
|||
local function get_frmspc_stats(player)
|
||||
local meta = player:get_meta()
|
||||
local level = meta:get_int("level")
|
||||
local class = meta:get_string("class")
|
||||
local died = meta:get_int("invz:died")
|
||||
local died_player = meta:get_int("invz:died_player")
|
||||
local died_creature = meta:get_int("invz:died_creature")
|
||||
|
@ -54,6 +55,7 @@ local function get_frmspc_stats(player)
|
|||
local play_time = get_play_time(player)
|
||||
return [[
|
||||
label[0.25,0.25;]]..S("Level")..": "..tostring(level)..[[]
|
||||
label[0.25,0.5;]]..S("Class")..": "..playerz.classes[class].description..[[]
|
||||
label[0.25,1.0;]]..tostring(died).." "..S("times died")..[[]
|
||||
label[0.5,1.25;]]..tostring(died_player).." "..S("times died by player")..[[]
|
||||
label[0.5,1.5;]]..tostring(died_creature).." "..S("times died by creature")..[[]
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# textdomain: invz
|
||||
Class=Clase
|
||||
Server=Servidor
|
||||
Day=Día
|
||||
Night=Noche
|
||||
|
|
|
@ -25,9 +25,9 @@ function itemz.register_vessel(name, def)
|
|||
sounds = sound.glass(),
|
||||
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if def.replace_item then
|
||||
if def.replace_item and (pointed_thing.type == "node") then
|
||||
local pos = pointed_thing.above
|
||||
if helper.node_is_water(pos) then
|
||||
if pos and helper.node_is_water(pos) then
|
||||
local inv = user:get_inventory()
|
||||
if inv:room_for_item("main", def.replace_item) then
|
||||
itemstack:take_item(1)
|
||||
|
|
|
@ -36,7 +36,7 @@ function ladderz.register_ladder(name, def)
|
|||
wield_image = def.wield_image or def.inventory_image or def.tiles,
|
||||
paramtype2 = "wallmounted",
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
walkable = true,
|
||||
climbable = true,
|
||||
is_ground_content = false,
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 3, flammable = 2, ladder =1, deco = 1, build = 1},
|
||||
|
|
|
@ -6,6 +6,42 @@ local S = minetest.get_translator("playerz")
|
|||
|
||||
playerz = {}
|
||||
|
||||
playerz.classes = {
|
||||
quarreling = {
|
||||
description = S("Quarreling"),
|
||||
icon = "class_quarreling.png",
|
||||
attack_damage = 1.4,
|
||||
defense = 1.5,
|
||||
lucky = 0,
|
||||
magic_attack = 1,
|
||||
magic_defense = 1,
|
||||
speed = 1,
|
||||
jump = 1,
|
||||
},
|
||||
cunning = {
|
||||
description = S("Cunning"),
|
||||
icon = "toolz_irondagger_inv.png",
|
||||
attack_damage = 0.8,
|
||||
defense = 1.3,
|
||||
lucky = 1.5,
|
||||
magic_attack = 1,
|
||||
magic_defense = 1,
|
||||
speed = 1.3,
|
||||
jump = 1.2,
|
||||
},
|
||||
magician = {
|
||||
description = S("Magician"),
|
||||
icon = "class_magician.png",
|
||||
attack_damage = 1,
|
||||
defense = 1,
|
||||
lucky = 1,
|
||||
magic_attack = 1.8,
|
||||
magic_defense = 1.5,
|
||||
speed = 1,
|
||||
jump = 1,
|
||||
}
|
||||
}
|
||||
|
||||
-- Player animation blending
|
||||
-- Note: This is currently broken due to a bug in Irrlicht, leave at 0
|
||||
local animation_blend = 0
|
||||
|
@ -64,6 +100,8 @@ function playerz.is_attached(player)
|
|||
end
|
||||
end
|
||||
|
||||
--Gender
|
||||
|
||||
function playerz.set_gender(player, gender)
|
||||
if not(gender) or gender == "random" then
|
||||
if math.random(2) == 1 then
|
||||
|
@ -101,19 +139,6 @@ function playerz.get_gender_model(gender)
|
|||
return model
|
||||
end
|
||||
|
||||
function playerz.get_status(player)
|
||||
return player:get_meta():get_string("playerz:status")
|
||||
end
|
||||
|
||||
function playerz.set_status(player, status)
|
||||
return player:get_meta():set_string("playerz:status", status)
|
||||
end
|
||||
|
||||
function playerz.set_base_texture(player, gender)
|
||||
local meta = player:get_meta()
|
||||
meta:set_string("base_texture", gender)
|
||||
end
|
||||
|
||||
minetest.register_chatcommand("toggle_gender", {
|
||||
description = S("Change the gender, from male to female or viceversa"),
|
||||
func = function(name, param)
|
||||
|
@ -139,6 +164,137 @@ minetest.register_chatcommand("toggle_gender", {
|
|||
end,
|
||||
})
|
||||
|
||||
function playerz.get_gender_formspec(name)
|
||||
local text = S("Select your gender")
|
||||
|
||||
local formspec = {
|
||||
"formspec_version[3]",
|
||||
"size[3.2,2.476]",
|
||||
"label[0.375,0.5;", minetest.formspec_escape(text), "]",
|
||||
"image_button_exit[0.375,1;1,1;player_male_face.png;btn_male;"..S("Male").."]",
|
||||
"image_button_exit[1.7,1;1,1;player_female_face.png;btn_female;"..S("Female").."]"
|
||||
}
|
||||
|
||||
-- table.concat is faster than string concatenation - `..`
|
||||
return table.concat(formspec, "")
|
||||
end
|
||||
|
||||
function playerz.select_gender(player_name)
|
||||
minetest.show_formspec(player_name, "playerz:gender", playerz.get_gender_formspec(player_name))
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "playerz:gender" then
|
||||
return
|
||||
end
|
||||
local gender
|
||||
if fields.btn_male or fields.btn_female then
|
||||
if fields.btn_male then
|
||||
gender = "male"
|
||||
else
|
||||
gender = "female"
|
||||
end
|
||||
playerz.set_gender(player, gender)
|
||||
else
|
||||
playerz.set_gender(player, "random")
|
||||
end
|
||||
playerz.set_base_textures(player) --set the default base_texture
|
||||
playerz.set_cloths(player) --set the default clothes
|
||||
playerz.set_texture(player)
|
||||
playerz.select_class(player:get_player_name()) --select the character class
|
||||
end)
|
||||
|
||||
--Class
|
||||
|
||||
function playerz.apply_class(player, class)
|
||||
--Agility
|
||||
playerphysics.add_physics_factor(player, "speed", "class", playerz.classes[class].speed or 1)
|
||||
playerphysics.add_physics_factor(player, "jump", "class", playerz.classes[class].jump or 1)
|
||||
end
|
||||
|
||||
function playerz.set_class(player, class)
|
||||
if not(class) or class == "random" then
|
||||
local _random = math.random(3)
|
||||
if _random == 2 then
|
||||
class = "cunning"
|
||||
elseif _random == 1 then
|
||||
class = "quarreling"
|
||||
else
|
||||
class = "magician"
|
||||
end
|
||||
end
|
||||
player:get_meta():set_string("class", class)
|
||||
return class
|
||||
end
|
||||
|
||||
function playerz.get_class(player)
|
||||
local class = player:get_meta():get_string("class")
|
||||
if class == "" or not playerz.classes[class] then
|
||||
class = nil
|
||||
end
|
||||
return class
|
||||
end
|
||||
|
||||
function playerz.get_class_formspec(name)
|
||||
local text = S("Select your Character Class")
|
||||
|
||||
local formspec = {
|
||||
"formspec_version[3]",
|
||||
"size[4.45,2.476]",
|
||||
"label[0.375,0.5;", minetest.formspec_escape(text), "]",
|
||||
"image_button_exit[0.375,1;1,1;"..playerz.classes["cunning"].icon..";btn_cunning;"
|
||||
..playerz.classes["cunning"].description.."]",
|
||||
"image_button_exit[1.7,1;1,1;"..playerz.classes["magician"].icon..";btn_magician;"
|
||||
..playerz.classes["magician"].description.."]",
|
||||
"image_button_exit[3.025,1;1,1;"..playerz.classes["quarreling"].icon..";btn_quarreling;"
|
||||
..playerz.classes["quarreling"].description.."]"
|
||||
}
|
||||
|
||||
-- table.concat is faster than string concatenation - `..`
|
||||
return table.concat(formspec, "")
|
||||
end
|
||||
|
||||
function playerz.select_class(player_name)
|
||||
minetest.show_formspec(player_name, "playerz:class", playerz.get_class_formspec(player_name))
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "playerz:class" then
|
||||
return
|
||||
end
|
||||
local class
|
||||
if fields.btn_cunning or fields.btn_quarreling or fields.btn_magician then
|
||||
if fields.btn_cunning then
|
||||
class = "cunning"
|
||||
elseif fields.btn_quarreling then
|
||||
class = "quarreling"
|
||||
else
|
||||
class = "magician"
|
||||
end
|
||||
playerz.set_class(player, class)
|
||||
else
|
||||
class = playerz.set_class(player, "random")
|
||||
end
|
||||
playerz.apply_class(player, class)
|
||||
end)
|
||||
|
||||
--Status
|
||||
|
||||
function playerz.get_status(player)
|
||||
return player:get_meta():get_string("playerz:status")
|
||||
end
|
||||
|
||||
function playerz.set_status(player, status)
|
||||
return player:get_meta():set_string("playerz:status", status)
|
||||
end
|
||||
|
||||
--Base texture
|
||||
|
||||
function playerz.set_base_texture(player, gender)
|
||||
local meta = player:get_meta()
|
||||
meta:set_string("base_texture", gender)
|
||||
end
|
||||
|
||||
--converts yaw to degrees
|
||||
local function yaw_to_degrees(yaw)
|
||||
return(yaw * 180.0 / math.pi)
|
||||
|
@ -397,25 +553,6 @@ minetest.register_globalstep(function(dtime)
|
|||
end
|
||||
end)
|
||||
|
||||
function playerz.get_gender_formspec(name)
|
||||
local text = S("Select your gender")
|
||||
|
||||
local formspec = {
|
||||
"formspec_version[3]",
|
||||
"size[3.2,2.476]",
|
||||
"label[0.375,0.5;", minetest.formspec_escape(text), "]",
|
||||
"image_button_exit[0.375,1;1,1;player_male_face.png;btn_male;"..S("Male").."]",
|
||||
"image_button_exit[1.7,1;1,1;player_female_face.png;btn_female;"..S("Female").."]"
|
||||
}
|
||||
|
||||
-- table.concat is faster than string concatenation - `..`
|
||||
return table.concat(formspec, "")
|
||||
end
|
||||
|
||||
function playerz.select_gender(player_name)
|
||||
minetest.show_formspec(player_name, "playerz:gender", playerz.get_gender_formspec(player_name))
|
||||
end
|
||||
|
||||
function playerz.set_texture(player)
|
||||
local cloth = playerz.compose_cloth(player)
|
||||
local gender = playerz.get_gender(player)
|
||||
|
@ -527,26 +664,6 @@ minetest.register_on_leaveplayer(function(player)
|
|||
playerz.count = playerz.count - 1
|
||||
end)
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if formname ~= "playerz:gender" then
|
||||
return
|
||||
end
|
||||
local gender
|
||||
if fields.btn_male or fields.btn_female then
|
||||
if fields.btn_male then
|
||||
gender = "male"
|
||||
else
|
||||
gender = "female"
|
||||
end
|
||||
playerz.set_gender(player, gender)
|
||||
else
|
||||
playerz.set_gender(player, "random")
|
||||
end
|
||||
playerz.set_base_textures(player) --set the default base_texture
|
||||
playerz.set_cloths(player) --set the default clothes
|
||||
playerz.set_texture(player)
|
||||
end)
|
||||
|
||||
minetest.register_on_shutdown(function()
|
||||
for _, player in ipairs(minetest.get_connected_players()) do
|
||||
playerz.shutdown_hunger(player)
|
||||
|
|
|
@ -2,7 +2,11 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch,
|
|||
if playerz.is_dead(player) then
|
||||
return true --do nothing
|
||||
end
|
||||
playerz.change_hp(player, -damage, "punch")
|
||||
local class = playerz.get_class(player)
|
||||
if class == "" then
|
||||
return true --do nothing
|
||||
end
|
||||
playerz.change_hp(player, -damage*playerz.classes[class].attack_damage, "punch")
|
||||
local ouch = "ouch"
|
||||
if playerz.is_female(player) then
|
||||
ouch = "ouch".."_female"
|
||||
|
|
|
@ -54,6 +54,12 @@ minetest.register_on_joinplayer(function(player)
|
|||
playerz.registered_models[playerz.get_gender_model(gender)].textures[1] = cloth
|
||||
playerz.update_model(player, playerz.get_gender_model(gender), true)
|
||||
end
|
||||
-->REMOVE ON THE FIRST RELEASE
|
||||
local class = playerz.get_class(player)
|
||||
if not class then
|
||||
playerz.apply_class(player, playerz.set_class(player))
|
||||
end
|
||||
--<
|
||||
--Set Hunger Hudbar
|
||||
playerz.hb_add(player, hunger)
|
||||
-- Set formspec prepend
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
# textdomain: playerz
|
||||
Select your gender=Selecciona tu género
|
||||
Male=Hombre
|
||||
Female=Mujer
|
||||
Unisex=Unisex
|
||||
Change the gender, from male to female or viceversa=Cambiar el género, de hombre a mujer o viceversa
|
||||
Your gender is changed to=Tu género se ha cambiado a
|
||||
Head=Cabeza
|
||||
Upper=Parte superior
|
||||
Lower=Parte inferior
|
||||
Footwear=Calzado
|
||||
Purple Stripe Summer T-shirt=Camiseta veraniega púrpura a rayas
|
||||
Fresh Summer Denim Shorts=Pantalones vaqueros cortos y frescos
|
||||
Pink Bow=Lazo rosa
|
||||
Fine Blue Pants=Pantalones azules finos
|
||||
Classic Green Sweater=Jersei verde clásico
|
||||
Common Black Shoes=Zapatos negros comunes
|
||||
Cunning=Pícaro
|
||||
Female=Mujer
|
||||
Fine Blue Pants=Pantalones azules finos
|
||||
Footwear=Calzado
|
||||
Fresh Summer Denim Shorts=Pantalones vaqueros cortos y frescos
|
||||
Head=Cabeza
|
||||
Magician=Mago
|
||||
Male=Hombre
|
||||
Lower=Parte inferior
|
||||
Pink Bow=Lazo rosa
|
||||
Purple Stripe Summer T-shirt=Camiseta veraniega púrpura a rayas
|
||||
Quarreling=Peleón
|
||||
Select your gender=Selecciona tu género
|
||||
Select your Character Class=Selecciona tu clase de personaje
|
||||
Unisex=Unisex
|
||||
Upper=Parte superior
|
||||
Your gender is changed to=Tu género se ha cambiado a
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
name = playerz
|
||||
description = Minetest Game mod: playerz
|
||||
depends = playerphysics
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 631 B |
Binary file not shown.
After Width: | Height: | Size: 810 B |
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
Loading…
Reference in New Issue