Ne, aber... Zitat von Corti Fog of war... Challenge accepted! Code: function onInit() rpg.graphics.setBlendMode "multiply" fogs = {} buffer = rpg.graphics.newImage(320, 240) light = rpg.graphics.newImage(100, 100) light:drawCircle(true, 50, 50, 50, 0xFFFFFFFF, 0x00000000) end function onFrame() if rpg.scene == "map" then local fog = fogs[rpg.map.id] if fog == nil then fog = rpg.graphics.newImage(rpg.map.width * 16, rpg.map.height * 16) fog:setBlendMode "add" fogs[rpg.map.id] = fog end if rpg.map.hero.x ~= x or rpg.map.hero.y ~= y then fog:draw(light, rpg.map.hero.x * 16 - 45, rpg.map.hero.y * 16 - 50) end x, y = rpg.map.hero:getPosition() fog:copyRect(rpg.map.cameraX, rpg.map.cameraY, 320, 240, buffer) rpg.graphics.draw(buffer, 0, 0) if rpg.keyboard.isDown "o" then local screenshot = rpg.graphics.copyRect(0, 0, 320, 240) rpg.graphics.writeImage(screenshot, "Save/screenshot.png") end end end In action: download RPGSS.7z
function onInit() rpg.graphics.setBlendMode "multiply" fogs = {} buffer = rpg.graphics.newImage(320, 240) light = rpg.graphics.newImage(100, 100) light:drawCircle(true, 50, 50, 50, 0xFFFFFFFF, 0x00000000) end function onFrame() if rpg.scene == "map" then local fog = fogs[rpg.map.id] if fog == nil then fog = rpg.graphics.newImage(rpg.map.width * 16, rpg.map.height * 16) fog:setBlendMode "add" fogs[rpg.map.id] = fog end if rpg.map.hero.x ~= x or rpg.map.hero.y ~= y then fog:draw(light, rpg.map.hero.x * 16 - 45, rpg.map.hero.y * 16 - 50) end x, y = rpg.map.hero:getPosition() fog:copyRect(rpg.map.cameraX, rpg.map.cameraY, 320, 240, buffer) rpg.graphics.draw(buffer, 0, 0) if rpg.keyboard.isDown "o" then local screenshot = rpg.graphics.copyRect(0, 0, 320, 240) rpg.graphics.writeImage(screenshot, "Save/screenshot.png") end end end
Foren-Regeln