Latest Posts

Topic: Copy Paste Script

Gilb
Avatar
Topic Opener
Joined: 2020-12-01, 11:20
Posts: 13
Ranking
Pry about Widelands
Posted at: 2021-02-14, 20:13

This is the copy paste script i use to copy a map area x times to the right. It makes it much easier to create the same landmass and resources and for an arbitrary amount of players. Adjust the coordinates to your own case and give it some time for bigger maps. The editor might look frozen but it will work. Place in your main (widelands.exe) folder and open with a text editor.


Top Quote
Gilb
Avatar
Topic Opener
Joined: 2020-12-01, 11:20
Posts: 13
Ranking
Pry about Widelands
Posted at: 2021-02-14, 20:17

Hm i could not attach the *.lua file, so you have to create it your own

players = 4

-- Make sure these coordinates and the loop below don't exceed your map dimensions!!
-- They should scan your first player area and stamp it down for the players to the right.
-- If you want to copy in a grid, first copy x times to the right, then attach the "+(a*32)" to the y in the same line.

for x = 0, 31 do
for y = 0, 95 do

copy=wl.Editor().map:get_field(x, y)

  for a = 1, players-1 do

  paste=wl.Editor().map:get_field(x+(a*32), y)

  paste.terr=(copy.terr)
  paste.terd=(copy.terd)
  paste.height=(copy.height)
  paste.resource=(copy.resource)
  paste.resource_amount=(copy.resource_amount)

  if paste.immovable ~= nil then
  paste.immovable:remove()
  end

  if copy.immovable ~= nil then
  wl.Editor().map:place_immovable(copy.immovable.descr.name, paste)
  end

  end

end
end

Edited: 2021-02-15, 18:11

Top Quote
kaputtnik
Avatar
Joined: 2013-02-18, 20:48
Posts: 2434
OS: Archlinux
Version: current master
Ranking
One Elder of Players
Location: Germany
Posted at: 2021-02-15, 16:09

Edit: Attaching lua scripts do work, see attachment. Does your the file have the extension .lua?

Nice script face-smile.png

You might want to get the maps width and height automatically and make a check if this doesn't fit:

width = wl.Editor.().map.width
height = wl.Editor().map.height

if width < players*32 then

   --do stuff

end
Edited: 2021-02-15, 16:10

Attachment:
editor_copy_script_from_gilb.lua (795 bytes)

Fight simulator for Widelands:
https://wide-fighter.netlify.app/

Top Quote
Gilb
Avatar
Topic Opener
Joined: 2020-12-01, 11:20
Posts: 13
Ranking
Pry about Widelands
Posted at: 2021-02-15, 18:09

Yes, it's a .lua file. Error was something like "...looks like code, but we think it is text."

I thought about map.width and so on too, but guess i made a mistake implementing it, so i just stood with the numbers. If you want to copy in a grid you need 2 runs with different area too.


Top Quote