From 1a71ba41b610a7823df9054258b5cd515a3345ba Mon Sep 17 00:00:00 2001 From: Vitalie Ciubotaru Date: Thu, 19 May 2016 13:16:15 +0900 Subject: [PATCH] New textures and new nodebox for ATM node --- README.md | 4 +- atm.lua | 122 ++++++++++++++++++++-- sounds/LICENSE | 2 + sounds/atm_beep.ogg | Bin 0 -> 16446 bytes textures/global_exchange_atm_back.png | Bin 0 -> 170 bytes textures/global_exchange_atm_hi_front.png | Bin 0 -> 247 bytes textures/global_exchange_atm_hi_top.png | Bin 0 -> 246 bytes textures/global_exchange_atm_icon.png | Bin 0 -> 860 bytes textures/global_exchange_atm_lo_front.png | Bin 0 -> 217 bytes textures/global_exchange_atm_lo_top.png | Bin 0 -> 228 bytes textures/global_exchange_atm_side.png | Bin 136 -> 163 bytes textures/global_exchange_atm_top.png | Bin 0 -> 176 bytes 12 files changed, 120 insertions(+), 8 deletions(-) create mode 100644 sounds/LICENSE create mode 100644 sounds/atm_beep.ogg create mode 100644 textures/global_exchange_atm_back.png create mode 100644 textures/global_exchange_atm_hi_front.png create mode 100644 textures/global_exchange_atm_hi_top.png create mode 100644 textures/global_exchange_atm_icon.png create mode 100644 textures/global_exchange_atm_lo_front.png create mode 100644 textures/global_exchange_atm_lo_top.png create mode 100644 textures/global_exchange_atm_top.png diff --git a/README.md b/README.md index 133c777..0dd185c 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ This mod provides a server-wide trading exchange for items. It is available under GNU GPL version 3 or any later version. lsqlite3 is required by this mod, -and can be installed through luarocks. +and can be installed through luarocks. ($ sudo luarocks install lsqlite3) Nodes ===== @@ -98,4 +98,4 @@ is a sell offer for 5 cobblestone 3 credits each, it will give you 5 cobble immediately, and leave an order on the exchange for 5 more cobblestone. Once your offer is on the exchange, you can view or cancel it from the "Your -Orders" menu. \ No newline at end of file +Orders" menu. diff --git a/atm.lua b/atm.lua index 9c64eb4..8cd31a7 100644 --- a/atm.lua +++ b/atm.lua @@ -1,4 +1,3 @@ - -- A telling machine. Call this file with the exchange argument. local exchange = ... @@ -173,18 +172,127 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) -minetest.register_node("global_exchange:atm", { +minetest.register_node("global_exchange:atm_bottom", { description = "ATM", - tiles = {"global_exchange_box.png", - "global_exchange_box.png", - "global_exchange_box.png^global_exchange_atm_side.png", + inventory_image = "global_exchange_atm_icon.png", + wield_image = "global_exchange_atm_hi_front.png", + drawtype = "nodebox", + tiles = { + "global_exchange_atm_lo_top.png", + "global_exchange_atm_side.png", + "global_exchange_atm_side.png", + "global_exchange_atm_side.png", + "global_exchange_atm_back.png^[transform2", + "global_exchange_atm_lo_front.png", }, - groups = {cracky=2}, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + stack_max = 1, + light_source = 3, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, 0.5, -0.5, -0.375, 1.125, -0.25}, + {0.375, 0.5, -0.5, 0.5, 1.125, -0.25}, + {-0.5, 0.5, -0.25, 0.5, 1.5, 0.5}, + {-0.5, 1.125, -0.4375, -0.375, 1.25, -0.25}, + {0.375, 1.125, -0.4375, 0.5, 1.25, -0.25}, + {-0.5, 1.25, -0.375, -0.375, 1.375, -0.25}, + {0.375, 1.25, -0.375, 0.5, 1.375, -0.25}, + {-0.5, 1.375, -0.3125, -0.375, 1.5, -0.25}, + {0.375, 1.375, -0.3125, 0.5, 1.5, -0.25}, + }, + }, + on_place = function(itemstack, placer, pointed_thing) + local under = pointed_thing.under + local pos + if minetest.registered_items[minetest.get_node(under).name].buildable_to then + pos = under + else + pos = pointed_thing.above + end + if minetest.is_protected(pos, placer:get_player_name()) and + not minetest.check_player_privs(placer, "protection_bypass") then + minetest.record_protection_violation(pos, placer:get_player_name()) + return itemstack + end + local def = minetest.registered_nodes[minetest.get_node(pos).name] + if not def or not def.buildable_to then + minetest.remove_node(pos) + return itemstack + end + local dir = minetest.dir_to_facedir(placer:get_look_dir()) + local pos2 = {x = pos.x, y = pos.y + 1, z = pos.z} + local def2 = minetest.registered_nodes[minetest.get_node(pos2).name] + if not def2 or not def2.buildable_to then + return itemstack + end + minetest.set_node(pos, {name = "global_exchange:atm_bottom", param2 = dir}) + minetest.set_node(pos2, {name = "global_exchange:atm_top", param2 = dir}) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + return itemstack + end + end, + on_destruct = function(pos) + local pos2 = {x = pos.x, y = pos.y + 1, z = pos.z} + local n2 = minetest.get_node(pos2) + if minetest.get_item_group(n2.name, "atm") == 2 then + minetest.remove_node(pos2) + end + end, + groups = {cracky=2, atm = 1}, on_rightclick = function(pos, _, clicker) + minetest.sound_play("atm_beep", {pos = pos}) minetest.show_formspec(clicker:get_player_name(), atm_form, main_menu) end, }) +minetest.register_node("global_exchange:atm_top", { + drawtype = "nodebox", + tiles = { + "global_exchange_atm_hi_top.png", + "global_exchange_atm_side.png",--not visible anyway + "global_exchange_atm_side.png", + "global_exchange_atm_side.png", + "global_exchange_atm_back.png", + "global_exchange_atm_hi_front.png", + }, + paramtype = "light", + paramtype2 = "facedir", + is_ground_content = false, + light_source = 3, + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, -0.375, 0.125, -0.25}, + {0.375, -0.5, -0.5, 0.5, 0.125, -0.25}, + {-0.5, -0.5, -0.25, 0.5, 0.5, 0.5}, + {-0.5, 0.125, -0.4375, -0.375, 0.25, -0.25}, + {0.375, 0.125, -0.4375, 0.5, 0.25, -0.25}, + {-0.5, 0.25, -0.375, -0.375, 0.375, -0.25}, + {0.375, 0.25, -0.375, 0.5, 0.375, -0.25}, + {-0.5, 0.375, -0.3125, -0.375, 0.5, -0.25}, + {0.375, 0.375, -0.3125, 0.5, 0.5, -0.25}, + } + }, + selection_box = { + type = "fixed", + fixed = {0, 0, 0, 0, 0, 0}, + }, + groups = { + atm = 2, + not_in_creative_inventory = 1 + }, +}) minetest.register_craft( { output = "global_exchange:atm", @@ -194,3 +302,5 @@ minetest.register_craft( { { "default:stone", "default:stone", "default:stone" }, } }) + +minetest.register_alias("global_exchange:atm", "global_exchange:atm_bottom") diff --git a/sounds/LICENSE b/sounds/LICENSE new file mode 100644 index 0000000..3a7dcbe --- /dev/null +++ b/sounds/LICENSE @@ -0,0 +1,2 @@ +File atm_beep.ogg is a derivative work from a sound file 'dialing 3.aiff' uploaded by 'benjaminharveydesign' to http://freesound.org under a Creative Commons 0 license. +File atm_cash.ogg is a derivative work from a sound file 'ATM.wav' uploaded by 'LG' to http://freesound.org under a Creative Commons Attribution license. \ No newline at end of file diff --git a/sounds/atm_beep.ogg b/sounds/atm_beep.ogg new file mode 100644 index 0000000000000000000000000000000000000000..e448eb4173584f7447d363fd0bf6bb70e7ffd5ba GIT binary patch literal 16446 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 literal 0 HcmV?d00001 diff --git a/textures/global_exchange_atm_hi_top.png b/textures/global_exchange_atm_hi_top.png new file mode 100644 index 0000000000000000000000000000000000000000..bb716e5fb4133daab7321ff57d7059903ec95dda GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPNGZ&k@jD9rhSD=t&iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afXr;B5V#pz^|tsDNGcVJ9tG_=|C$Me#TO1PDt?NJu=Kl`!+<;nVXc9@+Cj{xJ6jo~G`+wACpYX{%if cJCcCrXHHOKx3spb1KPyk>FVdQ&MBb@0P%B7RsaA1 literal 0 HcmV?d00001 diff --git a/textures/global_exchange_atm_icon.png b/textures/global_exchange_atm_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4cc7fbd735145a49a8141b2c2b59b4190cb000 GIT binary patch literal 860 zcmV-i1Ec(jP)1~pHYInw|D0_jOa zK~#9!?VCYP0x=YZTSL5vF`i(ON%R1QjoyQWD>W`~0Sgki3~UG&Fd^XpBH|Go_HODz z9+Y8VI`dv%U)3fiWI_!8*Z+U*>&$4yFp~7r0!aT$#m z#pfLW5SEL%T4kS_1ptORwfN;?u2>xqN_<{8#b`*k{~^(sStqXnoZ_j3ldl3Xim&AW zJO9-7=MpW_0U^YTsR5MBnpX$7EPt4#YPp!#6mP6QrU;bfzx#a8G>3*i0>{ML4G}djX?bcaP2hlJv5~0rdf_ zvP`o^pmq0fv=1nXg^$x+_8I`fL5zK;#sx-TGvjK&+4)83#wP~xC3{XQ(_Z6}xq0cU|qDV3;HNg3YH z0{}$(tG9OyRzCCo9~ES|F=7|RcC)7@YD8>z6UG6v+bIf0Xz{fH*uv{Tpb>8rMbp&4 z%zpKAeXMXJs|EmsybJJPB3cECB0v)hdb^VYNQUXoY{O@81rCJqDx7T}5Tdes2T&#B z^l=bU1YIG(_iPZ7iX=${$^=z&fr$@*3xs^Zj6MQYK)4AvzXL#Qo1y>P<9}`4C+R_{ z9+%&q3F7}<)jLACc9`__wQ%Awrw}A=ST0_Jh$aPq0Z|tKm3Y!3$nmoCD$6vbcv1({ mafFKls0FhvgIuq_W5+ii1cqDARc*Tf0000{XE z)7O>#0W+rnqn6#i`}2W9k|nMYCC>S|xv6<249-QVi6yBi3gww484B*6z5(HleBwYw z!JaOTAsXkCO}1`GQ(!ePoWQ}hkWI|ub;$uvHa51)ykY`uEHm;pG@N$2;d7#{XE z)7O>#0W%kyg4r6oXYxQH$r9Iy66gHf+|;}h2Ir#G#FEq$h4Rdj3~O2Po5zzVYr9kw8D-TY1_QofLNqiql}TklS%K>xuC~Q QK${pmUHx3vIVCg!03B*dOaK4? literal 0 HcmV?d00001 diff --git a/textures/global_exchange_atm_side.png b/textures/global_exchange_atm_side.png index 17e2273a6a264fec50a05e7b16c70d571615f56d..563b47c01ed6bd1ade3c4ee113d2db0639093cb3 100644 GIT binary patch delta 147 zcmeBRT+BE@qMn0|fq_B(^Z!I3#aZAHSFVdQ&MBb@0FxaktpET3 delta 119 zcmZ3?*ugkKqJW8+fq@}uuJ|V)#S`EY;+m?P4rKZUgfet6KdYPV4&*SF1o;IsI6S+N z2IOdYx;Tb#L?|t_xQQyAtz@~)K3Py$yF#(mW S#${?iT@0SCelF{r5}E)33ME$n diff --git a/textures/global_exchange_atm_top.png b/textures/global_exchange_atm_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8b30dba36de5e9285d2e11ac9f15272c8632d9ca GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|oCO|{#S9GG!XV7ZFl&wkP>{XE z)7O>#0h1^Pw`Rtn&<{W%$r9Iy66gHf+|;}h2Ir#G#FEq$h4Rdj3iD)^A0CyaK;FetE0#7+yz+#XpmdKI;Vst0C5;EC;$Ke literal 0 HcmV?d00001