Advertisement
Urumasi

rpgAPI

Jul 13th, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 14.57 KB | None | 0 0
  1. --[[
  2. --  By Ziriee  --
  3.  
  4. os.loadAPI("rpgAPI") --Loads RPG API
  5. rpgAPI.initialize() --You must run this line right after loading the API
  6. rpgAPI.addModAPI() --Run this if you want the modAPI to work (After initializing rpgAPI!)
  7. rpgAPI.loadMap(String syntax, Table map, Table background) --Adds map to map library, background colors are NUMBERS
  8. rpgAPI.openMap(String syntax) --Selects map from map library
  9. rpgAPI.drawMap() --Draws selected map
  10. rpgAPI.createCharacter(String syntax, String character, color) --Creates a character
  11. rpgAPI.drawCharacter(String syntax, Number xPosition, Number yPosition) --Draws a character on coordinates
  12. rpgAPI.drawCharacter(String syntax) --Draws a character on it's current coordinates
  13. rpgAPI.moveCharacter(String sytnax, String side) --Returns true if move is valid
  14. rpgAPI.getCharacterPosition(String syntax) --Returns a table {x, y}
  15. rpgAPI.setCharacterPosition(String syntax, xPosition, yPosition) --Sets a character's position
  16. rpgAPI.addAI(String syntax, String AI) --Adds AI to a character (none, derp)
  17. rpgAPI.addControls(String syntax, Table controls) --Adds controls to a character {up, left, down, right}
  18. rpgAPI.getInput() --Waits for input, tries to move characters
  19. rpgAPI.getSelectedMap() --Returns selected map
  20. rpgAPI.setTile(String syntax, String ID:Data, Number xPosition, Number yPosition) --Changes a tile in a map
  21. rpgAPI.randomMap(Number maximum X, Number maximum Y, Table ids OR nil) --Returns a randomized map (These maps are WEIRD)
  22. rpgAPI.generateMap(Number seed) --Returns a map that is somewhat normal. Leaving the seed blank will generate a random seed
  23. rpgAPI.addStructure(Table plan) --Adds a structure to map generation. Plan example: {{"1:2","1:4","1:4","1:2"}, +--+
  24. rpgAPI.triggerCharacterAI(String syntax) --Triggers a character's AI                 {"1:3",0,0,"1:3"},         |  |
  25.                                                                                      {"1:3",0,"1:2","1:2"},     | ++
  26. --  Important info  --                                                               {"1:3",0,"1:3",0}}         | |
  27. 1:1 - o     1:2 - +     1:3 - |
  28. 1:4 - -     1:5 - '     1:6 - ,
  29. ]]
  30.  
  31. function initialize()
  32.     rpgAPIvars = {}
  33.     rpgAPIvars["mod"] = false
  34.     rpgAPIvars["sides"] = {"up", "left", "down", "right"}
  35.     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}})
  36.     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"}})
  37.     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"}})
  38. end
  39. function addModAPI()
  40.     os.loadAPI("modAPI")
  41.     modAPIvars = {}
  42.     rpgAPIvars["mod"] = true
  43. end
  44. function loadMap(syntax, map, bg)
  45.     rpgAPIvars["maps"][syntax] = map
  46.     if bg ~= nil then  
  47.         rpgAPIvars["bgs"][syntax] = bg
  48.     end
  49. end
  50. function openMap(syntax)
  51.     rpgAPIvars["selectedmap"] = syntax
  52. end
  53. function drawMap()
  54.     for j=1, #rpgAPIvars["maps"][rpgAPIvars["selectedmap"]] do
  55.         for i=1, #rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][j] do
  56.             term.setCursorPos(1, j)
  57.             rpgAPIvars["temp1"] = nil
  58.             term.setTextColor(colors.lightGray)
  59.             if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:2" then
  60.                 rpgAPIvars["temp1"] = "+"
  61.             elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:3" then
  62.                 rpgAPIvars["temp1"] = "|"
  63.             elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:4" then
  64.                 rpgAPIvars["temp1"] = "-"
  65.             elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:5" then
  66.                 rpgAPIvars["temp1"] = "'"
  67.             elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:6" then
  68.                 rpgAPIvars["temp1"] = ","
  69.             elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == "1:1" then
  70.                 rpgAPIvars["temp1"] = "o"
  71.             elseif rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == 0 then
  72.                 rpgAPIvars["temp1"] = " "
  73.             elseif rpgAPIvars["mod"] then
  74.                 for k=1, #modAPIvars["ids"] do
  75.                     if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][i][j] == modAPIvars["ids"][k] then
  76.                         rpgAPIvars["temp1"] = modAPIvars["blocks"][modAPIvars["ids"][k]]["char"]
  77.                         term.setTextColor(modAIPvars["blocks"][modAPIvars["ids"][k]]["color"])
  78.                     end
  79.                 end
  80.             end
  81.             if rpgAPIvars["temp1"] == nil then
  82.                 rpgAPIvars["temp1"] = "?"
  83.                 term.setTextColor(colors.magenta)
  84.             end
  85.             if rpgAPIvars["bgs"][rpgAPIvars["selectedmap"]] ~= nil then
  86.                 term.setBackgroundColor(2^rpgAPIvars["bgs"][rpgAPIvars["selectedmap"]][i][j])
  87.             end
  88.             write(rpgAPIvars["temp1"])
  89.             term.setTextColor(colors.white)
  90.             term.setBackgroundColor(colors.black)
  91.         end
  92.     end
  93. end
  94. function createCharacter(syntax, char, color)
  95.     rpgAPIvars["character"][syntax]["char"] = char
  96.     rpgAPIvars["character"][syntax]["color"] = color
  97.     rpgAPIvars["character"][syntax]["x"] = 0
  98.     rpgAPIvars["character"][syntax]["y"] = 0
  99.     rpgAPIvars["character"][syntax]["ai"] = "none"
  100.     if rpgAPIvars["chars"][1] == nil then
  101.         rpgAPIvars["chars"][1] = syntax
  102.     else
  103.         rpgAPIvars["chars"][#rpgAPIvars["chars"]] = syntax
  104.     end
  105. end
  106. function drawCharacter(syn, x, y)
  107.     if x ~= nil and y ~= nil then
  108.         rpgAPIvars["character"][syn]["x"] = x
  109.         rpgAPIvars["character"][syn]["y"] = y
  110.     else
  111.         x, y = getCharacterPosition(syn)
  112.     end
  113.     term.setCursorPos(x,y)
  114.     term.setTextColor(rpgAPIvars["character"]["syn"]["color"])
  115.     write(rpgAPIvars["character"][syn]["char"])
  116.     term.setTextColor(colors.white)
  117. end
  118. function moveCharacter(syntax, side)
  119.     x, y = getCharacterPosition("player")
  120.     rpgAPIvars["tempout"] = nil
  121.     if side == "up" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y-1][x].."",1,2) ~= "1:" then
  122.         if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y-1][x] == 0 then
  123.             rpgAPIvars["tempout"] = true
  124.         end
  125.         if rpgAPIvars["mod"] then
  126.             for i=1, #modAPIvars["ids"] do
  127.                 if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y-1][x] == modAPIvars["ids"][i] then
  128.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
  129.                         rpgAPIvars["tempout"] = true
  130.                     end
  131.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
  132.                         modAPI.changeBlock(x, y)
  133.                     elseif modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "trigger" then
  134.                         temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
  135.                         if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
  136.                             modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
  137.                         end
  138.                     end
  139.                 end
  140.             end
  141.         end
  142.     elseif side == "left" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x-1].."",1,2) ~= "1:" then
  143.         if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x-1] == 0 then
  144.             rpgAPIvars["tempout"] = true
  145.         end
  146.         if rpgAPIvars["mod"] then
  147.             for i=1, #modAPIvars["ids"] do
  148.                 if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x-1] == modAPIvars["ids"][i] then
  149.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
  150.                         rpgAPIvars["tempout"] = true
  151.                     end
  152.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
  153.                         modAPI.changeBlock(x, y)
  154.                     elseif modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "trigger" then
  155.                         temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
  156.                         if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
  157.                             modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
  158.                         end
  159.                     end
  160.                 end
  161.             end
  162.         end
  163.     elseif side == "down" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y+1][x].."",1,2) ~= "1:" then
  164.         if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y+1][x] == 0 then
  165.             rpgAPIvars["tempout"] = true
  166.         end
  167.         if rpgAPIvars["mod"] then
  168.             for i=1, #modAPIvars["ids"] do
  169.                 if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y+1][x] == modAPIvars["ids"][i] then
  170.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
  171.                         rpgAPIvars["tempout"] = true
  172.                     end
  173.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
  174.                         modAPI.changeBlock(x, y)
  175.                     elseif modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "trigger" then
  176.                         temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
  177.                         if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
  178.                             modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
  179.                         end
  180.                     end
  181.                 end
  182.             end
  183.         end
  184.     elseif side == "right" and string.sub(rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x+1].."",1,2) ~= "1:" then
  185.         if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x+1] == 0 then
  186.             rpgAPIvars["tempout"] = true
  187.         end
  188.         if rpgAPIvars["mod"] then
  189.             for i=1, #modAPIvars["ids"] do
  190.                 if rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][y][x+1] == modAPIvars["ids"][i] then
  191.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["type"] == "imaginary" then
  192.                         rpgAPIvars["tempout"] = true
  193.                     end
  194.                     if modAPIvars["blocks"][modAPIvars["ids"][i]]["chortr"] == "change" and modAPIvars["blocks"][modAPIvars["ids"][i]]["ctrigger"] == "touch" then
  195.                         modAPI.changeBlock(x, y)
  196.                     elseif modAPIvars["blocks"][["ids"][i]]["chortr"] == "trigger" then
  197.                         temp = rpgAPIvars["maps"][rpgAPIvars["selectedmap"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"]][modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"]]
  198.                         if modAPIvars["blocks"][temp]["chortr"] == "change" and modAPIvars["blocks"][temp]["ctrigger"] == "trigger" then
  199.                             modAPI.changeBlock(modAPIvars["blocks"][modAPIvars["ids"][i]]["triggerx"], modAPIvars["blocks"][modAPIvars["ids"][i]]["triggery"], temp)
  200.                         end
  201.                     end
  202.                 end
  203.             end
  204.         end
  205.     else
  206.         rpgAPIvars["tempout"] = false
  207.     end
  208.     if rpgAPIvars["tempout"] == nil then
  209.         rpgAPIvars["tempout"] = false
  210.     end
  211.     return(rpgAPIvars["tempout"])
  212. end
  213. function getCharacterPosition(syntax)
  214.     return({rpgAPIvars["character"][syntax]["x"], rpgAPIvars["character"][syntax]["y"]})
  215. end
  216. function addAI(syntax, ai)
  217.     rpgAPIvars["character"][syntax]["ai"] = ai
  218. end
  219. function addControls(syntax, control)
  220.     rpgAPIvars["character"][syntax]["ai"] = "manual"
  221.     rpgAPIvars["character"][syntax]["control"] = control
  222. end
  223. function setCharacterPosition(syn, x, y)
  224.     rpgAPIvars["character"][syn]["x"] = x
  225.     rpgAPIvars["character"][syn]["y"] = y
  226. end
  227. function getInput()
  228.     event, param1 = os.pullEvent("char")
  229.     for i=1, #rpgAPIvars["chars"] do
  230.         for j=1, 4 do
  231.             if rpgAPIvars["character"][rpgAPIvars["chars"][i]][control][j] == param1 then
  232.                 x, y = getCharacterPosition(rpgAPIvars["chars"][i])
  233.                 if j == 1 and moveCharacter(rpgAPIvars["chars"][i], "up") then
  234.                     setCharacterPosition(rpgAPIvars["chars"][i], x, y-1)
  235.                 elseif j == 2 and moveCharacter(rpgAPIvars["chars"][i], "left") then
  236.                     setCharacterPosition(rpgAPIvars["chars"][i], x-1, y)
  237.                 elseif j == 3 and moveCharacter(rpgAPIvars["chars"][i], "down") then
  238.                     setCharacterPosition(rpgAPIvars["chars"][i], x, y+1)
  239.                 elseif j == 4 and moveCharacter(rpgAPIvars["chars"][i], "right") then
  240.                     setCharacterPosition(rpgAPIvars["chars"][i], x+1, y)
  241.                 end
  242.             end
  243.         end
  244.     end
  245. end
  246. function getSelectedMap()
  247.     return(rpgAPIvars["selectedmap"])
  248. end
  249. function setTile(syntax, id, x, y)
  250.     rpgAPIvars["maps"][syntax][y][x] = id
  251. end
  252. function randomMap(maxx, maxy, ids)
  253.     if ids == nil then
  254.         if rpgAPIvars["mod"] then
  255.             rpgAPIvars["temp2"] = #modAPIvars["ids"]
  256.         else
  257.         rpgAPIvars["temp2"] = 0
  258.         end
  259.         for y=1, math.random(0, math.floor(maxy)) do
  260.             for x=1, math.random(0, math.floor(maxx)) do
  261.                 rpgAPIvars["temp3"] = math.random(0, 2+rpgAPIvars["temp2"])
  262.                 if rpgAPIvars["temp3"] > 1 then
  263.                     rpgAPIvars["temp1"][y][x] = modAPIvar["ids"][rpgAPIvars["temp3"]]
  264.                 elseif rpgAPIvars["temp3"] == 1 then
  265.                     rpgAPIvars["temp1"][y][x] = 1..":"..math.random(1,6)
  266.                 else
  267.                     rpgAPIvars["temp1"][y][x] = rpgAPIvars["temp3"]
  268.                 end
  269.             end
  270.         end
  271.     else
  272.         for y=1, math.random(0, math.floor(maxy)) do
  273.             for x=1, math.random(0, math.floor(maxx)) do
  274.                 rpgAPIvars["temp2"] = ids[math.random(0, #ids)]
  275.                 if rpgAPIvars["temp2"] == 1 then
  276.                     rpgAPIvars["temp2"] = 1..":"..math.random(1,6)
  277.                 end
  278.                 rpgAPIvars["temp1"][y][x] = rpgAPIvars["temp2"]
  279.             end
  280.         end
  281.     end
  282.     return(rpgAPIvars["temp1"])
  283. end
  284. function generateMap(seed)
  285.     if type(seed) ~= "number" then
  286.         seed = math.random(0, 10000)
  287.     elseif seed < 0 then
  288.         seed = math.random(0, 10000)
  289.     end
  290.     for x=1, math.floor(seed%11)+10 do
  291.         for y=1, (math.floor(seed^2)%11)+10 do
  292.             rpgAPIvars["temp1"][x][y] = 0
  293.         end
  294.     end
  295.     rpgAPIvars["temp2"] = math.floor(seed%(#rpgAPIvars["structures"]))+1
  296.     rpgAPIvars["temp3"] = math.floor(seed%(#rpgAPIvars["maps"][rpgAPIvars["maps"]["selectedmap"]][1] - #rpgAPIvars["structures"][rpgAPIvars["temp2"]][1]))+1
  297.     rpgAPIvars["temp4"] = math.floor(seed%(#rpgAPIvars["maps"][rpgAPIvars["maps"]["selectedmap"]] - #rpgAPIvars["structures"][rpgAPIvars["temp2"]]))+1
  298.     for y=1, #rpgAPIvars["structures"][rpgAPIvars["temp2"]] do
  299.         for x=1, #rpgAPIvars["structures"][rpgAPIvars["temp2"]][1] do
  300.             rpgAPIvars["temp1"][rpgAPIvars["temp4"]+y-1][rpgAPIvars["temp3"]+x-1] = rpgAPIvars["structures"][y][x]
  301.         end
  302.     end
  303.     return(rpgAPIvars["temp1"])
  304. end
  305. function addStructure(plan)
  306.     if rpgAPIvars["structures"][1] == nil then
  307.         rpgAPIvars["structures"][1] = plan
  308.     else
  309.         rpgAPIvars["structures"][#rpgAPIvars["structures"]+1] = plan
  310.     end
  311. end
  312. function triggerCharacterAI(syntax)
  313.     if rpgAPIvars["character"][syntax]["ai"] == "derp" then
  314.         rpgAPIvars["temp1"] = math.random(1,4)
  315.         if moveCharacter(syntax, rpgAPIvars["sides"][rpgAPIvars["temp1"]]) then
  316.             if rpgAPIvars["temp1"] == 1 then
  317.                 rpgAPIvars["temp2"] = 0
  318.                 rpgAPIvars["temp3"] = -1
  319.             elseif rpgAPIvars["temp1"] == 2 then
  320.                 rpgAPIvars["temp2"] = -1
  321.                 rpgAPIvars["temp3"] = 0
  322.             elseif rpgAPIvars["temp1"] == 3 then
  323.                 rpgAPIvars["temp2"] = +1
  324.                 rpgAPIvars["temp3"] = 0
  325.             else
  326.                 rpgAPIvars["temp2"] = 0
  327.                 rpgAPIvars["temp3"] = +1
  328.             end
  329.             setCharacterPosition(syntax, rpgAPIvars["character"][syntax]["x"]+rpgAPIvars["temp2"], rpgAPIvars["character"][syntax]["y"]+rpgAPIvars["temp3"])
  330.         end
  331.     end
  332. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement