LUA Resources, Help and a tiny Beginners Guide by enclave

Discussion of Lua and LuaWML support, development, and ideas.

Moderators: Forum Moderators, Developers

Re: LUA Resources, Help and a tiny Beginners Guide by enclav

Postby enclave » October 14th, 2016, 9:12 pm

woooohoooooo gfgtdf you are great!
your approach is not what I could see in wiki or in eohs codes or somewhere else.. it's different! And I think it's just what i needed!

Your code worked brilliantly for me:
Code: Select all
wesnoth.theme_items.unit_weapons = function()
  return {
    T.element {
      image="items/archery-target-right.png~CROP(25,28,25,28)~SCALE(25,25)"
    }
  }
end

And after your message I think I now understand how it works and what to do to achieve what I want.. ! Or at least I'm much closer to understanding! Thanks!

PS. This is so great!!!!!! Can't thank you enough :)
Code: Select all
local old_unit_weapons = wesnoth.theme_items.unit_weapons
wesnoth.theme_items.unit_weapons = function()
local oldvalue = old_unit_weapons()
local newtag = T.element { image="items/archery-target-right.png~CROP(25,28,25,28)~SCALE(25,25)",
     tooltip="hrenj" }
  table.insert(oldvalue,newtag)
  return oldvalue
end

This is working perfectly fine =] It inserts a new table element in the end of old unit weapons! (funny thing is that with select event it keeps adding this image after each click) And what makes me really happy, is that I understand how it works now!!! Your answer should be in wiki instead of what they put there.. it is clearer than anything... And I can finally rest. Will experiment more with it tomorrow.. Thanks!

You already gave me all the information I need, but maybe you also know how to replace particular part of old wml?
table.insert(oldvalue,newtag) - can it be inserted into particular place of oldvalue table?
can some particular part of oldvalue table be erased?
enclave
 
Posts: 533
Joined: December 15th, 2007, 8:52 am

Re: LUA Resources, Help and a tiny Beginners Guide by enclav

Postby gfgtdf » October 14th, 2016, 10:12 pm

table.insert(oldvalue, pos, newtag) can insert the new tag at a given position pos, for example table.insert(oldvalue, 1, newtag) will insert t the new tag at the top, table.remove(oldvalue, pos) can remove subtag number pos, for example table.remove(oldvalue, 1) will remove the first element of oldvalue.
Scenario with Robots SP scenario (1.11/1.12), allows you to build your units with components, PYR No preperation turn 1.12 mp-mod that allows you to select your units immideately after the game begins.
gfgtdf
Developer
 
Posts: 910
Joined: February 10th, 2013, 2:25 pm

Re: LUA Resources, Help and a tiny Beginners Guide by enclav

Postby enclave » October 15th, 2016, 5:32 pm

Thanks so much gfgtdf!!!!

Updated this post to say thank you so much again!!! :)

And here is a piece of code that is tested and works for me, it displays a new kind of attack for my custom ranged units:
Spoiler:


the following line was needed to avoid lua errors:
Code: Select all
if wunit ~= nil then

it means "if there is no displayed unit then"..
if you put the code into start event, then when it starts there is no displayed unit in the right-hand side panel.. and therefore wunit = nil.. and when we are trying to get variables out of it, it says it can not index nil value..

if you leave the code in select event then every time you click, it inserts the image and your custom text into the displayed unit.. so you will end up with 1 million images in your units right hand side panel..
to avoid that you would either need to create more if then.. or modify unit variables as they done.. and maybe it even wouldn't work. Or instead of "table.insert()", use something else.. so my solution was just to move my lua code to start event (prestart/preload should have same effect I believe).
Last edited by enclave on October 17th, 2016, 6:33 pm, edited 4 times in total.
enclave
 
Posts: 533
Joined: December 15th, 2007, 8:52 am

Re: LUA Resources, Help and a tiny Beginners Guide by enclav

Postby gfgtdf » October 16th, 2016, 12:54 am

updated my previous post which contained an error.
Scenario with Robots SP scenario (1.11/1.12), allows you to build your units with components, PYR No preperation turn 1.12 mp-mod that allows you to select your units immideately after the game begins.
gfgtdf
Developer
 
Posts: 910
Joined: February 10th, 2013, 2:25 pm

Re: LUA Resources, Help and a tiny Beginners Guide by enclav

Postby enclave » October 21st, 2016, 11:07 pm

This will create a new User Interface bar of resources on top of the screen..
I found that terrain is the best place for it, as it looks good and does not disturb anything.. really..

Spoiler:

Code: Select all
[event]
name=turn refresh
first_time_only=yes
##
[lua]
code=<<
local old_display_terrain = wesnoth.theme_items.terrain
wesnoth.theme_items.terrain = function()
local oldvalue = old_display_terrain()
--
local whole_wml = wesnoth.theme_items.income()
local element_subtag = helper.get_child(whole_wml, "element")
local bcd1 = element_subtag.text
local bcd2 = string.gsub(bcd1, '<span foreground="#777777">', "")
local abc = string.gsub(bcd2, "</span>", "")
if abc ~= "0" then
     local newtag1 = T.element { image="items/straw-bale1.png~SCALE(32,32)~CROP(7,7,18,18)~SCALE(18,18)",
     tooltip="food" }
     local newtag2 = T.element { text=wesnoth.get_variable("player["..abc.."].food").." ",
     tooltip="Amount of food current side has"}
     --
     local newtag3 = T.element { image="terrain/forest/deciduous-summer-small.png~CROP(42,35,63,75)~SCALE(18,18)",
     tooltip="wood" }
     local newtag4 = T.element { text=wesnoth.get_variable("player["..abc.."].wood").." ",
     tooltip="Amount of wood current side has"}
     --
     local newtag5 = T.element { image="scenery/rock2.png~CS(42,42,42)~CROP(12,17,53,40)~SCALE(16,16)",
     tooltip="stone" }
     local newtag6 = T.element { text=wesnoth.get_variable("player["..abc.."].stone").." ",
     tooltip="Amount of stone current side has"}
     --
     local newtag7 = T.element { image="items/gold-coins-small.png~CROP(22,24,31,30)~SCALE(17,17)",
     tooltip="gold" }
     local newtag8 = T.element { text=wesnoth.get_variable("player["..abc.."].gold").."     ",
     tooltip="Amount of gold current side has"}
      table.insert(oldvalue,1,newtag1)
     table.insert(oldvalue,2,newtag2)
     table.insert(oldvalue,3,newtag3)
     table.insert(oldvalue,4,newtag4)
     table.insert(oldvalue,5,newtag5)
     table.insert(oldvalue,6,newtag6)
     table.insert(oldvalue,7,newtag7)
     table.insert(oldvalue,8,newtag8)
          end
  return oldvalue
end
>>
[/lua]
[/event]

Spoiler:


PS. you may see how it works on practice by downloading New Settlers add-on.
PPS. there may be issues with resource bar invisible for mac users. But I only have 1 such confirmation. Reasons unknown.
PPPS. I assume there may also be problems with seeing resource bar with very small resolutions.. But it's only a guess.
enclave
 
Posts: 533
Joined: December 15th, 2007, 8:52 am

Previous

Return to Lua Labs

Who is online

Users browsing this forum: No registered users and 1 guest