| Time |
Nick |
Message |
| 00:18 |
|
proller joined #minetest-project |
| 00:22 |
|
OldCoder joined #minetest-project |
| 01:30 |
|
ThomasMonroe joined #minetest-project |
| 01:47 |
|
ssieb joined #minetest-project |
| 02:01 |
|
proller joined #minetest-project |
| 02:15 |
|
ThomasMonroe joined #minetest-project |
| 02:23 |
|
ThomasMonroe joined #minetest-project |
| 02:23 |
|
ThomasMonroe left #minetest-project |
| 02:32 |
OldCoder |
|
| 02:40 |
|
Brackston joined #minetest-project |
| 02:46 |
OldCoder |
Brackston, welcome! |
| 03:08 |
Brackston |
Thank you |
| 03:08 |
OldCoder |
|
| 03:09 |
|
Topic for #minetest-project is now #minetest-project is not renaming, moving, or shutting down |
| 03:09 |
|
Topic for #minetest-project is now #minetest-project is not renaming, moving, or shutting down | Politeness is good |
| 03:09 |
OldCoder |
Hm |
| 03:10 |
|
Topic for #minetest-project is now #minetest-project is not renaming, moving, or shutting down | Civility is preferred |
| 03:10 |
|
Topic for #minetest-project is now #minetest-project is not renaming, moving, or shutting down | Identify people who tell you that | Be civil in the channel |
| 03:20 |
|
DI3HARD139 joined #minetest-project |
| 03:40 |
|
behalebabo joined #minetest-project |
| 05:33 |
|
lumidify joined #minetest-project |
| 06:02 |
OldCoder |
lumidify, lumidihi |
| 06:03 |
lumidify |
Hi OldCoder |
| 06:07 |
OldCoder |
o/ |
| 06:25 |
|
passant joined #minetest-project |
| 06:31 |
|
CWz joined #minetest-project |
| 06:41 |
OldCoder |
CWz, welcome |
| 06:41 |
OldCoder |
CWz, this channel is not "shutting down" |
| 06:41 |
OldCoder |
at all |
| 07:59 |
|
Lunatrius` joined #minetest-project |
| 09:00 |
|
nrzkt joined #minetest-project |
| 09:01 |
|
nerzhul left #minetest-project |
| 09:44 |
|
proller joined #minetest-project |
| 10:34 |
|
Fixer joined #minetest-project |
| 11:05 |
|
Jordach joined #minetest-project |
| 11:29 |
|
proller joined #minetest-project |
| 11:29 |
|
rubenwardy joined #minetest-project |
| 11:31 |
|
ThomasMonroe joined #minetest-project |
| 12:17 |
|
Fixer joined #minetest-project |
| 12:28 |
|
proller joined #minetest-project |
| 12:31 |
|
CWz joined #minetest-project |
| 12:43 |
|
ld50_of_water joined #minetest-project |
| 12:43 |
|
NathanS21 joined #minetest-project |
| 13:16 |
|
OldCoder joined #minetest-project |
| 13:22 |
|
OldCoder joined #minetest-project |
| 13:32 |
|
CWz left #minetest-project |
| 13:51 |
|
octacian joined #minetest-project |
| 13:57 |
|
CWz joined #minetest-project |
| 14:40 |
|
XtremeHacker joined #minetest-project |
| 14:41 |
|
Lunatrius` joined #minetest-project |
| 16:00 |
|
Fixer joined #minetest-project |
| 16:20 |
|
Krock joined #minetest-project |
| 16:24 |
|
ThomasMonroe left #minetest-project |
| 17:22 |
|
ssieb joined #minetest-project |
| 17:40 |
|
XtremeHacker joined #minetest-project |
| 18:13 |
|
Grandolf joined #minetest-project |
| 18:33 |
|
DI3HARD139 joined #minetest-project |
| 19:18 |
|
tenplus1 joined #minetest-project |
| 19:18 |
tenplus1 |
hi folks |
| 19:24 |
|
tenplus1 left #minetest-project |
| 19:58 |
|
ld50_of_water joined #minetest-project |
| 20:06 |
|
octacian_ joined #minetest-project |
| 20:08 |
|
octacian joined #minetest-project |
| 20:32 |
|
proller joined #minetest-project |
| 20:37 |
OldCoder |
https://github.com/Grandolf/filez.git |
| 20:37 |
OldCoder |
Grandolf, cloning |
| 20:37 |
OldCoder |
into grandolfia |
| 20:38 |
Grandolf |
kk |
| 20:38 |
OldCoder |
Which is still up, actually |
| 20:38 |
OldCoder |
OK I C 2 mods |
| 20:38 |
OldCoder |
npcf and wiki |
| 20:38 |
Grandolf |
yea |
| 20:38 |
OldCoder |
Wait |
| 20:38 |
OldCoder |
Adding those to the test modset in grandolfia |
| 20:39 |
OldCoder |
mv -i npcf wiki /opt/minebest/mtworlds/grandolfia/world_game/mods/ |
| 20:39 |
Grandolf |
:P |
| 20:40 |
OldCoder |
You added code to npcf... |
| 20:40 |
Grandolf |
yes |
| 20:40 |
OldCoder |
Well, it's a test world now |
| 20:40 |
OldCoder |
Hold on |
| 20:40 |
OldCoder |
I don't see the code; which file? |
| 20:40 |
OldCoder |
Wait |
| 20:40 |
OldCoder |
Found it |
| 20:40 |
Grandolf |
mynpc.lua |
| 20:40 |
Grandolf |
kk |
| 20:41 |
OldCoder |
Grandolf, you're doing this call: |
| 20:41 |
OldCoder |
wikilib.show_wiki_page(clicker:get_player_name(), "Main") |
| 20:41 |
Grandolf |
yea |
| 20:41 |
OldCoder |
But there is nothing to define wikilib |
| 20:41 |
OldCoder |
Correct? |
| 20:42 |
OldCoder |
Let me make a stub mod to work this out... |
| 20:42 |
Grandolf |
kk |
| 20:44 |
|
proller joined #minetest-project |
| 20:44 |
|
troller joined #minetest-project |
| 20:47 |
OldCoder |
Working on it |
| 20:47 |
Grandolf |
k |
| 20:48 |
OldCoder |
minetest.register_on_chat_message (function (name, message) |
| 20:48 |
OldCoder |
if message == '/turtles' then |
| 20:48 |
OldCoder |
minetest.chat_send_player (name, "moo") |
| 20:48 |
OldCoder |
-- wikilib.show_wiki_page (name, "Main") |
| 20:48 |
OldCoder |
return true |
| 20:48 |
OldCoder |
end |
| 20:48 |
OldCoder |
end) |
| 20:48 |
OldCoder |
I have reduced your entire mod to that |
| 20:48 |
OldCoder |
If we can make the wikilib line work, in business, right? |
| 20:49 |
OldCoder |
This is a useful approach. Start simple. |
| 20:49 |
OldCoder |
Now... How would this mod work? There is no wikilib. |
| 20:49 |
OldCoder |
You asked me, how to include wikilib file. |
| 20:49 |
Grandolf |
thats in /wiki |
| 20:49 |
OldCoder |
Right, but where is the code? |
| 20:49 |
OldCoder |
Check your mod |
| 20:49 |
OldCoder |
You never include it |
| 20:50 |
OldCoder |
Reviewing wiki mod now |
| 20:50 |
OldCoder |
Adding this line to your mod's depends.txt 1st: |
| 20:50 |
OldCoder |
wiki |
| 20:50 |
OldCoder |
Now your mod will be sure to come after wiki is loaded |
| 20:50 |
Grandolf |
there is a wikilib.lua |
| 20:51 |
OldCoder |
Not in the github sources |
| 20:51 |
OldCoder |
Check for yourself |
| 20:51 |
OldCoder |
Only in the wiki mod |
| 20:51 |
OldCoder |
I mean... |
| 20:51 |
OldCoder |
Not in your new mod |
| 20:51 |
OldCoder |
You included the wiki mod |
| 20:52 |
Grandolf |
the wiki mod has the wiki.lua |
| 20:52 |
OldCoder |
But there is no connection to your mod |
| 20:52 |
OldCoder |
Right |
| 20:52 |
OldCoder |
But is wikilib a public object? |
| 20:52 |
Grandolf |
*wikilib.lua |
| 20:52 |
OldCoder |
Hold on |
| 20:53 |
OldCoder |
The wiki *mod* has a public object... so is the issue that you did not load wiki first? |
| 20:53 |
OldCoder |
Testing |
| 20:53 |
OldCoder |
minetest-restart grandolfia |
| 20:54 |
OldCoder |
Forgot to uncomment that line... |
| 20:55 |
OldCoder |
It works |
| 20:55 |
OldCoder |
I see the Jailbreak page |
| 20:55 |
OldCoder |
Go into Grandolfia if you like and type /turtles |
| 20:55 |
Grandolf |
thats old |
| 20:55 |
Grandolf |
kk |
| 20:55 |
OldCoder |
Right |
| 20:55 |
OldCoder |
But it came with the mod |
| 20:55 |
Grandolf |
hm |
| 20:55 |
OldCoder |
So, this actually works |
| 20:55 |
OldCoder |
In your home world |
| 20:56 |
OldCoder |
Try adding wiki to depends.txt in your revised mod |
| 20:56 |
OldCoder |
Confirm that nothing still happens |
| 20:56 |
OldCoder |
Can do that now? |
| 20:56 |
Grandolf |
yes, doing it |
| 20:57 |
Grandolf |
the npc on rightclick still isnt showing it :/ |
| 20:57 |
OldCoder |
Fine |
| 20:57 |
OldCoder |
Next test is this |
| 20:58 |
OldCoder |
Rename init.lua in your new mod to init.save or something |
| 20:58 |
OldCoder |
and add this init.lua instead: |
| 20:58 |
OldCoder |
minetest.register_on_chat_message (function (name, message) |
| 20:58 |
OldCoder |
if message == '/turtles' then |
| 20:58 |
OldCoder |
minetest.chat_send_player (name, "moo") |
| 20:58 |
OldCoder |
wikilib.show_wiki_page (name, "Main") |
| 20:58 |
OldCoder |
return true |
| 20:59 |
OldCoder |
end |
| 20:59 |
OldCoder |
end) |
| 20:59 |
OldCoder |
|
| 20:59 |
OldCoder |
Double check typing or paste |
| 20:59 |
OldCoder |
then restart your test world |
| 20:59 |
OldCoder |
And after in and past any initial screens, type /turtles |
| 20:59 |
OldCoder |
What happens? |
| 21:01 |
Grandolf |
it works |
| 21:01 |
Grandolf |
the wiki shows up |
| 21:01 |
OldCoder |
So, we have |
| 21:01 |
OldCoder |
a divide by two situation |
| 21:01 |
OldCoder |
It is good to have such |
| 21:01 |
OldCoder |
If something works and does not work... |
| 21:02 |
OldCoder |
You look for middle and repeat |
| 21:02 |
OldCoder |
Until issue is found |
| 21:02 |
OldCoder |
But next step is this... |
| 21:02 |
OldCoder |
In the place where the other call is... |
| 21:02 |
OldCoder |
Add the "moo" line you see here |
| 21:02 |
OldCoder |
minetest.chat_send_player (name, "moo") |
| 21:02 |
OldCoder |
Hm, wait |
| 21:02 |
OldCoder |
Need to get player name there, hold on |
| 21:03 |
OldCoder |
Ah, you have it... |
| 21:03 |
OldCoder |
wikilib.show_wiki_page(clicker:get_player_name(), "Main") |
| 21:03 |
OldCoder |
Before that line... |
| 21:03 |
OldCoder |
minetest.chat_send_player (clicker:get_player_name(), "moo") |
| 21:03 |
OldCoder |
Insert that and restart |
| 21:03 |
OldCoder |
All right? |
| 21:03 |
Grandolf |
in the mynpc.lua? |
| 21:04 |
OldCoder |
It is called |
| 21:04 |
OldCoder |
newnpc.lua in my copy |
| 21:04 |
Grandolf |
yea srry XD |
| 21:04 |
OldCoder |
Wherever you have this line: |
| 21:04 |
Grandolf |
it is that |
| 21:04 |
OldCoder |
OK proceed |
| 21:07 |
Grandolf |
nothing changed |
| 21:07 |
OldCoder |
Grandolf, meaning |
| 21:07 |
OldCoder |
Moo did not appear, right? |
| 21:07 |
Grandolf |
on rightclick still give me the npc's name only |
| 21:07 |
OldCoder |
Moo did not appear, right? |
| 21:07 |
Grandolf |
correct |
| 21:07 |
OldCoder |
This is good news |
| 21:08 |
OldCoder |
Let us confirm next point... |
| 21:08 |
OldCoder |
Moment, grepping |
| 21:08 |
OldCoder |
minetest.log("action", "I Like Turtles") |
| 21:08 |
OldCoder |
Insert that before the two special lines |
| 21:08 |
OldCoder |
the chat_send_player and the show_wiki_page |
| 21:08 |
OldCoder |
When you run minetest |
| 21:09 |
OldCoder |
can you save output? How do you presently start it? |
| 21:09 |
Grandolf |
i use the terminal |
| 21:09 |
OldCoder |
You type just "minetest" or what? |
| 21:09 |
Grandolf |
lotta.log has the logs |
| 21:09 |
Grandolf |
./runlotta.sh |
| 21:09 |
OldCoder |
So, this is based on lotta and the logs are saved? |
| 21:09 |
OldCoder |
Proceed |
| 21:09 |
Grandolf |
for server |
| 21:09 |
OldCoder |
Add that .log line |
| 21:10 |
Grandolf |
minetest for minetest game |
| 21:10 |
OldCoder |
Delete the old log file first |
| 21:10 |
OldCoder |
1) Stop game |
| 21:10 |
OldCoder |
2) Delete log file |
| 21:10 |
OldCoder |
3) Add that .log line |
| 21:10 |
OldCoder |
4) Restart |
| 21:10 |
OldCoder |
5) Profit |
| 21:10 |
OldCoder |
<OldCoder> minetest.log("action", "I Like Turtles") |
| 21:10 |
OldCoder |
<OldCoder> Insert that before the two special lines |
| 21:10 |
OldCoder |
<OldCoder> the chat_send_player and the show_wiki_page |
| 21:10 |
Grandolf |
lotta.log right? |
| 21:10 |
OldCoder |
Probably, let us try this |
| 21:10 |
OldCoder |
Do #1-5 |
| 21:11 |
Grandolf |
alright |
| 21:11 |
Grandolf |
server running |
| 21:13 |
Grandolf |
https://pastebin.com/rW8LjbxU |
| 21:19 |
OldCoder |
Grandolf, back in 4 minutes |
| 21:19 |
OldCoder |
Or so |
| 21:19 |
Grandolf |
kk |
| 21:24 |
OldCoder |
Grandolf, R |
| 21:24 |
OldCoder |
Grandolf, so, no turtles? |
| 21:25 |
OldCoder |
Grandolf, conclusion: that block of code isn't being called |
| 21:25 |
OldCoder |
Meaning, the issue isn't [presently] with the wiki code at all |
| 21:25 |
Grandolf |
ic |
| 21:27 |
OldCoder |
So, progress |
| 21:27 |
OldCoder |
Does the output |
| 21:27 |
OldCoder |
definitely contain no turtles? |
| 21:28 |
Grandolf |
2017-04-21 17:28:09: ACTION[Server]: Grandolf right-clicks object 38: LuaEntitySAO at (7,24,6) |
| 21:28 |
Grandolf |
when i rightclick |
| 21:30 |
Grandolf |
i gtg eat dinner |
| 21:30 |
Grandolf |
cu later |
| 21:31 |
OldCoder |
OK |
| 21:31 |
OldCoder |
Grandolf, if you see this later, your code isn't hooking the event |
| 21:31 |
OldCoder |
So, no need to worry about the wiki code yet |
| 21:52 |
Grandolf |
kk |
| 21:52 |
Grandolf |
im back |
| 21:53 |
OldCoder |
Grandolf, see above |
| 21:53 |
OldCoder |
Looking at how you hooked the event now |
| 21:54 |
OldCoder |
So, you called register_npc |
| 21:54 |
OldCoder |
Let's look at that... |
| 21:55 |
OldCoder |
Grandolf, here? you can see the explanation for yourself if so |
| 21:55 |
Grandolf |
yes |
| 21:55 |
OldCoder |
OK |
| 21:55 |
OldCoder |
Follow the preceding so far? |
| 21:55 |
OldCoder |
The wikicode wasn't working |
| 21:55 |
OldCoder |
Because the code was never *called* |
| 21:55 |
Grandolf |
yea |
| 21:55 |
OldCoder |
Understand how we have demonstrated this? |
| 21:55 |
OldCoder |
Understand how we have demonstrated this? |
| 21:55 |
Grandolf |
how do i get it to call? |
| 21:55 |
Grandolf |
yes\ |
| 21:55 |
OldCoder |
Well, that is the next part... |
| 21:56 |
OldCoder |
We ask, How is it supposedly getting called? |
| 21:56 |
OldCoder |
Answer is |
| 21:56 |
OldCoder |
You are setting on_rightclick |
| 21:56 |
OldCoder |
But who is using that? |
| 21:56 |
OldCoder |
All of this is in a function call |
| 21:56 |
OldCoder |
Scroll up, what function are you calling? |
| 21:56 |
OldCoder |
Hint: |
| 21:56 |
OldCoder |
Line 37 |
| 21:57 |
OldCoder |
of newnpcs.lua |
| 21:57 |
OldCoder |
Grandolf |
| 21:57 |
Grandolf |
npcf:register_npc("npcf:deco_npc9" ,{ |
| 21:57 |
OldCoder |
So |
| 21:57 |
Grandolf |
regist_npc |
| 21:57 |
OldCoder |
You are calling a function named register_npc |
| 21:57 |
OldCoder |
Which you are passing |
| 21:57 |
OldCoder |
on_register = to |
| 21:57 |
OldCoder |
and that is how |
| 21:58 |
OldCoder |
you expect the wiki code to be called |
| 21:58 |
OldCoder |
Got all that? |
| 21:58 |
Grandolf |
yea |
| 21:58 |
OldCoder |
Well, do this |
| 21:58 |
OldCoder |
In the mod top dir |
| 21:58 |
OldCoder |
grep register_npc *.lua |
| 21:58 |
OldCoder |
What do you see? |
| 21:59 |
|
troller joined #minetest-project |
| 21:59 |
Grandolf |
repalce * with what? |
| 21:59 |
OldCoder |
Nothing |
| 21:59 |
OldCoder |
grep register_npc *.lua |
| 21:59 |
OldCoder |
Type that |
| 21:59 |
Grandolf |
grep: *.lua: No such file or directory |
| 21:59 |
OldCoder |
in the folder that has init.lua |
| 21:59 |
OldCoder |
Where are you? |
| 21:59 |
Grandolf |
in home |
| 21:59 |
Grandolf |
moving |
| 21:59 |
OldCoder |
No |
| 21:59 |
OldCoder |
the mod's folder |
| 22:00 |
OldCoder |
BTW We forgot something |
| 22:00 |
OldCoder |
Grandolf, go to the mod's folder |
| 22:00 |
OldCoder |
Indicate when there |
| 22:00 |
Grandolf |
npcf.lua:function npcf:register_npc(name, def) |
| 22:00 |
OldCoder |
Right |
| 22:00 |
OldCoder |
Now |
| 22:00 |
OldCoder |
Did you put init.lua back to normal? |
| 22:00 |
OldCoder |
I forgot to advise this |
| 22:00 |
Grandolf |
doing |
| 22:01 |
Grandolf |
done |
| 22:01 |
OldCoder |
Put init.lua back to normal, then restart |
| 22:01 |
OldCoder |
Question |
| 22:01 |
OldCoder |
Since there was no init.lua really |
| 22:01 |
OldCoder |
How was it you could see the entity to click on? |
| 22:01 |
OldCoder |
It should have said unknown? |
| 22:01 |
OldCoder |
Not a minor point |
| 22:01 |
OldCoder |
Is it being defined somewhere else? |
| 22:01 |
Grandolf |
prob |
| 22:01 |
OldCoder |
While you were using my debug code |
| 22:02 |
OldCoder |
Right, so totally different problem |
| 22:02 |
OldCoder |
Am I going too fast? |
| 22:02 |
Grandolf |
no |
| 22:02 |
OldCoder |
Let us track this |
| 22:02 |
OldCoder |
Rename init.lua to something |
| 22:02 |
OldCoder |
and type touch init.lua |
| 22:02 |
OldCoder |
Do you now have your original init.lua renamed |
| 22:02 |
OldCoder |
and a zero-length init.lua ? |
| 22:03 |
Grandolf |
yea |
| 22:03 |
OldCoder |
Restart and your NPCs should be gone |
| 22:03 |
OldCoder |
Unknowns |
| 22:03 |
OldCoder |
Confirm this |
| 22:04 |
Grandolf |
yep |
| 22:04 |
OldCoder |
But earlier |
| 22:04 |
OldCoder |
Did you restart and do the /turtles test |
| 22:04 |
OldCoder |
Or maybe forgot to restart? |
| 22:04 |
OldCoder |
How was it that we reduced the mod to a /turtles command |
| 22:05 |
OldCoder |
and your NPCs were still there? |
| 22:05 |
Grandolf |
i left everything else |
| 22:05 |
OldCoder |
OK! |
| 22:05 |
Grandolf |
just added the turtles |
| 22:05 |
OldCoder |
^ Explanation |
| 22:05 |
OldCoder |
Gud |
| 22:05 |
OldCoder |
Now, put the init.lua back |
| 22:05 |
OldCoder |
And let us review the register_npc function |
| 22:05 |
OldCoder |
You will see something interesting there |
| 22:06 |
OldCoder |
Indicate when ready to review |
| 22:06 |
Grandolf |
ready |
| 22:06 |
OldCoder |
Edit npcf.lua |
| 22:06 |
OldCoder |
the file that grep showed |
| 22:06 |
OldCoder |
register_npc is around line 150 |
| 22:06 |
OldCoder |
Go there or search for the name |
| 22:07 |
Grandolf |
function npcf:register_npc(name, def) |
| 22:07 |
OldCoder |
Scroll down and look for on_rightclick. What you will see... |
| 22:08 |
OldCoder |
is that register_npc is a thin wrapper |
| 22:08 |
OldCoder |
around register_entity |
| 22:08 |
OldCoder |
It does not pass on_rightclick through directly |
| 22:08 |
OldCoder |
Find this function's on_rightclick |
| 22:08 |
Grandolf |
on_rightclick = function(self, clicker) |
| 22:09 |
OldCoder |
There |
| 22:09 |
OldCoder |
minetest.chat_send_player(player_name, self.npc_name) |
| 22:09 |
OldCoder |
>>> minetest.chat_send_player(player_name, "woof") |
| 22:09 |
OldCoder |
if type(def.on_rightclick) == "function" then |
| 22:09 |
OldCoder |
>>> minetest.chat_send_player(player_name, "meow") |
| 22:09 |
OldCoder |
def.on_rightclick(self, clicker) |
| 22:09 |
OldCoder |
end |
| 22:09 |
OldCoder |
Add the two lines I marked with >>> but leave out the >>> |
| 22:09 |
OldCoder |
I will then explain |
| 22:10 |
Grandolf |
add that or replace the on_rightclick= |
| 22:10 |
OldCoder |
Add those two lines |
| 22:10 |
OldCoder |
Leave everything |
| 22:10 |
OldCoder |
I will then explain |
| 22:11 |
Grandolf |
kk |
| 22:12 |
OldCoder |
done? |
| 22:12 |
Grandolf |
on rightclick im getting woof and meow too now |
| 22:12 |
OldCoder |
What is happening |
| 22:12 |
OldCoder |
is that the woof is coming from where the register_npc's own rightclick code is |
| 22:12 |
OldCoder |
and the meow is coming from the code that is supposed to call YOUR rightclick code |
| 22:13 |
OldCoder |
But you say that your rightclick code is not being called |
| 22:13 |
OldCoder |
So, we have an inconsistency |
| 22:13 |
OldCoder |
They are fun |
| 22:13 |
OldCoder |
Wait |
| 22:13 |
OldCoder |
Definitely getting a meow? |
| 22:13 |
Grandolf |
yep |
| 22:13 |
OldCoder |
Wait |
| 22:14 |
OldCoder |
And this is definitely that entity |
| 22:14 |
OldCoder |
the one with the stuff we added to its click function? |
| 22:14 |
Grandolf |
im pretty sure, double checking |
| 22:15 |
Grandolf |
hm |
| 22:16 |
Grandolf |
i tried useing the giveme command and its claiming it doesnt exist\ |
| 22:16 |
OldCoder |
'cause somebody's right-click code is being called |
| 22:16 |
OldCoder |
One bug at a time... |
| 22:16 |
OldCoder |
Let's try this, then |
| 22:16 |
OldCoder |
def.on_rightclick(self, clicker) |
| 22:16 |
OldCoder |
Change that in the register_npc call to |
| 22:17 |
OldCoder |
def.on_rightclick(self, clicker,player_name) |
| 22:17 |
OldCoder |
Able to do that? |
| 22:17 |
OldCoder |
Oh wait |
| 22:17 |
OldCoder |
Stop |
| 22:17 |
OldCoder |
Ha |
| 22:17 |
OldCoder |
Grandolf, you here? |
| 22:17 |
Grandolf |
yea |
| 22:17 |
OldCoder |
Grandolf, look at the meow code |
| 22:17 |
Grandolf |
just finished |
| 22:17 |
Grandolf |
kk |
| 22:17 |
OldCoder |
The lines after it |
| 22:18 |
OldCoder |
def.on_rightclick(self, clicker) |
| 22:18 |
OldCoder |
That is how your on_rightclick function is called |
| 22:18 |
OldCoder |
Do you understand so far? |
| 22:18 |
OldCoder |
That is the actual call to your function |
| 22:18 |
Grandolf |
kk |
| 22:18 |
OldCoder |
Now, the self part is odd, disregard it |
| 22:18 |
Grandolf |
um was i suppose to put the meow with the npc? |
| 22:18 |
OldCoder |
What is passed |
| 22:18 |
OldCoder |
No, relax |
| 22:18 |
OldCoder |
Now, the self part is odd, disregard it |
| 22:18 |
OldCoder |
def.on_rightclick(self, clicker) |
| 22:19 |
OldCoder |
What is being passed to your on_rightclick function |
| 22:19 |
OldCoder |
What function arguments? |
| 22:19 |
OldCoder |
If you don't know |
| 22:19 |
OldCoder |
the terminology yet, I will explain |
| 22:19 |
OldCoder |
def.on_rightclick(self, clicker) <<< this is a function call |
| 22:20 |
OldCoder |
The function being called is your on_rightclick |
| 22:20 |
OldCoder |
What is being sent to your on_rightclick to use |
| 22:20 |
OldCoder |
Pro Tip: This is fun |
| 22:20 |
OldCoder |
<Lucifer> It is not Satanic Torture. Oh, well. |
| 22:20 |
Grandolf |
minetest.chat_send_player(player_name, self.npc_name) |
| 22:20 |
Grandolf |
if type(def.on_rightclick) == "function" then |
| 22:20 |
Grandolf |
def.on_rightclick(self, clicker,player_name) |
| 22:20 |
Grandolf |
minetest.chat_send_player(player_name, self.npc_name) |
| 22:20 |
Grandolf |
minetest.chat_send_player(player_name, "woof") |
| 22:20 |
Grandolf |
if type(def.on_rightclick) == "function" then |
| 22:20 |
OldCoder |
Grandolf, indicate when back, we are about done |
| 22:20 |
Grandolf |
minetest.chat_send_player(player_name, "meow") |
| 22:20 |
Grandolf |
def.on_rightclick(self, clicker) |
| 22:20 |
OldCoder |
|
| 22:20 |
OldCoder |
Grandolf, look at this function call |
| 22:21 |
OldCoder |
<Grandolf> def.on_rightclick(self, clicker) |
| 22:21 |
OldCoder |
Which you just pasted |
| 22:21 |
OldCoder |
Do you know what a function argument is, yet? |
| 22:21 |
Grandolf |
ik what a function is |
| 22:21 |
OldCoder |
Do you know what a function argument is, yet? |
| 22:21 |
OldCoder |
Not a function |
| 22:21 |
OldCoder |
But a function argument |
| 22:21 |
Grandolf |
not rerally XD |
| 22:21 |
OldCoder |
<Function Larry> You are bad |
| 22:21 |
Grandolf |
ik lol |
| 22:21 |
OldCoder |
<Function Sally> I m going back to Mother |
| 22:22 |
OldCoder |
A function |
| 22:22 |
OldCoder |
in most languages |
| 22:22 |
OldCoder |
takes arguments |
| 22:22 |
Grandolf |
is it the else if stuff? |
| 22:22 |
OldCoder |
Nope |
| 22:22 |
OldCoder |
Guess! Point OFF! |
| 22:22 |
OldCoder |
Bzzt |
| 22:22 |
OldCoder |
A function |
| 22:22 |
OldCoder |
takes arguments |
| 22:22 |
OldCoder |
To work with |
| 22:22 |
OldCoder |
for example |
| 22:22 |
OldCoder |
int addme (int a, b) { return a+b; } |
| 22:23 |
OldCoder |
That is a 'C' function. It takes a and b. |
| 22:23 |
OldCoder |
It adds them and returns the result. |
| 22:23 |
OldCoder |
In Lua... |
| 22:23 |
OldCoder |
Testing |
| 22:24 |
OldCoder |
Minute |
| 22:24 |
OldCoder |
Business email came in, but just a minute |
| 22:24 |
OldCoder |
We are almost done |
| 22:24 |
Grandolf |
kk |
| 22:27 |
OldCoder |
Letter answered, checking something about Lua |
| 22:27 |
Grandolf |
kk |
| 22:28 |
OldCoder |
function addme (a,b) return a+b; end |
| 22:28 |
OldCoder |
I believe that is correct |
| 22:29 |
OldCoder |
Grandolf, do you understand what a and b are here for? |
| 22:29 |
Grandolf |
they are3 variable |
| 22:29 |
Grandolf |
*are variables |
| 22:29 |
OldCoder |
2, not 3 |
| 22:29 |
OldCoder |
and they are function arguments |
| 22:29 |
OldCoder |
Function arguments are things passed to a function |
| 22:29 |
OldCoder |
to work with |
| 22:29 |
OldCoder |
function addme (a,b) return a+b; end |
| 22:29 |
OldCoder |
This function takes 2 of them |
| 22:29 |
OldCoder |
Study that and comment |
| 22:30 |
OldCoder |
Questions? |
| 22:30 |
Grandolf |
no |
| 22:30 |
OldCoder |
Can you write us a function that adds 3 integers? |
| 22:30 |
Grandolf |
i think i get it |
| 22:30 |
OldCoder |
Hint: |
| 22:30 |
OldCoder |
function addme (a,b) return a+b; end |
| 22:30 |
OldCoder |
^ writes 2 |
| 22:30 |
OldCoder |
Show us one that adds 3 ? |
| 22:31 |
OldCoder |
s/writes/adds/ |
| 22:31 |
Grandolf |
function addme (a,b,c) return a+b; end |
| 22:31 |
OldCoder |
Close |
| 22:31 |
Grandolf |
oops |
| 22:31 |
OldCoder |
Does that add 3 numbers? |
| 22:31 |
Grandolf |
a+b |
| 22:31 |
OldCoder |
should be? |
| 22:31 |
Grandolf |
should b a+b+c |
| 22:31 |
OldCoder |
yes |
| 22:31 |
OldCoder |
OK NOW |
| 22:31 |
OldCoder |
|
| 22:31 |
OldCoder |
function addme (a,b,c) return a+b+c; end |
| 22:32 |
OldCoder |
What would happen |
| 22:32 |
OldCoder |
If somebody called that like this: |
| 22:32 |
OldCoder |
|
| 22:32 |
OldCoder |
addme ("bacon") |
| 22:32 |
OldCoder |
<addme> I do not no wat to do |
| 22:32 |
Grandolf |
return bacon |
| 22:32 |
OldCoder |
Nope |
| 22:32 |
OldCoder |
What does the function do? |
| 22:32 |
OldCoder |
function addme (a,b,c) return a+b+c; end |
| 22:32 |
OldCoder |
What is it expecting? |
| 22:32 |
Grandolf |
more suff |
| 22:32 |
Grandolf |
it would error? |
| 22:32 |
OldCoder |
And stuff you can add |
| 22:32 |
OldCoder |
Probably |
| 22:33 |
OldCoder |
Or just ignore it or so on |
| 22:33 |
OldCoder |
Able to see where this is headed? |
| 22:33 |
OldCoder |
|
| 22:33 |
OldCoder |
In the register_npc function |
| 22:33 |
OldCoder |
Go to the meow code |
| 22:33 |
OldCoder |
Indicate when there |
| 22:33 |
Grandolf |
there |
| 22:33 |
OldCoder |
Look at the on_rightclick call after it |
| 22:33 |
OldCoder |
paste that call here |
| 22:34 |
Grandolf |
def.on_rightclick(self, clicker) |
| 22:34 |
OldCoder |
Now |
| 22:34 |
OldCoder |
Go to the new file that has your wiki call |
| 22:34 |
OldCoder |
Indicate when there |
| 22:34 |
Grandolf |
on_rightclick = function(pos, node, clicker, itemstack) |
| 22:34 |
OldCoder |
Ignore the self part |
| 22:35 |
OldCoder |
That part is weird |
| 22:35 |
OldCoder |
So |
| 22:35 |
OldCoder |
clicker |
| 22:35 |
OldCoder |
is sent |
| 22:35 |
OldCoder |
and |
| 22:35 |
OldCoder |
pos,node,clicker,itemstack |
| 22:35 |
OldCoder |
is expected |
| 22:35 |
OldCoder |
See a problem yet? |
| 22:35 |
Grandolf |
yes |
| 22:35 |
OldCoder |
Replace pos,node,clicker,itemstack |
| 22:35 |
OldCoder |
with just clicker |
| 22:35 |
Grandolf |
we need to add pos node and iremstack |
| 22:35 |
OldCoder |
No |
| 22:35 |
OldCoder |
because |
| 22:35 |
OldCoder |
wikilib.show_wiki_page(clicker:get_player_name(), "Main") |
| 22:35 |
OldCoder |
Does that need anything but clicker? |
| 22:36 |
Grandolf |
not really |
| 22:36 |
OldCoder |
Replace pos,node,clicker,itemstack with just clicker |
| 22:36 |
OldCoder |
on_rightclick = function(pos, node, clicker, itemstack) |
| 22:36 |
OldCoder |
becomes |
| 22:36 |
OldCoder |
on_rightclick = function(clicker) |
| 22:36 |
OldCoder |
Make that change |
| 22:36 |
Grandolf |
no , after clicker right? |
| 22:36 |
OldCoder |
Save file, exit, restart MT, click on your Disco Dancer |
| 22:36 |
OldCoder |
Hm? |
| 22:36 |
OldCoder |
Explain? |
| 22:36 |
Grandolf |
nvm |
| 22:36 |
OldCoder |
Ah |
| 22:36 |
OldCoder |
It is optional |
| 22:36 |
Grandolf |
kk |
| 22:36 |
OldCoder |
Omit it this time |
| 22:37 |
OldCoder |
Save file, exit, restart MT, click on your Disco Dancer |
| 22:37 |
Grandolf |
it crashed |
| 22:38 |
Grandolf |
luaentity_Rightclick(): ...esktop/lotta/worlds/lotta/worldmods/npcf/npcs/newnpc.lua:98: attempt to call method 'get_player_name' (a nil value) |
| 22:38 |
OldCoder |
Moment |
| 22:38 |
OldCoder |
Progress, anyway |
| 22:38 |
Grandolf |
lol |
| 22:38 |
OldCoder |
clicker does not have getplayername |
| 22:38 |
OldCoder |
Go back |
| 22:38 |
OldCoder |
to the register_npc function in the other file |
| 22:38 |
OldCoder |
Indicate when there |
| 22:38 |
Grandolf |
wikilib.show_wiki_page(clicker:get_player_name(), "Main") |
| 22:39 |
Grandolf |
add player_name after clicker? |
| 22:39 |
OldCoder |
Yes |
| 22:39 |
OldCoder |
Worth a shot |
| 22:39 |
OldCoder |
Not there |
| 22:39 |
OldCoder |
Go back to the register_npc function in the other file |
| 22:39 |
OldCoder |
Indicate when there |
| 22:40 |
Grandolf |
minetest.chat_send_player(player_name, self.npc_name) |
| 22:40 |
Grandolf |
if type(def.on_rightclick) == "function" then |
| 22:40 |
Grandolf |
def.on_rightclick(self, clicker,player_name) |
| 22:40 |
OldCoder |
Right |
| 22:40 |
OldCoder |
Save and edit the other file now |
| 22:40 |
Grandolf |
its already got playername |
| 22:40 |
Grandolf |
npcf.lua |
| 22:40 |
OldCoder |
on_rightclick = function(clicker, player_name) |
| 22:40 |
OldCoder |
Is that it? |
| 22:41 |
OldCoder |
make that change |
| 22:41 |
OldCoder |
and |
| 22:41 |
Grandolf |
on_rightclick = function(clicker,player_name) |
| 22:41 |
OldCoder |
wikilib.show_wiki_page(player_name, "Main") |
| 22:41 |
OldCoder |
that one too |
| 22:41 |
OldCoder |
Note underscore in both places |
| 22:41 |
OldCoder |
Now, the "self" part doesn't line up, but ignore that unless it still crashes |
| 22:41 |
OldCoder |
Can you paste |
| 22:42 |
OldCoder |
the entire short on_rightclick = function block ? |
| 22:42 |
Grandolf |
in the npcf or newnpc? |
| 22:42 |
OldCoder |
on_rightclick = only happens in newnpc |
| 22:42 |
OldCoder |
IIRC |
| 22:42 |
Grandolf |
on_rightclick = function(clicker,player_name) |
| 22:42 |
Grandolf |
if clicker then |
| 22:42 |
Grandolf |
minetest.log("action", "I Like Turtles") |
| 22:42 |
Grandolf |
minetest.chat_send_player (name, "moo") |
| 22:43 |
Grandolf |
wikilib.show_wiki_page(clicker:get_player_name(), "Main") |
| 22:43 |
Grandolf |
end |
| 22:43 |
Grandolf |
end, |
| 22:43 |
OldCoder |
You did not make the 2nd change |
| 22:43 |
OldCoder |
wikilib.show_wiki_page(player_name, "Main") |
| 22:43 |
OldCoder |
That one |
| 22:43 |
Grandolf |
take out get_ |
| 22:43 |
OldCoder |
No |
| 22:43 |
OldCoder |
Reduce it all the way to this: |
| 22:43 |
OldCoder |
wikilib.show_wiki_page(player_name, "Main") |
| 22:43 |
Grandolf |
kk |
| 22:44 |
OldCoder |
Also change the chat call to |
| 22:44 |
OldCoder |
minetest.chat_send_player (player_name, "moo") |
| 22:44 |
OldCoder |
Then repaste this block here |
| 22:44 |
Grandolf |
on_rightclick = function(clicker,player_name) |
| 22:44 |
Grandolf |
if clicker then |
| 22:45 |
Grandolf |
minetest.log("action", "I Like Turtles") |
| 22:45 |
Grandolf |
minetest.chat_send_player (player_name, "moo") |
| 22:45 |
Grandolf |
wikilib.show_wiki_page(player_name, "Main") |
| 22:45 |
Grandolf |
end |
| 22:45 |
Grandolf |
end, |
| 22:45 |
OldCoder |
Right |
| 22:45 |
OldCoder |
In general |
| 22:45 |
OldCoder |
Look at functions and understand |
| 22:45 |
OldCoder |
where all of the values come from |
| 22:45 |
OldCoder |
Here, two are passed in |
| 22:45 |
OldCoder |
And both are used |
| 22:45 |
OldCoder |
Study this code briefly, please |
| 22:46 |
OldCoder |
Indicate if do or don't understand each line |
| 22:46 |
Grandolf |
i do |
| 22:46 |
OldCoder |
Now, the other file... |
| 22:46 |
OldCoder |
def.on_rightclick(self, clicker,player_name) |
| 22:46 |
OldCoder |
Lines up... except for self |
| 22:46 |
OldCoder |
Ignore that for the moment |
| 22:46 |
OldCoder |
Save, restart, go find a Disco |
| 22:47 |
Grandolf |
it crashed again |
| 22:47 |
Grandolf |
getting log |
| 22:47 |
Grandolf |
luaentity_Rightclick(): ...esktop/lotta/worlds/lotta/worldmods/npcf/npcs/newnpc.lua:97: bad argument #1 to 'chat_send_player' (string expected, got userdata) |
| 22:47 |
Grandolf |
2017-04-21 18:46:06: ERROR[Main]: stack traceback: |
| 22:47 |
Grandolf |
2017-04-21 18:46:06: ERROR[Main]: [C]: in function 'chat_send_player' |
| 22:47 |
Grandolf |
2017-04-21 18:46:06: ERROR[Main]: ...esktop/lotta/worlds/lotta/worldmods/npcf/npcs/newnpc.lua:97: in function 'on_rightclick' |
| 22:47 |
Grandolf |
2017-04-21 18:46:06: ERROR[Main]: .../halt/Desktop/lotta/worlds/lotta/worldmods/npcf/npcf.lua:248: in function <.../halt/Desktop/lotta/worlds/lotta/worldmods/npcf/npcf.lua:235> |
| 22:47 |
OldCoder |
Wait |
| 22:48 |
OldCoder |
Try changing |
| 22:48 |
OldCoder |
Moment, checking, close |
| 22:49 |
OldCoder |
on_rightclick = function(clicker,player_name) |
| 22:49 |
OldCoder |
change that to |
| 22:49 |
OldCoder |
on_rightclick = function(stuff,clicker,player_name) |
| 22:50 |
OldCoder |
then save, restart |
| 22:50 |
sfan5 |
chat_send_player takes a string, you'll need to use clicker:get_player_name() in the call |
| 22:50 |
OldCoder |
sfan5, t y |
| 22:50 |
OldCoder |
sfan5, is self to be added or ignored here? |
| 22:50 |
OldCoder |
If the API does |
| 22:50 |
OldCoder |
def.on_rightclick(self, clicker,player_name) |
| 22:51 |
sfan5 |
for entities self is always included IIRC |
| 22:51 |
OldCoder |
def.on_rightclick(self, clicker,player_name) |
| 22:51 |
OldCoder |
Should the receiving function say |
| 22:51 |
OldCoder |
on_rightclick = function(something,clicker,player_name) |
| 22:51 |
OldCoder |
? |
| 22:51 |
sfan5 |
probably |
| 22:51 |
Grandolf |
it crashed |
| 22:51 |
OldCoder |
Grandolf, 2 changes |
| 22:51 |
OldCoder |
sfan5 just added another one |
| 22:51 |
OldCoder |
Change #1 |
| 22:51 |
OldCoder |
on_rightclick = function(something,clicker,player_name) |
| 22:51 |
OldCoder |
You made that one? |
| 22:52 |
Grandolf |
kk |
| 22:52 |
Grandolf |
and #2? |
| 22:52 |
sfan5 |
i usually define entity callbacks outside of the table as function EntityClass:on_rightlick(params, here) |
| 22:52 |
OldCoder |
He is just learning function arguments |
| 22:52 |
OldCoder |
Possibly just removing the chat line |
| 22:52 |
OldCoder |
will finish |
| 22:53 |
OldCoder |
Grandolf, remove the "moo" line for now |
| 22:53 |
OldCoder |
If still crashes, we must be very close, regardless |
| 22:54 |
Grandolf |
it did |
| 22:54 |
Grandolf |
[Mod Aging] Recorded Ages. |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: ServerError: AsyncErr: ServerThread::run Lua: Runtime error from mod '' in callback luaentity_Rightclick(): ...lt/Desktop/lotta/worlds/lotta/worldmods/wiki/wikilib.lua:34: Invalid core.check_player_privs argument type: nil |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: stack traceback: |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: [C]: in function 'error' |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: /opt/minetest/share/minetest/builtin/game/misc.lua:13: in function 'check_player_privs' |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: ...lt/Desktop/lotta/worlds/lotta/worldmods/wiki/wikilib.lua:34: in function 'get_page_path' |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: ...lt/Desktop/lotta/worlds/lotta/worldmods/wiki/wikilib.lua:97: in function 'load_page' |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: ...lt/Desktop/lotta/worlds/lotta/worldmods/wiki/wikilib.lua:142: in function 'get_wiki_page_formspec' |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: ...lt/Desktop/lotta/worlds/lotta/worldmods/wiki/wikilib.lua:188: in function 'show_wiki_page' |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: ...esktop/lotta/worlds/lotta/worldmods/npcf/npcs/newnpc.lua:97: in function 'on_rightclick' |
| 22:54 |
Grandolf |
2017-04-21 18:53:42: ERROR[Main]: .../halt/Desktop/lotta/worlds/lotta/worldmods/npcf/npcf.lua:253: in function <.../halt/Desktop/lotta/worlds/lotta/worldmods/npcf/npcf.lua:235> |
| 22:54 |
OldCoder |
Oops |
| 22:54 |
Grandolf |
shouldve pastebinned that |
| 22:54 |
OldCoder |
Wait, Reviewing |
| 22:55 |
OldCoder |
Made it into the wiki code... |
| 22:55 |
OldCoder |
Grandolf, I think I'd better try to reproduce this one... |
| 22:56 |
OldCoder |
Able to github latest versions of the two mods? And are they all I need from you for this? |
| 22:56 |
OldCoder |
I spawn the entity |
| 22:56 |
OldCoder |
and try to right click on it? |
| 22:56 |
Grandolf |
yea |
| 22:56 |
Grandolf |
1 sec |
| 22:57 |
|
Nathans21 joined #minetest-project |
| 22:57 |
OldCoder |
Nathans21, good day |
| 22:58 |
Nathans21 |
Hi oldcoder |
| 22:58 |
OldCoder |
o/ |
| 22:58 |
Grandolf |
https://github.com/Grandolf/filez.git |
| 22:59 |
OldCoder |
Grandolf, I will clone and attempt reproduce. Sorry not fixed but this was hopefully instructive... |
| 22:59 |
OldCoder |
You had two function contexts |
| 22:59 |
OldCoder |
A call and a definition |
| 22:59 |
OldCoder |
That definitely were not lining up. Probably still off. Do you understand this part? |
| 22:59 |
Grandolf |
yea\ |
| 22:59 |
OldCoder |
Not the still off part... might be several explanations |
| 23:00 |
OldCoder |
But function call and function definition must match |
| 23:00 |
OldCoder |
With special cases |
| 23:00 |
OldCoder |
There are languages |
| 23:00 |
OldCoder |
where the 1st argument is weird... "self" looked like that, but sfan5 is not sure |
| 23:00 |
OldCoder |
So, the key lessons for the day are... |
| 23:00 |
OldCoder |
* understand function arguments in calls and definitions |
| 23:01 |
OldCoder |
* debug code such as the woof and meow we did can tell you if code is being called at all |
| 23:01 |
OldCoder |
* get basics of setup down; you were missing a line in depends.txt. To get basics down, simple test cases can be helpful. |
| 23:01 |
OldCoder |
Is this acceptable for today? |
| 23:02 |
OldCoder |
I propose to check to see if the arguments both line up and are correct |
| 23:02 |
OldCoder |
The player parameter, clicker probably |
| 23:02 |
OldCoder |
Is not coming through correctly... |
| 23:02 |
OldCoder |
when privs of that player are checked, deep in the wiki operation |
| 23:03 |
OldCoder |
The player is being rejected, things turn up nil, and game goes belly up |
| 23:03 |
OldCoder |
|
| 23:03 |
Grandolf |
kk |
| 23:03 |
Grandolf |
thks OC :) |
| 23:03 |
OldCoder |
Grandolf, pleasure to fiddle with this, we will talk again... |
| 23:03 |
OldCoder |
I'll have time to clone and test after I finish some SQL work this weekend |
| 23:03 |
OldCoder |
AFK for now |
| 23:03 |
Grandolf |
k, cu |
| 23:03 |
OldCoder |
|