Ir para conteúdo

Pesquisar na Comunidade

Mostrando resultados para as tags ''löve''.



Mais opções de pesquisa

  • Pesquisar por Tags

    Digite tags separadas por vírgulas
  • Pesquisar por Autor

Tipo de Conteúdo


Fóruns

  • A Cidade OTBR
    • OTServ Brasil
    • Atendimento
    • Taverna
  • Projetos Open Source
    • Canary
    • OTServBR-Global
    • Mehah OTClient
    • MyAAC
  • OpenTibia
    • Notícias e Discussões
    • Suporte - Dúvidas, Bugs, Erros
    • Downloads
    • Tutoriais
    • Show-Off
  • Outros
    • Design

Encontrado 2 registros

  1. Inicio no Löve ;b

    Então, depois que o Socket postou sobre o Löve e como eu já estava interessado em criar algum jogo e também como raramente me vem alguma ideia de script decente na cabeça, decidi criar algo usando o Löve pra saber como ele funciona, eu já estava fazendo um jogo em Java, mas é um pouco (muito) desanimador fazer tudo sozinho... Enfim, ai está os códigos lua que criei ontem pra passar o tempo (no final eu coloquei tudo pra download, como é usado um sprite sheet vai ser necessário baixar para rodar, o sprite sheet usado eu peguei em um site e só organizei do jeito que queria) e acho que vou continuar até ter uma aparência de jogo mesmo Por enquanto o que dá pra fazer é movimentar o personagem pra frente e pra trás apenas, mas conta com animação do player parado e andando (só andando pra frente), ou seja quando anda troca de animação, é bem simples, mas quis fazer para principalmente aprender a criar animação e talvez incentivar mais pessoas :] Para testar é necessário ter o Löve ! Caso você não tenha o Löve instalado, é só seguir o que tem nessa página (em inglês) http://love2d.org/wiki/Getting_Started explica tudo que precisar main.lua require("system/imageSheet.lua") require("system/animation.lua") require("system/player.lua") framesPassed, player = 0 function table.exist(table, n) for i = 1, #table do if (table[i] == n) then return i end end return false end ------ function love.load() player = Player:new() player:setGraphics({ stopped = ImageSheet:new("player.png", 25, 48, 3), walking = ImageSheet:new("player.png", 48, 49, 16,0,49) }) player:setAnimation("stopped", Animation:new(player:getGraphic("stopped"), 90)) player:setAnimation("walking", Animation:new(player:getGraphic("walking"), 20)) player:setPosition(30, 60) love.graphics.setFont(font) end function love.draw() --love.keyboard.setKeyRepeat(10, 200) player:getAnimation(player:getAction()):Draw(player:getPosition().x, player:getPosition().y) love.graphics.print("- Infos -", 20, 7) love.graphics.print("FPS: "..love.timer.getFPS(), 10, 20) love.graphics.print("Delta: "..love.timer.getDelta(), 10, 35) love.graphics.print("Frames Passed: "..framesPassed, 10, 50) love.graphics.print("Player Action: "..player:getAction(), 10, 70) end -- logics animationTime = 0 function love.keyreleased(key, unicode) if (player:getAction() == 'walking') then player:setAction('stopped') end end function love.update(dt) fps = love.timer.getFPS() if (love.keyboard.isDown('right')) then player:setPosition(player:getPosition().x + 0.5) player:setAction('walking') elseif (love.keyboard.isDown('left')) then player:setPosition(player:getPosition().x - 0.5) player:setAction('walking') end player:getAnimation(player:getAction()):Update() if (framesPassed >= fps) then framesPassed = 0 else framesPassed = framesPassed + 1 end end system/imageSheet.lua ImageSheet = {} function ImageSheet:new(name, spriteWidth, spriteHeight, nSprites, initX, initY) sheet = {} img = love.graphics.newImage(string.format("data/images/%s", name)) initX = initX or 0; initY = initY or 0 for y = 0, math.ceil(img:getHeight()/spriteHeight) - 1 do for x = 0, math.ceil(img:getWidth()/spriteWidth) - 1 do if (not nSprites or #sheet < nSprites) then sheet[x+1] = love.graphics.newQuad(initX+spriteWidth*x, initY+spriteHeight*y, spriteWidth, spriteHeight, img:getWidth(), img:getHeight()) end end end return setmetatable({ batch = love.graphics.newSpriteBatch(img, spriteWidth * spriteHeight), sheet = sheet, image = img }, {__index = self}) end function ImageSheet:getSheet(n) return (n and self.sheet[n] or self.sheet) end function ImageSheet:getBatch() return self.batch end function ImageSheet:getSheetLength() return #self.sheet end function ImageSheet:Draw(frame, x, y) self:getBatch():clear() self:getBatch():addq(self:getSheet(frame), x, y) love.graphics.draw(self:getBatch(), x, y) end system/animation.lua require("system/imageSheet.lua") Animation = {} function Animation:new(imagesheet, delay) return setmetatable({imgsheet = imagesheet, frame = 1, delay = delay, time = 0}, {__index = self}) end function Animation:nextFrame() self.frame = self.frame == self.imgsheet:getSheetLength() and 1 or self.frame + 1 end function Animation:Update() if (self.time >= self.delay) then self:nextFrame() self.time = 0 end self.time = self.time + 1 end function Animation:Draw(x, y) self.pos = {x=x,y=y} self.imgsheet:Draw(self.frame, self.pos.x, self.pos.y) end system/player.lua Player = {} function Player:new() return setmetatable({ position = { x = 0, y = 0 }, action = 'stopped', graphics = { } }, {__index = self}) end --- function Player:getPosition() return self.position end function Player:setPosition(x, y) self.position.x = x or self.position.x; self.position.y = y or self.position.y; end function Player:getAction() return self.action end function Player:setAction(action) self.action = action end --- function Player:setGraphics(graphics) for a, b in pairs(graphics) do self.graphics[a] = {imgxt = b} end end function Player:getGraphic(graphic) return self.graphics[graphic].imgxt end function Player:getAnimation(action) return self.graphics[action].animation end function Player:setAnimation(action, animation) self.graphics[action].animation = animation end O Sprite Sheet (pra quem não sabe significa "folha de sprites", seria um conjunto de sprites em um só arquivo) que eu usei foi pego nesse link: http://www.spriters-resource.com/ds/cstlevniadawnofsorrow/sheet/19037 E eu adicionei só o necessário reorganizei do meu jeito e ficou dessa maneira: http://img850.imageshack.us/img850/3083/playerb.png ----- Caso tenha se interessado: Aqui explica como instalar e executar scripts feitos para o Löve: http://love2d.org/wiki/Getting_Started Tutoriais: http://love2d.org/wiki/Category:Tutorials ----- Eu vi lá que tem como mandar como executável mas mudei a extensão e mesmo assim não consegui fazer aqui :s então está como .rar mesmo
  2. Valentine's Card System!

    Informações = { Nome = Valentine's Card System Autor = Iuri Mandello, ideia nesse tópico : http://forums.otserv.com.br/f330/cartao-de-amor-139041/ Versão testada = TFS 0.3.5 } Boa tarde,ainda não tenho quase nenhum script postado no fórum, mas prometo a partir de agora me dedicar mais ao fórum (Y) Informações Bom vamos ao que interessa, esse script da uma ultilidade a mais ao Valentine's Card, com ele você pode enviar e receber cartões de amor. Comandos /love Fulano,mensagem -- Envia um cartão para a pessoa, se ele estiver online receberá na hora senão receberá no login. /love info -- Informações sobre o script Script Crie um arquivo chamado love.lua na pasta Talkactions/scripts e coloque isso dentro: function onSay(cid,words,param,channel) if param == 'info' then return doPlayerPopupFYI(cid, 'Valentine s Card System v 1.0 by Iuri Mandello\a Comandos: /love Player,Mensagem = Envia o cartão para o player.') end local t1,t2 = param:match('(.-),%s*(.+)')-- Valeu Mock if t1 == nil then return doPlayerSendTextMessage(cid,22,"Select a player to send the message") end if (getPlayerGUIDByName(t1) == nil) then return doPlayerSendTextMessage(cid,22,"Player does not exist") end if t2 == nil then return doPlayerSendTextMessage(cid,22,"No message specified") end if string.len(tostring(t2)) > 100 then return doPlayerSendTextMessage(cid,22,"The message is long") end if string.len(tostring(t2)) < 0 then return doPlayerSendTextMessage(cid,22,"The message is short") end if isOnline(t1) then local item = doPlayerAddItem(getPlayerByName(t1),6538) doSetItemText(item, tostring(t2)) doPlayerSendTextMessage(cid,22,"Card send successfully") return TRUE end if io.open("data//love//".. tostring(t1) ..".txt") == nil then local file = io.open("data//love//".. tostring(t1) ..".txt","w") file:write("by ".. getPlayerName(cid) ..":".. tostring(t2) .."\n") file:close() doPlayerSendTextMessage(cid,22,"Card send successfully") else local file = io.open("data//love//".. tostring(t1) ..".txt","a+") file:write("by ".. getPlayerName(cid) ..":".. tostring(t2)) file:close() doPlayerSendTextMessage(cid,22,"Card send successfully") end return TRUE end Tag xml para ser colocada em talkactions.xml: <talkaction words="/love" event="script" value="love.lua"/> Crie um arquivo chamado lovelogin.lua na pasta creaturescripts/scripts e coloque isso dentro: function onLogin(cid) local file = io.open("data//love//".. getCreatureName(cid) ..".txt") if file ~= nil then doPlayerSendTextMessage(cid,22,"You received one love card!") for msg in io.lines("data//love//".. getCreatureName(cid) ..".txt") do item = doPlayerAddItem(cid,6538) doSetItemText(item,msg) end file:close() os.remove("data//love//".. getCreatureName(cid) ..".txt") end return TRUE end Tag para ser colocada em creaturescripts.xml: <event type="login" name="Love" script="lovelogin.lua"/> Agora abra o arquivo creaturescripts/scripts/login.lua e adicione entes do último return TRUE: registerCreatureEvent(cid, "Love") <font face="Comic Sans MS"><font size="4"><font size="2"><font size="4"><font size="2"><font size="4"><font size="2"> Você precisará da OTAL ou simplesmente coloque isso em lib/functions.lua ou arquivo semelhante: function isOnline(name)--by mock local players = getOnlinePlayers() name = string.lower(name) for i, player in ipairs(players) do player = string.lower(player) if name == player then return TRUE end end return FALSE end Por último, crie uma pasta chamada love na pasta data do seu servidor e está pronto Espero que tenham gostado, e por favor não faça comentários como "Legal","Vou usar no meu server", se quiser agradecer use o botão Thanks,use o tópico somente para dúvidas e bugs. Esse script é exclusivo da OTnet, se encontrar em outro fórum por favor avise
×