Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --[[
- -- By Ziriee --
- os.loadAPI("rpgAPI") --Loads RPG API
- rpgAPI.initialize() --You must run this line right after loading the API
- rpgAPI.addModAPI() --Run this if you want the modAPI to work (After initializing rpgAPI!)
- rpgAPI.loadMap(String syntax, Table map, Table background) --Adds map to map library, background colors are NUMBERS
- rpgAPI.openMap(String syntax) --Selects map from map library
- rpgAPI.drawMap() --Draws selected map
- rpgAPI.createCharacter(String syntax, String character, color) --Creates a character
- rpgAPI.drawCharacter(String syntax, Number xPosition, Number yPosition) --Draws a character on coordinates
- rpgAPI.drawCharacter(String syntax) --Draws a character on it's current coordinates
- rpgAPI.moveCharacter(String sytnax, String side) --Returns true if move is valid
- rpgAPI.getCharacterPosition(String syntax) --Returns a table {x, y}
- rpgAPI.setCharacterPosition(String syntax, xPosition, yPosition) --Sets a character's position
- rpgAPI.addAI(String syntax, String AI) --Adds AI to a character (none, derp)
- rpgAPI.addControls(String syntax, Table controls) --Adds controls to a character {up, left, down, right}
- rpgAPI.getInput() --Waits for input, tries to move characters
- rpgAPI.getSelectedMap() --Returns selected map
- rpgAPI.setTile(String syntax, String ID:Data, Number xPosition, Number yPosition) --Changes a tile in a map
- rpgAPI.randomMap(Number maximum X, Number maximum Y, Table ids OR nil) --Returns a randomized map (These maps are WEIRD)
- rpgAPI.generateMap(Number seed) --Returns a map that is somewhat normal. Leaving the seed blank will generate a random seed
- rpgAPI.addStructure(Table plan) --Adds a structure to map generation. Plan example: {{"1:2","1:4","1:4","1:2"}, +--+
- rpgAPI.triggerCharacterAI(String syntax) --Triggers a character's AI {"1:3",0,0,"1:3"}, | |
- {"1:3",0,"1:2","1:2"}, | ++
- -- Important info -- {"1:3",0,"1:3",0}} | |
- 1:1 - o 1:2 - + 1:3 - |
- 1:4 - - 1:5 - ' 1:6 - ,
- ]]
- function initialize()
- rpgAPIvars = {}
- rpgAPIvars["mod"] = false
- rpgAPIvars["sides"] = {"up", "left", "down", "right"}
- addStructure({{"1:2","1:4","1:4","1:2"},{"1:3",0,0,"1:3"},{"1:3",0,"1:2","1:2"},{"1:3",0,"1:3",0}})
- addStructure({{"1:2","1:4","1:4","1:2"},{"1:3",0,0,"1:3"},{"1:3",0,0,"1:3"},{"1:2",0,"1:5","1:2"}})
- addStructure({{"1:2","1:4","1:4","1:4","1:2"},{"1:3",0,0,0,"1:3"},{"1:3",0,0,0,"1:3"},{"1:3",0,0,0,"1:3"},{"1:2","1:4",0,"1:4","1:2"}})
- end
- function addModAPI()
- os.loadAPI("modAPI")
- modAPIvars = {}
- rpgAPIvars["mod"] = true
- end
- function loadMap(syntax, map, bg)
- rpgAPIvars["maps"][syntax] = map
- if bg ~= nil then
- rpgAPIvars["bgs"][syntax] = bg
- end
- end
- function openMap(syntax)
- rpgAPIvars["selectedmap"] = syntax
- end
- function drawMap()
- for j=1, #rpgAPIvars["maps"][rpgAPIvars["selectedmap"]] do
- for i=1, #rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][j] do
- term.setCursorPos(1, j)
- rpgAPIvars["temp1"] = nil
- term.setTextColor(colors.lightGray)
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:2" then
- rpgAPIvars["temp1"] = "+"
- elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:3" then
- rpgAPIvars["temp1"] = "|"
- elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:4" then
- rpgAPIvars["temp1"] = "-"
- elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:5" then
- rpgAPIvars["temp1"] = "'"
- elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:6" then
- rpgAPIvars["temp1"] = ","
- elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:1" then
- rpgAPIvars["temp1"] = "o"
- elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == 0 then
- rpgAPIvars["temp1"] = " "
- elseif rpgAPIvars["mod"] then
- for k=1, #modAPIvars["ids"] do
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == modAPIvars["ids"][k] then
- rpgAPIvars["temp1"] = modAPIvars["blocks"][modAPIvars["ids"][k]]["char"]
- term.setTextColor(modAIPvars["blocks"][modAPIvars["ids"][k]]["color"])
- end
- end
- end
- if rpgAPIvars["temp1"] == nil then
- rpgAPIvars["temp1"] = "?"
- term.setTextColor(colors.magenta)
- end
- if rpgAPIvars["bgs"][rpgAPIvars["selectedmap"]] ~= nil then
- term.setBackgroundColor(2^rpgAPIvars["bgs"][rpgAPIvars["selectedmap"]][i][j])
- end
- write(rpgAPIvars["temp1"])
- term.setTextColor(colors.white)
- term.setBackgroundColor(colors.black)
- end
- end
- end
- function createCharacter(syntax, char, color)
- rpgAPIvars["character"][syntax]["char"] = char
- rpgAPIvars["character"][syntax]["color"] = color
- rpgAPIvars["character"][syntax]["x"] = 0
- rpgAPIvars["character"][syntax]["y"] = 0
- rpgAPIvars["character"][syntax]["ai"] = "none"
- if rpgAPIvars["chars"][1] == nil then
- rpgAPIvars["chars"][1] = syntax
- else
- rpgAPIvars["chars"][#rpgAPIvars["chars"]] = syntax
- end
- end
- function drawCharacter(syn, x, y)
- if x ~= nil and y ~= nil then
- rpgAPIvars["character"][syn]["x"] = x
- rpgAPIvars["character"][syn]["y"] = y
- else
- x, y = getCharacterPosition(syn)
- end
- term.setCursorPos(x,y)
- term.setTextColor(rpgAPIvars["character"]["syn"]["color"])
- write(rpgAPIvars["character"][syn]["char"])
- term.setTextColor(colors.white)
- end
- function moveCharacter(syntax, side)
- x, y = getCharacterPosition("player")
- rpgAPIvars["tempout"] = nil
- if side == "up" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y-1][x].."",1,2) ~= "1:" then
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y-1][x] == 0 then
- rpgAPIvars["tempout"] = true
- end
- if rpgAPIvars["mod"] then
- for i=1, #modAPIvars["ids"] do
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y-1][x] == modAPIvars["ids"][i] then
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
- rpgAPIvars["tempout"] = true
- end
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
- modAPI.changeBlock(x, y)
- elseif modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "trigger" then
- temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
- if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
- modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
- end
- end
- end
- end
- end
- elseif side == "left" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x-1].."",1,2) ~= "1:" then
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x-1] == 0 then
- rpgAPIvars["tempout"] = true
- end
- if rpgAPIvars["mod"] then
- for i=1, #modAPIvars["ids"] do
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x-1] == modAPIvars["ids"][i] then
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
- rpgAPIvars["tempout"] = true
- end
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
- modAPI.changeBlock(x, y)
- elseif modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "trigger" then
- temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
- if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
- modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
- end
- end
- end
- end
- end
- elseif side == "down" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y+1][x].."",1,2) ~= "1:" then
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y+1][x] == 0 then
- rpgAPIvars["tempout"] = true
- end
- if rpgAPIvars["mod"] then
- for i=1, #modAPIvars["ids"] do
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y+1][x] == modAPIvars["ids"][i] then
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
- rpgAPIvars["tempout"] = true
- end
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
- modAPI.changeBlock(x, y)
- elseif modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "trigger" then
- temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
- if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
- modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
- end
- end
- end
- end
- end
- elseif side == "right" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x+1].."",1,2) ~= "1:" then
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x+1] == 0 then
- rpgAPIvars["tempout"] = true
- end
- if rpgAPIvars["mod"] then
- for i=1, #modAPIvars["ids"] do
- if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x+1] == modAPIvars["ids"][i] then
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
- rpgAPIvars["tempout"] = true
- end
- if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
- modAPI.changeBlock(x, y)
- elseif modAPIvars["blocks"][["ids"][i]]["chortr"] == "trigger" then
- temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
- if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
- modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
- end
- end
- end
- end
- end
- else
- rpgAPIvars["tempout"] = false
- end
- if rpgAPIvars["tempout"] == nil then
- rpgAPIvars["tempout"] = false
- end
- return(rpgAPIvars["tempout"])
- end
- function getCharacterPosition(syntax)
- return({rpgAPIvars["character"][syntax]["x"], rpgAPIvars["character"][syntax]["y"]})
- end
- function addAI(syntax, ai)
- rpgAPIvars["character"][syntax]["ai"] = ai
- end
- function addControls(syntax, control)
- rpgAPIvars["character"][syntax]["ai"] = "manual"
- rpgAPIvars["character"][syntax]["control"] = control
- end
- function setCharacterPosition(syn, x, y)
- rpgAPIvars["character"][syn]["x"] = x
- rpgAPIvars["character"][syn]["y"] = y
- end
- function getInput()
- event, param1 = os.pullEvent("char")
- for i=1, #rpgAPIvars["chars"] do
- for j=1, 4 do
- if rpgAPIvars["character"][rpgAPIvars["chars"][i]][control][j] == param1 then
- x, y = getCharacterPosition(rpgAPIvars["chars"][i])
- if j == 1 and moveCharacter(rpgAPIvars["chars"][i], "up") then
- setCharacterPosition(rpgAPIvars["chars"][i], x, y-1)
- elseif j == 2 and moveCharacter(rpgAPIvars["chars"][i], "left") then
- setCharacterPosition(rpgAPIvars["chars"][i], x-1, y)
- elseif j == 3 and moveCharacter(rpgAPIvars["chars"][i], "down") then
- setCharacterPosition(rpgAPIvars["chars"][i], x, y+1)
- elseif j == 4 and moveCharacter(rpgAPIvars["chars"][i], "right") then
- setCharacterPosition(rpgAPIvars["chars"][i], x+1, y)
- end
- end
- end
- end
- end
- function getSelectedMap()
- return(rpgAPIvars["selectedmap"])
- end
- function setTile(syntax, id, x, y)
- rpgAPIvars["maps"][syntax][y][x] = id
- end
- function randomMap(maxx, maxy, ids)
- if ids == nil then
- if rpgAPIvars["mod"] then
- rpgAPIvars["temp2"] = #modAPIvars["ids"]
- else
- rpgAPIvars["temp2"] = 0
- end
- for y=1, math.random(0, math.floor(maxy)) do
- for x=1, math.random(0, math.floor(maxx)) do
- rpgAPIvars["temp3"] = math.random(0, 2+rpgAPIvars["temp2"])
- if rpgAPIvars["temp3"] > 1 then
- rpgAPIvars["temp1"][y][x] = modAPIvar["ids"][rpgAPIvars["temp3"]]
- elseif rpgAPIvars["temp3"] == 1 then
- rpgAPIvars["temp1"][y][x] = 1..":"..math.random(1,6)
- else
- rpgAPIvars["temp1"][y][x] = rpgAPIvars["temp3"]
- end
- end
- end
- else
- for y=1, math.random(0, math.floor(maxy)) do
- for x=1, math.random(0, math.floor(maxx)) do
- rpgAPIvars["temp2"] = ids[math.random(0, #ids)]
- if rpgAPIvars["temp2"] == 1 then
- rpgAPIvars["temp2"] = 1..":"..math.random(1,6)
- end
- rpgAPIvars["temp1"][y][x] = rpgAPIvars["temp2"]
- end
- end
- end
- return(rpgAPIvars["temp1"])
- end
- function generateMap(seed)
- if type(seed) ~= "number" then
- seed = math.random(0, 10000)
- elseif seed < 0 then
- seed = math.random(0, 10000)
- end
- for x=1, math.floor(seed%11)+10 do
- for y=1, (math.floor(seed^2)%11)+10 do
- rpgAPIvars["temp1"][x][y] = 0
- end
- end
- rpgAPIvars["temp2"] = math.floor(seed%(#rpgAPIvars["structures"]))+1
- rpgAPIvars["temp3"] = math.floor(seed%(#rpgAPIvars["maps"][rpgAPIvars["maps"]["selectedmap"]][1] - #rpgAPIvars["structures"][rpgAPIvars["temp2"]][1]))+1
- rpgAPIvars["temp4"] = math.floor(seed%(#rpgAPIvars["maps"][rpgAPIvars["maps"]["selectedmap"]] - #rpgAPIvars["structures"][rpgAPIvars["temp2"]]))+1
- for y=1, #rpgAPIvars["structures"][rpgAPIvars["temp2"]] do
- for x=1, #rpgAPIvars["structures"][rpgAPIvars["temp2"]][1] do
- rpgAPIvars["temp1"][rpgAPIvars["temp4"]+y-1][rpgAPIvars["temp3"]+x-1] = rpgAPIvars["structures"][y][x]
- end
- end
- return(rpgAPIvars["temp1"])
- end
- function addStructure(plan)
- if rpgAPIvars["structures"][1] == nil then
- rpgAPIvars["structures"][1] = plan
- else
- rpgAPIvars["structures"][#rpgAPIvars["structures"]+1] = plan
- end
- end
- function triggerCharacterAI(syntax)
- if rpgAPIvars["character"][syntax]["ai"] == "derp" then
- rpgAPIvars["temp1"] = math.random(1,4)
- if moveCharacter(syntax, rpgAPIvars["sides"][rpgAPIvars["temp1"]]) then
- if rpgAPIvars["temp1"] == 1 then
- rpgAPIvars["temp2"] = 0
- rpgAPIvars["temp3"] = -1
- elseif rpgAPIvars["temp1"] == 2 then
- rpgAPIvars["temp2"] = -1
- rpgAPIvars["temp3"] = 0
- elseif rpgAPIvars["temp1"] == 3 then
- rpgAPIvars["temp2"] = +1
- rpgAPIvars["temp3"] = 0
- else
- rpgAPIvars["temp2"] = 0
- rpgAPIvars["temp3"] = +1
- end
- setCharacterPosition(syntax, rpgAPIvars["character"][syntax]["x"]+rpgAPIvars["temp2"], rpgAPIvars["character"][syntax]["y"]+rpgAPIvars["temp3"])
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement