This tutorial assumes you understand the basics of JC-MP modules / scripts. This information is available in the beginner section.
In this tutorial, you'll be able to see the basic uses of loading game assets and making use of them with the Render event to create a Map for your gamemode / script.
Client
class 'PDA'
function PDA:__init( ... )
self.map = Image.Create( AssetLocation.Game, 'pda_map_dif.dds' )
self.map:SetSize( Vector2( Render.Width/2, Render.Width/2 ) )
self.map:SetPosition( Vector2( Render.Width*.25, Render.Height*.05 ) )
self.use_border = true
self.border_width = Vector2( 10, 10 )
self.toggle_timer = Timer()
self.map_render = nil
Events:Subscribe( 'LocalPlayerInput', self, self.PDAInput )
end
function PDA:PDAInput( e )
local input = e.input
if input == Action.GuiPDA then
self:Toggle()
return false
end
if self.map_render ~= nil then
return false
end
end
function PDA:Toggle( ... )
if self.toggle_timer:GetMilliseconds() > 250 then
self.toggle_timer:Restart()
if self.map_render == nil then
self.map_render = Events:Subscribe( 'Render', self, self.PDARender )
Mouse:SetVisible( true )
else
Events:Unsubscribe( self.map_render )
self.map_render = nil
Mouse:SetVisible( false )
end
end
end
function PDA:PDARender( ... )
if self.map == nil then return end
if self.use_border then
Render:FillArea( self.map:GetPosition()-self.border_width, self.map:GetSize()+self.border_width*2, Color.Black )
else
Render:FillArea( Vector2.Zero, Render.Size, Color(6,36,47,255) )
end
self.map:Draw()
end
function ModuleLoad( ... )
pda = PDA()
end
Events:Subscribe( 'ModuleLoad', ModuleLoad )