From b2c206643fc418faf576e9d18ddb5281cda34880 Mon Sep 17 00:00:00 2001 From: Alexsandro Percy Date: Thu, 7 Apr 2022 19:26:17 -0300 Subject: [PATCH] added a basic skin manager for pilot uniform --- init.lua | 3 ++ mod.conf | 1 + pilot_skin_manager.lua | 98 ++++++++++++++++++++++++++++++++++++ textures/pilot_clothes1.png | Bin 0 -> 9187 bytes textures/pilot_clothes2.png | Bin 0 -> 8941 bytes textures/pilot_phones.png | Bin 0 -> 5368 bytes 6 files changed, 102 insertions(+) create mode 100644 pilot_skin_manager.lua create mode 100755 textures/pilot_clothes1.png create mode 100755 textures/pilot_clothes2.png create mode 100755 textures/pilot_phones.png diff --git a/init.lua b/init.lua index a454d4c..9593fd6 100644 --- a/init.lua +++ b/init.lua @@ -27,6 +27,9 @@ dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "airutils_papi.lua") dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "airutils_tug.lua") dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "airutils_repair.lua") dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "inventory_management.lua") +if player_api then + dofile(minetest.get_modpath("airutils") .. DIR_DELIM .. "pilot_skin_manager.lua") +end function airutils.remove(pos) local meta = core.get_meta(pos) diff --git a/mod.conf b/mod.conf index d0059ee..d8fb960 100644 --- a/mod.conf +++ b/mod.conf @@ -2,3 +2,4 @@ name = airutils title=AirUtils description=A lib for airplanes and some useful tools author=apercy +optional_depends=player_api diff --git a/pilot_skin_manager.lua b/pilot_skin_manager.lua new file mode 100644 index 0000000..bb1100e --- /dev/null +++ b/pilot_skin_manager.lua @@ -0,0 +1,98 @@ + +airutils.pilot_textures = {"pilot_clothes1.png","pilot_clothes2.png",} + +minetest.register_chatcommand("au_uniform", { + func = function(name, param) + if minetest.check_player_privs(name, {server=true}) then + local player = minetest.get_player_by_name(name) + if player then + airutils.uniform_formspec(name) + else + minetest.chat_send_player(name, "Something isn't working...") + end + end + end, +}) + +local set_player_textures = + minetest.get_modpath("player_api") and player_api.set_textures + or default.player_set_textures + +function airutils.set_player_skin(player, skin) + local backup = "airutils:bcp_last_skin" + local player_proterties = player:get_properties() + local texture = player_proterties.textures + local name = player:get_player_name() + if texture then + if skin then + texture = texture[1] + if player:get_attribute(backup) == nil or player:get_attribute(backup) == "" then + player:set_attribute(backup, texture) --texture backup + --minetest.chat_send_all(dump(player:get_attribute(backup))) + end + texture = texture.."^"..skin + if texture ~= nil and texture ~= "" then + set_player_textures(player, { texture }) + end + else + local old_texture = player:get_attribute(backup) + if set_skin then + if player:get_attribute("set_skin:player_skin") ~= nil then + old_texture = player:get_attribute("set_skin:player_skin") + end + elseif skins then + if skins.skins[name] ~= nil then + old_texture = skins.skins[name] + end + elseif u_skins then + if u_skins.u_skins[name] ~= nil then + old_texture = u_skins.u_skins[name] + end + elseif wardrobe then + if wardrobe.playerSkins then + if wardrobe.playerSkins[name] ~= nil then + old_texture = wardrobe.playerSkins[name] + end + end + end + --minetest.chat_send_all(dump(old_texture)) + if old_texture ~= nil and old_texture ~= "" then + set_player_textures(player, { old_texture }) + end + player:set_attribute(backup, nil) + end + end +end + +function airutils.uniform_formspec(name) + local basic_form = table.concat({ + "formspec_version[5]", + "size[5,2.9]", + }, "") + + --minetest.chat_send_all(dump(airutils.pilot_textures)) + + local textures = "" + if airutils.pilot_textures then + for k, v in pairs( airutils.pilot_textures ) do + textures = textures .. v .. "," + end + + basic_form = basic_form.."dropdown[0.5,0.5;4,0.8;textures;".. textures ..";0;false]" + basic_form = basic_form.."button[0.5,1.6;4,0.8;set_texture;Set Player Texture]" + + minetest.show_formspec(name, "airutils:change", basic_form) + else + minetest.chat_send_player(name, "The isn't activated as secure. Aborting") + end +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + if formname == "airutils:change" then + local name = player:get_player_name() + if fields.textures or fields.set_texture then + airutils.set_player_skin(player, fields.textures) + end + minetest.close_formspec(name, "airutils:change") + end +end) diff --git a/textures/pilot_clothes1.png b/textures/pilot_clothes1.png new file mode 100755 index 0000000000000000000000000000000000000000..034be205fcf52238ced52703b1ca10a1cbf0597d GIT binary patch literal 9187 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 literal 0 HcmV?d00001 diff --git a/textures/pilot_clothes2.png b/textures/pilot_clothes2.png new file mode 100755 index 0000000000000000000000000000000000000000..aa7f7fda217318c5366fd06428d322d0288a9121 GIT binary patch literal 8941 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 KDVEDy1^*8eJy`(& literal 0 HcmV?d00001 diff --git a/textures/pilot_phones.png b/textures/pilot_phones.png new file mode 100755 index 0000000000000000000000000000000000000000..4b11e7218db4403b3512f26dd4d743124cb5e5c7 GIT binary patch literal 5368 zcmeH~X;>3i7sn&}B7y~EuOWbd8nTj*6e6n-F@OjvAj>eBz(_WdKmrOVB1NQtSgfVW z@+!C>pj1&r1#y8|Q3`bfSE}NMY_e1Z-bujidHcoZdHc=enPlePbAIQZ|2_B4%+>%u zZyhaDEffl+!}ReCME+fo1FfNk{QhT8Y6c3WN=^=1BMAhgXrV~Jfw>S`k|c!CkPPOa zP_nMRonf^j3+8OOZ{nqU&Rv6f{$XgL$?Jjjn(O=D^%fl3ZH+s)Zhf~*d0upik5kpu zWL;;PFu%Jn`#^BbNb`!*GQRA{3r1IcXYkbt^T%-WlvBDWUxp9DbdZw#PkEN{b{NeY-3k zbg8?)lre?V8mTBP5JxQE@bKz8r>6MF7j$$V-!Zh5ofi z8Tm%oZw|hi#AXz#B^IlzH-2N=clf3AZP$47ms^Irjp*m!IChw{;fJgxZ7QI_gS6y| zlCwvo8A>Z+;S;L{7WL|x@m1VERu4W+M05W8+r52o33jP^xT)7z16pJt#4syggvhtUP6PX0F#njVx+slp@e>c`)GtzZDZ0w%e&TDoaOD*W! z@mP|7aqIkF{q|5&>b$gl;X<2Ahw!=$$A2iVqxIE7H>cD7W6IM3cgT&1>-u&Q=Sp&oebSJJO9cc6xIJ7@P&Kr_?tZ&_@ye10*DaSRuCJCvIkdHJ=sPTHE$ zinq-dv<0nqr8TF1SyxmYcO^IU=<(i{;R$2S$5v=XL>Sie*N#%o{T>#}9jBf~o8>|N zDQ`N2gT^D*PQN+In3#N?XZv^A^0d0Yd`&Z&-0SMg>zgWSehXNDZJO_G;Lbi z0sR|)FMpV~dW%nR61MpEAFX#P$jyFdiVUhQ-gvsm3U#S;4r$DJ!HKp%>wesmufABa zYVq9Jk7~2&Qpvo?IKTNC9<7a=!|LG5+_-qF7Zo`#H#!+MEi?Q}D^>NOY>B1dw;_`w zV~4H~5-sf3T{&M-HxC4J$8VH|r?fb29g~^2fj1q!uhS?CR{4pZtIVHmlCL&|a;ksc z)%H{D+>FMMM(l!JhXJ*vd91AQ+SZon@}J|(LI(y3xOYd|lKQLeO@d<$T^18Jlg7hr z(B)B@1~vgQyR*>1?ERJ=+fU3M2pRQNw{GxO{cd5aWJ8R$igii*ujG=P3){SUe%K$i zedzf_NXwHkdah1OU&JNDr};-Jt=^1;LSb;HWd0G@o>j=sQ8ckGrm8zsSHMBUh+*Bc;>+ky7@01TUyM|;-xGL z&F^ZqTXJlLnQqH(UH=k>9HjwNnWQ<;+~nfV7P(S2z*9^PN}J^w)p3N8bgF02theBIrE57q-@alVpR;Ch!jX=1hq>!6=wFBr?zE3= zO*$;P*K;^H?r?(tWV4T3WJC|W&28V2jb1)_Wu=)~hmLG74Ys}Lo;kXMF*)ldZo9AL zYSkR`;aeNkZjWr9I@iyy>KWhllL1pH9G5#xP|1*P;@pitn`f~!ccp{ES#3B}0aS~qw$gq5| zl^ik6@Px#m2o_3U0Us@A0?~p5i36l?d@AR-Yo+;0J$Uf{3d~hYjK&F2qAj#Yj}b zXCb|rtbh+5atUH!o>1Y1i2a$R1m=7c>$9=Rdlcz>IuOMD1NSrQ_qi*K5i1sp?kNBh z1+WAv+0Uc8j(x^KsFmorO+TOnTn@jqlpv{3vxJQvLl%tO(j!5K{5Ga z3BU&-ISPS0zz7F$pir@7ydxDGjYnWKM=FWJCQ*qH4fq7%FM^S(1h}7$ zN{(V9C<+Y^QAi*M>qI64STdQ2P^eS@3s9*90Hjes2;wMEY>>WGAmRbYbizC!2EqyX zF^Uek;B>bDrVEDXfdAMMzy%~6#K8r#9Ofs;K6V7bJZPl^kgG|ckZB|efkq@bBB~Ik z(^l|SK_W3yiE<_Z??9U7%BO{nB!dVG$mOg>5cJm|U!?C>xxUKvMGAb8@z?75 zD%Te&@I}U7tLy(Jm)6G@9*B=T1xb