ofs | hex dump | ascii |
---|
0000 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 04 00 00 00 02 00 08 03 00 00 00 2b 13 ee | .PNG........IHDR.............+.. |
0020 | 8b 00 00 00 4e 50 4c 54 45 00 00 00 ff ff ff 8c 8c 8c de de de e7 e7 e7 f7 f7 f7 7b 7b 7b bd bd | ....NPLTE..................{{{.. |
0040 | bd 63 63 63 a5 a5 a5 ef ef ef ce ce ce d6 d6 d6 c6 c6 c6 94 9c 94 ad b5 ad e7 ef e7 de e7 de d6 | .ccc............................ |
0060 | de d6 f7 ff f7 bd c6 bd b5 bd b5 b5 b5 b5 ce d6 ce 9c a5 9c ad ad ad a7 e2 bd d0 00 00 00 01 74 | ...............................t |
0080 | 52 4e 53 00 40 e6 d8 66 00 00 b1 50 49 44 41 54 78 5e ec bd 87 96 ac 38 cf 36 aa c7 39 01 5f f8 | RNS.@..f...PIDATx^.....8.6..9._. |
00a0 | 4f ba ff 1b 3d 0b 21 2d 6d a0 a0 aa 3a cc f4 3b d3 9a 3d c8 72 94 93 b0 5d 3c 6d 7a 40 bf f4 4b | O...=.!-m...:..;..=.r...]<mz@..K |
00c0 | bf d4 07 b3 d1 57 e6 9d f3 44 04 d7 a6 55 04 88 7d fd ab e9 08 37 61 04 12 92 22 6e 8b b7 14 46 | .....W...D...U..}....7a..."n...F |
00e0 | b7 99 8b e7 17 d1 1c 28 cc f4 05 f4 4b 00 9c 08 0e c0 a9 3f 83 c5 b4 c0 b3 4f 8d 26 00 7b 07 60 | .......(....K......?.....O.&.{.` |
0100 | 2e 71 7c 3f d5 06 10 08 68 95 de 27 d0 17 e8 19 fa cb 7d b0 67 18 ef f5 20 fd 07 52 f2 40 48 3a | .q|?....h..'......}.g......R.@H: |
0120 | be 8c 00 69 fc da 28 ce 44 ec ce c8 44 cc fb e6 13 33 e5 48 ec 7e 4c ce 13 75 a0 eb 98 63 36 ca | ...i..(.D...D....3.H.~L..u...c6. |
0140 | c6 d2 5a 7e 04 7b 72 e8 14 61 52 0a ac 59 f2 9c fc 8e 96 18 17 a2 b9 a1 25 ed 07 00 08 33 d1 1c | ..Z~.{r..aR..Y..........%....3.. |
0160 | 10 97 55 6a 59 33 56 c6 61 95 a3 ab a7 a6 64 cf 16 6c 28 2c 44 0b 08 d8 a2 5b 85 46 62 69 92 02 | ..UjY3V.a.....d..l(,D....[.Fbi.. |
0180 | 13 51 1a 5c 30 98 34 f3 36 88 46 23 78 22 f2 20 df 88 9a a7 b0 b2 60 51 d7 c0 6a 63 a9 c4 58 c8 | .Q.\0.4.6.F#x"........`Q..jc..X. |
01a0 | a8 f7 97 0c 40 04 d1 ad 01 38 27 f9 de 41 0e 24 1e 1e 09 78 90 11 d4 44 28 69 a3 d0 12 d5 97 7b | ....@....8'..A.$...x...D(i.....{ |
01c0 | 96 87 e0 83 09 69 c1 00 a8 c6 58 cd a0 76 9e c3 dc 72 4a ae 61 67 20 25 85 12 f6 0c 5d 62 c9 f3 | .....i....X..v...rJ.ag.%....]b.. |
01e0 | 9e 4d d3 ca aa 0d ae 85 c0 f4 3e 93 11 bb 1f 71 77 4c 88 a5 11 8b 8d ea 33 93 26 56 ad 1b 66 72 | .M........>....qwL......3.&V..fr |
0200 | c1 c6 d7 c9 00 f4 ee a0 2f 16 38 ad b1 e3 66 ca 70 e4 90 c9 27 24 4f 8f a8 57 ca a8 15 d9 da 89 | ......../.8...f.p...'$O..W...... |
0220 | 66 b4 95 39 44 22 0a a2 95 da 15 8b 12 91 12 22 05 38 f7 c4 02 70 23 b9 e8 68 6e 6b 52 cc 9c e3 | f..9D".........".8...p#..hnkR... |
0240 | 9a 78 46 20 9a 56 69 42 3e f4 d7 8c 41 b4 79 02 e6 ad 4d 35 62 b1 1e 8e 3c b3 80 41 80 54 88 cb | .xF..ViB>...A.y...M5b...<..A.T.. |
0260 | 44 3b 48 d4 90 28 0d c9 4e 33 ef 6b fa ce 6b c4 f5 51 90 33 0a 55 a4 84 4a 44 d6 1f d5 db d0 0c | D;H..(..N3.k..k..Q.3.U..JD...... |
0280 | 21 04 3a d0 73 03 00 dc 45 fc 5b 0c 80 cc a8 4b 03 d0 90 cc 7f 81 73 58 08 64 9e 73 70 e4 c2 4c | !.:.s...E.[....K......sX.d.sp..L |
02a0 | 13 ce a5 5b 30 0b 31 a5 a8 13 98 5c d7 39 6c d4 00 b2 4c 20 29 2e 0c 00 15 d1 5b 46 d5 3d a3 ad | ...[0.1....\.9l...L.).....[F.=.. |
02c0 | bb a6 01 90 0c bc 5b 7b 41 37 a1 32 62 f7 23 ee 96 09 65 d4 05 9d ee 0c 80 8c 3b 7d 81 01 94 9a | ......[{A7.2b.#...e.......;}.... |
02e0 | 4e de b3 01 70 60 a2 58 74 05 30 2f 44 1e 85 9b 29 60 65 81 5c 43 73 ec 73 a0 c2 53 82 08 6d 57 | N...p`.Xt.0/D...)`e.\Cs.s..S..mW |
0300 | 71 6e 29 c7 6d f4 a7 01 68 28 12 c3 63 a1 80 94 10 08 5b 72 58 b4 1a 48 28 d4 8d a7 d8 69 d4 39 | qn).m...h(..c.....[rX..H(....i.9 |
0320 | 36 ac 39 86 49 0c 40 5b f3 90 ca 14 b4 7d 13 4b d8 95 01 c8 70 e6 07 4c 13 fb 46 02 a8 99 46 27 | 6.9.I.@[.....}.K....p..L..F...F' |
0340 | 89 80 64 bd 6b 4d 5e 0a 2a 0d ef e0 bc 27 ea 31 76 22 8a 53 8f 5b 75 63 92 a2 5a d2 c4 3d 9c d7 | ..d.kM^.*....'.1v".S.[uc..Z..=.. |
0360 | ae 00 da 4c c0 c0 1a 2f 37 70 ef 61 c8 4b c2 27 02 c4 cf b3 be 1d b1 d2 61 69 d3 51 4d 3d ef 5b | ...L.../7p.a.K.'........ai.QM=.[ |
0380 | 96 78 f2 2e 91 ec 35 5f f0 d3 f9 47 eb 1a 4f e4 1b 35 7e 0d 35 ea 48 09 9d 42 b0 75 0d 2e 0c 80 | .x....5_...G..O..5~.5.H..B.u.... |
03a0 | 50 f5 b0 6e ad 0b 51 ad 54 d0 3b 0a 81 3a c2 44 4c cd 65 c0 35 42 49 20 a2 c1 ff 8c 9a 03 82 6b | P..n..Q.T.;..:.DL.e.5BI........k |
03c0 | 47 03 90 a6 aa 73 d8 3a 82 f0 d0 00 68 96 00 f6 4c 34 90 51 75 cf 0a 78 f8 86 0c e8 e0 fa 94 01 | G....s.:....h...L4.Qu..x........ |
03e0 | 28 68 fb 11 77 cb 7a a5 da 89 02 c8 23 de 1a 00 19 77 f2 ca e2 ec 93 8e ad 07 a6 3e 81 7c 26 6a | (h..w.z.....#....w.........>.|&j |
0400 | 51 1a a3 cf 9b 9d b1 48 c0 b5 01 98 16 0e f7 bb 19 d6 63 e2 f2 3c 91 8b 45 ba 05 63 65 7e cb 87 | Q......H..........c..<..E..ce~.. |
0420 | 3d c9 73 94 06 e7 60 ca bb 8e d8 75 78 f5 88 ee 88 78 0c 82 9a 73 20 0a bd 87 2d c7 56 ac 51 6d | =.s...`....ux....x...s....-.V.Qm |
0440 | 99 4f c2 2c 0c 78 60 00 d0 88 8e 71 80 51 4d 15 6d 40 93 e0 89 32 30 dc d1 00 24 cc 33 12 e5 96 | .O.,.x`....q.QM.m@...20...$.3... |
0460 | 91 7d 26 a2 18 b9 75 5a 9c 98 63 d6 a2 72 7f f2 a2 e5 12 e7 19 9e 26 70 5c bf 4a d8 a6 5f 93 94 | .}&...uZ..c..r........&p\.J.._.. |
0480 | 63 f3 03 5c 42 3c 6c 01 16 54 53 0f 09 a9 69 bc be a6 ea 9a bd d7 3c 32 55 de 58 94 e3 ba 66 5a | c..\B<l..TS...i.......<2U.X...fZ |
04a0 | d9 44 9d d7 35 83 28 78 1f 88 16 94 84 2a 66 59 97 7b 90 b5 a6 91 f7 bc e0 b3 86 5f 10 23 16 c2 | .D..5.(x.....*fY.{........._.#.. |
04c0 | ca 40 a0 b6 04 78 99 a6 28 eb b3 c3 83 5c 1b ae e9 00 d0 60 c9 48 16 f4 5b 90 3e a6 9d 01 60 bb | .@...x..(....\.....`.H..[.>...`. |
04e0 | 28 25 da a6 a1 37 37 9a 23 72 4b f7 ed c8 00 92 51 75 cf 96 d6 16 22 c2 8c fd 59 0b 2e d8 9d 01 | (%...77.#rK.....Qu...."...Y..... |
0500 | e0 18 87 11 77 cf 2a d8 b0 03 d5 03 b7 06 40 c7 9d 79 a2 e8 d8 da 77 10 d3 d2 08 8e 28 75 9e 8d | ....w.*.......@..y....w.....(u.. |
0520 | 55 06 ac 0f 04 53 56 b6 00 d6 27 ca a9 3d 78 c5 d6 98 98 67 78 8a 33 fb 8a 04 38 c7 4a f0 d8 1e | U....SV...'..=x....gx.3...8.J... |
0540 | ab 34 c8 6d 6f 33 a1 86 3e 93 11 cd 5d 47 3d 88 1f 84 65 d1 59 e7 4f 06 e0 b4 23 c6 d5 0a c0 23 | .4.mo3..>...]G=...e.Y.O...#....# |
0560 | 9b 1f 10 02 fb d6 61 29 74 09 65 12 37 59 9a 22 a6 c3 54 a1 98 73 24 5a 30 ba f7 59 5f 16 ca ea | ......a)t.e.7Y."..T..s$Z0..Y_... |
0580 | ae a8 1b 03 30 07 98 c6 8f 8c 1b 76 c5 0a 3b d6 38 ec 6c 37 e8 f9 f8 22 1a 68 7d be 30 6b 4b a8 | ....0......v..;.8.l7...".h}.0kK. |
05a0 | a8 2d 13 a5 18 13 51 41 ed 91 b4 5a 90 dd a2 1e 6d 4e 68 8e a4 ba 51 3a 6c 25 7b 7b bb 2d 05 21 | .-....QA...Z....mNh...Q:l%{{.-.! |
05c0 | 91 c3 6e 05 c0 84 4e c8 76 42 08 50 73 48 41 83 35 e0 40 d6 14 8b 54 78 4f 19 d4 41 cd f7 c5 d1 | ..n...N.vB.PsHA.5.@...TxO..A.... |
05e0 | 81 51 6f 24 a3 ea 9e 85 3a 07 22 87 22 65 7d 76 05 40 87 11 77 cf a8 cb 81 45 73 4f 0c 80 8e 3b | .Qo$....:."."e}v.@..w....EsO...; |
0600 | 7b 81 f9 b6 e8 d8 3a 11 00 ed c3 04 5a 1c ef 02 00 07 6e 16 d9 02 d8 b8 b5 54 cc 97 89 4e 5b 80 | {.....:.....Z.....n......T...N[. |
0620 | 8a 64 f5 07 93 4a 4d 5b 2e ae 71 ac 1d 8b 99 a6 16 fb 4c 64 e9 e6 1e 25 2c 6e 2b 80 0a 00 55 13 | .d...JM[..q.......Ld...%,n+...U. |
0640 | df 6f 01 0a 5d 1b 00 f2 91 e8 6c 40 20 6a 5a 6e 26 2d 70 b2 73 c4 d1 00 0c ef 07 91 43 73 31 ce | .o..].....l@.jZn&-p.s.......Cs1. |
0660 | b2 05 d0 38 c9 dc 44 d4 f3 b5 01 88 48 a7 a9 79 90 9e 1b 80 05 f5 7d 03 40 73 0e 08 c7 5a b5 de | ...8..D.....H..y......}.@s...Z.. |
0680 | 1b 51 42 6f 1d 4e a7 2e 05 cf 15 9a 50 39 21 74 4d 1e 31 13 2d e4 3c 26 33 00 a6 9d 18 00 30 11 | .QBo.N......P9!tM.1.-.<&3.....0. |
06a0 | a8 63 64 bf db e4 67 40 57 00 66 00 a0 c1 af 18 00 49 74 1c e0 ba 02 60 4b 20 9e 5d a5 1e 13 c9 | .cd...g@W.f......It....`K..].... |
06c0 | a8 ba 65 65 65 85 16 e0 4b b7 00 84 97 b6 00 ba 02 88 18 84 70 6f 00 e4 61 2f b0 02 e8 d8 32 52 | ..eee...K...........po..a/....2R |
06e0 | 21 ce dc 0d 9d 90 1a fb 3b 50 83 0b dc 8b 0b 1c 39 2c 96 e8 50 91 56 88 0e 87 80 15 55 22 d7 dd | !.......;P......9,..P.V.....U".. |
0700 | 2a 7b 81 a7 0e c7 cb e8 8a 40 b2 f6 e
#include "script.h"
#include "scriptapi_types.h"
#include "scriptapi_object.h"
Server* get_server(lua_State *L)
{
// Get server from registry
lua_getfield(L, LUA_REGISTRYINDEX, "minetest_server");
Server *server = (Server*)lua_touserdata(L, -1);
lua_pop(L, 1);
return server;
}
ServerEnvironment* get_env(lua_State *L)
{
// Get environment from registry
lua_getfield(L, LUA_REGISTRYINDEX, "minetest_env");
ServerEnvironment *env = (ServerEnvironment*)lua_touserdata(L, -1);
lua_pop(L, 1);
return env;
}
void warn_if_field_exists(lua_State *L, int table,
const char *fieldname, const std::string &message)
{
lua_getfield(L, table, fieldname);
if(!lua_isnil(L, -1)){
infostream<<script_get_backtrace(L)<<std::endl;
infostream<<"WARNING: field \""<<fieldname<<"\": "
<<message<<std::endl;
}
lua_pop(L, 1);
}
/*
ToolCapabilities
*/
ToolCapabilities read_tool_capabilities(
lua_State *L, int table)
{
ToolCapabilities toolcap;
getfloatfield(L, table, "full_punch_interval", toolcap.full_punch_interval);
getintfield(L, table, "max_drop_level" | t..#)..i...s.{..D....$.Eq...J..J |
0a40 | 4c 26 f9 ae 55 d4 ff f7 32 60 a5 48 b3 bf a6 2b f0 48 57 62 71 17 be 69 6b 28 cb 6b 84 d2 59 1a | L&..U...2`.H...+.HWbq..ik(.k..Y. |
0a60 | 7e 93 5a dd 05 9e d2 56 41 cf 59 f7 5b 02 91 ac 0d 11 d5 1f 13 e2 4c 4a 1d e8 aa b3 4a 5c 6b 93 | ~.Z....VA.Y.[.........LJ....J\k. |
0a80 | 46 f1 85 a8 0c 58 ad 0d 0e ca 65 8b 74 0a e4 c2 15 31 ca 31 55 e2 f6 31 89 49 25 49 76 6e 75 93 | F....X....e.t....1.1U..1.I%Ivnu. |
0aa0 | 5a 3d 85 12 69 5f 9a 04 98 4b 6a 25 d2 5f bf be 2f 33 c5 e9 c3 2b f8 f9 dd 04 a4 b0 ad e7 92 62 | Z=..i_...Kj%._../3...+.........b |
0ac0 | b9 de 93 0c c3 a5 ce 56 0f 3e 7b 85 3e 26 19 8e f1 4d e9 6c 00 b0 91 79 7c 91 7e 90 c7 39 5c 50 | .......V.>{.>&...M.l...y|.~..9\P |
0ae0 | 96 ef 1a 80 56 55 ba 35 00 61 22 60 98 cf ad 64 bf 29 03 ce 7e 33 35 70 dd 53 69 c0 59 76 8a ad | ....VU.5.a"`...d.)..~35p.Si.Yv.. |
0b00 | 39 49 67 51 11 a3 ef 4a ef 81 8b 00 0b 78 5d 32 50 d0 3d 6b 11 59 d0 68 02 43 7b cc c0 11 1e 33 | 9IgQ...J.....x]2P.=k.Y.h.C{....3 |
0b20 | f2 00 e6 3d 12 ed 9e a9 9a 03 31 dc 7f ed 68 90 b4 09 2d a9 c4 b0 2d ad e2 9d 24 58 2e a9 e1 eb | ...=......1...h...-...-...$X.... |
0b40 | 92 62 b8 14 a0 47 74 f4 11 5f 69 9e 0f 4a 52 a8 60 fe de 90 44 03 6d 73 95 cd 43 25 66 1f 96 f8 | .b...Gt.._i..JR.`...D.ms..C%f... |
0b60 | 21 a5 59 38 b0 47 59 76 54 63 f7 06 c0 24 02 0e 0e a0 46 a7 e0 7d 41 cf 49 7d 6e a5 50 cd 9f cc | !.Y8.GYvTc...$....F..}A.I}n.P... |
0b80 | 5f c0 75 32 e6 6e a5 b8 69 30 37 f8 80 6c 8d 8b 61 4d 7d 10 55 e2 5e 11 88 e5 eb d2 a3 57 bf 49 | _.u2.n..i07..l..aM}.U.^......W.I |
0ba0 | 7b 99 dd 1f 61 2b a1 3d 63 40 89 82 46 13 18 da 43 76 6b b2 3c 5c 41 d8 23 d1 6e 99 d0 2a 76 8c | {...a+.=c@..F...Cvk.<\A.#.n..*v. |
0bc0 | 5b 03 20 90 34 01 b6 89 24 b0 2d a9 c6 9d 24 7a 4a 0d df 94 00 05 d2 e9 9c 30 1f 96 a1 6d f6 09 | [...4...$.-...$zJ........0...m.. |
0be0 | 89 c8 30 7f 6f 48 4c a4 6d ae b2 79 70 fc 4f 33 7d 60 17 70 40 59 2e a8 ca 3e 65 00 14 c4 da 45 | ..0.oHL.m..yp.O3}`.p@Y...>e....E |
0c00 | 1a d5 60 90 77 92 d5 5a 3a 6d 27 c9 98 7b 26 01 a0 90 12 50 0c 0e ca f0 49 95 f6 a2 48 82 18 15 | ..`.w..Z:m'..{&....P....I...H... |
0c20 | 88 e5 1b d2 fb 2b 80 f7 d9 1c 80 27 ac 36 e0 88 78 c4 43 b6 d3 e9 f3 1a da f0 0d 4f 00 4f 02 49 | .....+.....'.6..x.C........O.O.I |
0c40 | db 49 0a db 92 6a dc 49 9f 9a 00 9c fc c2 67 df 66 9f 91 d4 f3 5d e9 e1 ff 2a 7c bf 01 30 94 25 | .I...j.I......g.f....]...*|..0.% |
0c60 | 82 b2 d7 0d c0 59 a4 2a 3c 78 76 ec d0 73 b7 92 d5 fa 13 0c 86 67 e4 87 57 c5 44 32 d1 02 0d 31 | .....Y.*<xv..s.......g..W.D2...1 |
0c80 | ca 10 cb d7 a5 fb 56 df af b0 3f 5e b9 88 f4 94 b1 f0 39 c4 a3 3c 10 df 50 4d 09 68 e9 49 15 05 | ......V...?^......9..<..PM.h.I.. |
0ca0 | 92 b6 93 14 d2 25 d5 b8 93 f6 58 ae d7 25 c3 70 5d f8 7c 7e 82 9d 71 8c 4f a5 9f 65 00 c8 c7 0f | .....%....X..%.p].|~..q.O..e.... |
0cc0 | af 00 ce 22 79 e1 95 3d 9e 1b c3 7b 03 60 c0 bb 17 a4 28 69 4c d1 05 8e b9 49 07 d1 d4 2f 80 40 | ..."y..=...{.`....(iL....I.../.@ |
0ce0 | 2c df 91 be 7f 05 20 a0 a0 7b 96 08 70 64 5b 80 7c c5 6e 35 ee a8 a7 65 d5 2d d3 e4 03 13 8b 82 | ,........{..pd[.|.n5...e.-...... |
0d00 | 49 7b c4 04 92 26 5b 00 91 04 b6 25 d5 b8 93 04 cb 25 35 7c 55 32 0c 97 2e f8 cf 3e 00 59 f3 7c | I{...&[....%.....%5|U2.....>.Y.| |
0d20 | 58 aa 98 6c 5f f1 aa f4 57 1a 80 4c 29 aa 01 50 80 25 bb 61 28 cb 1e 8d c1 ce bc 6e a5 93 f8 20 | X..l_...W..L)..P.%.a(......n.... |
0d40 | b6 bd e5 2f a4 3b 03 a0 c0 3b 19 73 77 92 1e 02 86 94 a0 73 3b 68 65 54 32 d1 02 15 31 2a 10 cb | .../.;...;.sw......s;heT2...1*.. |
0d60 | d7 a5 97 0d 80 e1 50 65 3e bc 21 d5 88 fe 9c 79 0f d8 21 60 bc 62 f7 db 03 c3 d4 01 6f 1c 02 a6 | ......Pe>.!....y..!`.b......o... |
0d80 | 10 22 06 91 60 d2 1e 32 83 a4 0d b4 24 92 c0 b6 a4 1a 37 92 62 b9 b8 86 ef 48 8a e1 b2 43 c0 a3 | ."..`..2....$.....7.b....H...C.. |
0da0 | 0f 00 6b 9e 8f 4a 8a 63 4c 0d fe 0d e9 b9 01 00 d3 17 b0 25 c6 4a d0 5d a5 61 d0 14 65 a9 a0 44 | ..k..J.cL..........%.J.].a..e..D |
0dc0 | 65 4c 02 51 bc 95 8e 22 9d 62 53 95 62 2e a4 5b 03 60 03 f1 39 d3 9f 01 5d 43 d3 c6 4d 52 27 52 | eL.Q...".bS.b..[.`..9...]C..MR'R |
0de0 | 89 4c b4 40 41 8c 0a c4 f2 75 c9 a6 78 8e c0 51 da cb 82 fc e3 f9 f0 96 f4 f3 f1 4e c5 bd 0e 49 | .L.@A....u..x..Q...........N...I |
0e00 | 03 4c 7a 4a dd f1 73 a6 1f 42 dd 09 bb c7 fc bd 2e 7d b1 72 ca ef a8 20 ee c0 88 3f 94 0a 1a b3 | .LzJ..s..B.......}.r.......?..
// Insert groupcap into toolcap
toolcap.groupcaps[groupname] = groupcap;
}
// removes value, keeps key for next iteration
lua_pop(L, 1);
}
}
lua_pop(L, 1);
lua_getfield(L, table, "damage_groups");
if(lua_istable(L, -1)){
int table_damage_groups = lua_gettop(L);
lua_pushnil(L);
while(lua_next(L, table_damage_groups) != 0){
// key at index -2 and value at index -1
std::string groupname = luaL_checkstring(L, -2);
u16 value = luaL_checkinteger(L, -1);
toolcap.damageGroups[groupname] = value;
// removes value, keeps key for next iteration
lua_pop(L, 1);
}
}
lua_pop(L, 1);
return toolcap;
}
void set_tool_capabilities(lua_State *L, int table,
const ToolCapabilities &toolcap)
{
setfloatfield(L, table, "full_punch_interval", toolcap.full_punch_interval);
setintfield(L, table, "max_drop_level", toolcap.max_drop_level);
// Create groupcaps table
lua_newtable(L);
// For each groupcap
for(std::map<std::string, ToolGroupCap>::const_iterator
i = toolcap.groupcaps.begin(); i != toolcap.groupcaps.end(); i++){
// Create groupcap table
lua_newtable(L);
const std::string &name = i->first;
const ToolGroupCap &groupcap = i->second;
// Create subtable "times"
lua_newtable(L);
for(std::map<int |
1380 | cf 0b 9c 64 e3 38 ab 0c 8d 6a a0 5d dd 02 54 99 4d 6c 00 64 4b bf ad 38 e0 1c cc 00 78 b1 eb 72 | ...d.8...j.]..T.Ml.dK..8....x..r |
13a0 | 3b 32 74 f1 00 2f 16 6c 6f 00 a6 09 99 90 e5 22 cc ec 4f 08 26 35 00 cd 53 9e bc e7 3c e2 64 8d | ;2t../.lo......"..O.&5..S...<.d. |
13c0 | e2 b0 cc 71 6c ca 38 a2 32 05 ae b1 37 03 60 06 88 55 3c 8a 67 e0 4f fe d3 00 c0 ae 64 8e d3 14 | ...ql.8.2...7.`..U<.g.O.....d... |
13e0 | ed 2d 4e 54 73 8c 8e d7 b4 0d 8e 26 78 59 e4 87 c8 d1 2b bc 45 ce 1c c9 0c 00 15 78 2e c8 9b 01 | .-NTs......&xY....+.E......x.... |
1400 | a8 be c1 fb c4 71 76 c8 cb 47 06 e0 6b d9 4a f7 f0 4f bd d1 af b6 c7 70 4b 83 30 de ab a8 ed 65 | .....qv..G..k.J..O.....pK.0....
lua_setfield(L, -2, "damage_groups");
}
void push_tool_capabilities(lua_State *L,
const ToolCapabilities &prop)
{
lua_newtable(L);
set_tool_capabilities(L, -1, prop);
}
void realitycheck(lua_State *L)
{
int top = lua_gettop(L);
if(top >= 30){
dstream<<"Stack is over 30:"<<std::endl;
stackDump(L, dstream);
script_error(L, "Stack is over 30 (reality check)");
}
}
/*
PointedThing
*/
void push_pointed_thing(lua_State *L, const PointedThing& pointed)
{
lua_newtable(L);
if(pointed.type == POINTEDTHING_NODE)
{
lua_pushstring(L, "node");
lua_setfield(L, -2, "type");
push_v3s16(L, pointed.node_undersurface);
lua_setfield(L, -2, "under");
push_v3s16(L, pointed.node_abovesurface);
lua_setfield(L, -2, "above");
}
else if(pointed.type == POINTEDTHING_OBJECT)
{
lua_pushstring(L, "object");
lua_setfield(L, -2, "type");
objectref_get(L, pointed.object_id);
lua_setfield(L, -2, "ref");
}
else
{
lua_pushstring(L, "nothing");
lua_setfield(L, -2, "type");
}
}
void stackDump(lua_State *L, std::ostream &o)
{
int i;
int top = lua_gettop(L);
for (i = 1; i <= top; i++) { /* repeat for each level */
int t = lua_type(L, i);
switch (t) {
case LUA_TSTRING: /* strings */
o<<"\""<<lua_tostring(L, i)<<"\"";
break;
case LUA_TBOOLEAN: /* booleans */
o<<(lua_toboolean(L, i) ? "true" : "false");
break;
case LUA_TNUMBER: /* numbers */ {
char buf[10];
snprintf(buf, 10, "%g", lua_tonumber(L, i));
o<<buf;
break; }
default: /* other values */
o<<lua_typename(L, t);
break;
}
o<<" ";
}
o<<std::endl;
}
#if 0
// Dump stack top with the dump2 function
static void dump2(lua_State *L, const char *name)
{
// Dump object (debug)
lua_getglobal(L, "dump2");
luaL_checktype(L, -1, LUA_TFUNCTION);
lua_pushvalue(L, -2); // Get previous stack top as first parameter
lua_pushstring(L, name);
if(lua_pcall(L, 2, 0, 0))
script_error(L, "error: %s", lua_tostring(L, -1));
}
#endif
bool string_to_enum(const EnumString *spec, int &result,
const std::string &str)
{
const EnumString *esp = spec;
while(esp->str){
if(str == std::string(esp->str)){
result = esp->num;
return true;
}
esp++;
}
return false;
}
/*bool enum_to_string(const EnumString *spec, std::string &result,
int num)
{
const EnumString *esp = spec;
while(esp){
if(num == esp->num){
result = esp->str;
return true;
}
esp++;
}
return false;
}*/
int getenumfield(lua_State *L, int table,
const char *fieldname, const EnumString *spec, int default_)
{
int result = default_;
string_to_enum(spec, result,
getstringfield_default(L, table, fieldname, ""));
return result;
}
|