Advertisement
Eshkation-

Pigeons

Aug 29th, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.02 KB | None | 0 0
  1. PLAYERS = {
  2.  
  3. }
  4.  
  5. SPRITES = {
  6.     resting = {
  7.         [1] = {
  8.             right = "153a43d39b8.png",
  9.             left = "153a43e7a32.png",
  10.             x = -13,
  11.             y = -7,
  12.         },
  13.         [2] = {
  14.             right = "153a4407b5c.png",
  15.             left = "153a43ff594.png",
  16.             x = -13,
  17.             y = -7,
  18.         },
  19.         [3] = {
  20.             right = "153a446e153.png",
  21.             left = "153a4464dae.png",
  22.             x = -13,
  23.             y = -7,
  24.         },
  25.         [4] = {
  26.             right = "153a449f2e9.png",
  27.             left = "153a44a4656.png",
  28.             x = -13,
  29.             y = -7,
  30.         }
  31.     },
  32.     flying = {
  33.         [1] = {
  34.             right = "153a5a7de6d.png",
  35.             left = "153a5a9fd86.png",
  36.             x = -13,
  37.             y = -22,
  38.         }, 
  39.         [2] = {
  40.             right = "153a5ac019c.png",
  41.             left = "153a5ab8eb2.png",
  42.             x = -13,
  43.             y = -22,
  44.         }, 
  45.     }
  46. }
  47.  
  48. function eventNewPlayer(player)
  49.     PLAYERS[player] = {
  50.         imageId = -1,
  51.         currentSprite = "resting",
  52.         currentSpriteTick = math.random(#SPRITES.resting),
  53.         look = "right",
  54.         isFlying = false,
  55.         objId = 1
  56.     }
  57.     PLAYERS[player].imageId = tfm.exec.addImage(SPRITES.resting[1].right, "%"..player, SPRITES.resting[1].x, SPRITES.resting[1].y, nil)
  58.     for key = 0, 3 do
  59.         system.bindKeyboard(player, key, true, true)
  60.     end
  61.     system.bindKeyboard(player, 32, true, true)
  62.     system.bindKeyboard(player, 32, false, true)
  63. end
  64.  
  65. function notifyLoop()
  66. local ticks = 5
  67. local s = 1000/ticks
  68. for t = 0, 1000 - s, s do
  69.     system.newTimer(function ()
  70.         system.newTimer(loop, 1000, true)
  71.         end, 1000 + t, false)
  72.     end
  73. end
  74.  
  75. function eventKeyboard(player, key, down, x, y)
  76.     if key == 0 then
  77.         PLAYERS[player].look = "left"
  78.     elseif key == 2 then
  79.         PLAYERS[player].look = "right"
  80.     elseif key == 32 then
  81.         local data = PLAYERS[player]
  82.         if down then
  83.             data.currentSprite = "flying"
  84.             data.currentSpriteTick = 1
  85.             local playerSprite = SPRITES[data.currentSprite]
  86.             tfm.exec.removeImage(data.imageId)
  87.             playerSprite = playerSprite[math.random(#playerSprite)]
  88.             data.imageId = tfm.exec.addImage(playerSprite[data.look], "%"..player, playerSprite.x, playerSprite.y, nil)
  89.         else
  90.             data.currentSprite = "resting"
  91.         end  
  92.         data.isFlying = down
  93.     end
  94. end
  95.  
  96. function loop(tick, ntick)
  97.     for player, data in pairs(PLAYERS) do
  98.         local playerSprite = SPRITES[data.currentSprite]
  99.         local sprite = data.currentSprite
  100.         if sprite == "resting" then
  101.             data.currentSpriteTick = math.random(#SPRITES.resting)
  102.         end
  103.         if data.isFlying then
  104.             tfm.exec.movePlayer(player, 0, 0, false, 0, -20, false)
  105.             if math.random(0, 100) > 95 then
  106.                 local pdata = tfm.get.room.playerList[player]
  107.                 local x, y = pdata.x, pdata.y
  108.                 tfm.exec.removeObject(data.objId)
  109.                 data.objId = tfm.exec.addShamanObject(34, x, y, 0, 0, 10, false)
  110.             end
  111.         end
  112.         data.currentSpriteTick = data.currentSpriteTick+1
  113.         if data.currentSpriteTick > #playerSprite then
  114.             data.currentSpriteTick = 1
  115.         end
  116.         tfm.exec.removeImage(data.imageId)
  117.         playerSprite = playerSprite[data.currentSpriteTick]
  118.         data.imageId = tfm.exec.addImage(playerSprite[data.look], "%"..player, playerSprite.x, playerSprite.y, nil)
  119.     end
  120. end
  121.  
  122. for k, v in pairs(tfm.get.room.playerList) do
  123.     eventNewPlayer(k)
  124. end
  125.  
  126. notifyLoop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement