[Tutorial] Classe para NPCs |
Bolodefchoco « Sénateur » 1529685720000
| 3 | ||
https://github.com/a801-luadev/useful-classes/blob/master/NPC.lua Uma classe para a manipulação de NPCs com animação e callback. O que você pode fazer? Code Lua 1 2 3 4 5 6 7 8 9 10 11 12 13 local bot = npc.new("Wu", { https://github.com/a801-luadev/useful-classes/blob/master/NPC.lua npc
:deleteCallback :destroy :display :displayName :loop :resetAction :setAction :setCallback :setCollection :setDimension :setLayer :setName :setNameColor :setNamePosition :setPosition :setState :setStatic collection currentState h id isStatic layer looping nameX nameY w x y TICKS __iter __get https://github.com/a801-luadev/useful-classes/blob/master/NPC.lua [desatualizado] • npc.x A posição horizontal do NPC. • npc.y A posição vertical do NPC. • npc.w A largura do NPC. • npc.h A altura do NPC. https://github.com/Lautenschlager-id/Transformice/blob/master/Others/NPC%20class.lua [desatualizado] • npc ( name, collection, layer ) Cria uma instância de NPC. Parâmetros: - name (string) : nome do NPC. (default = nil) - collection (table) : coleção de frames do NPC. - layer (string) : camada (target) da imagem do NPC. Retorna: (npc) self • npc:deleteCallback ( [ playerName ] ) Remove a callback do NPC, caso definida. Parâmetros: - playerName (string) : nome do jogador que terá a callback removida Retorna: (npc) self • npc:destroy ( super ) Remove o NPC. Parâmetros: - super (boolean) : se o nome também deve ser removido. • npc:getAction ( ) Obtém a ação/animação do NPC. Retorna: (function | nil) ação do NPC • npc:getCollection ( ) Obtém a coleção de frames do NPC. Retorna: (table) coleção de frames do NPC • npc:getId ( ) Obtém a id única do NPC. Retorna: (int) id do NPC • npc:getLayer ( ) Obtém a camada/target do NPC. Retorna: (string) target do NPC • npc:getName ( ) Obtém o nome do NPC. Retorna: (string | nil) nome do NPC • npc:getState ( ) Obtém a coleção atual de frames do NPC Retorna: (string) coleção atual de frames do NPC • npc:removeAction ( ) Destrói a animação do seu NPC, caso definida. Retorna: (npc) self • npc:removeName ( [ playerName ] ) Remove o nome do NPC. Parâmetros: - playerName (string) : nome do jogador que não verá mais o nome Retorna: (npc) self • npc:setAction ( [ event[, static] ] ) Define a ação/animação do NPC. Parâmetros: - event (function) : função a ser realizada para cada frame da animação. Recebe o número do frame atual e pode alterá-lo com um retorno - static (boolean) : se o NPC estará estático ou não Retorna: (npc) self • npc:setCallback ( eventName[, event ] ) Define a callback do NPC, para que haja o disparo quando o mesmo for clicado. Parâmetros: - eventName (string) : o nome da callback - event (function) : a função a ser executada quando a callback for ativada Retorna: (npc) self • npc:setDimension ( width, height ) Define o tamanho do NPC (para fins de callback, apenas). Parâmetros: - width (int) : a largura do NPC. (default = 1) - height (int) : a altura do NPC. (default = 1) Retorna: (npc) self • npc:setPosition ( x, y ) Define a posição do NPC. Parâmetros: - x (int) : a posição horizontal do NPC. (default = 0) - y (int) : a posição vertical do NPC. (default = 0) Retorna: (npc) self • npc:setState ( newState ) Define a coleção atual de frames do NPC. Parâmetros: - newState (string) : o nome da coleção de frames. Retorna: (npc) self • npc:static ( ) Define o NPC como uma imagem estática (que não se move) e finalize todas as ações definidas. Retorna: (npc) self https://github.com/a801-luadev/useful-classes/blob/master/NPC.lua Para iniciar seu NPC, crie uma nova instância dele com a coleção de frames. Cada coleção é uma tabela, contendo seu nome e as imagens em índices numéricos. Code Lua 1 2 3 4 5 6 { -- Coleções Dernière modification le 1587654060000 |
Ninguem « Consul » 1529686080000
| 1 | ||
Que daora, daria pra fazer uns rpg maneiro com isso. Uns cara andando pra lá e pra cá ou até alguém seguindo o teu rato. Ele só anda pra direita por enquanto? Ah, fica a sugestão pra fazer também uma função de pulo. Dernière modification le 1529686140000 |
Bolodefchoco « Sénateur » 1529686440000
| 0 | ||
Não tem movimentos pré-definidos. Você manipula as coordenadas como desejar. No caso, o exemplo que usei tem uma variável x que tem seu valor somado a 10 a cada frame. x = x + 10 Ai você pode fazer - 10 para ir pra trás, etc. O pulo seria uma função mais complicada, onde o x aumenta gradualmente enquanto o y age como um gráfico seno. No caso, você teria que pegar os frames do rato e fazer. A classe só ajuda a manipulá-lo. Utilizo o https://projects.fewfre.com/a801/transformice/dressroom/ para obter alguns frames. Dependendo da velocidade que for usada, hospedar 200 imagens da SWF não se torna uma necessidade. Dernière modification le 1529686500000 |
Fofinhoppp « Consul » 1529698380000
| 1 | ||
Ótimo tutorial O que acha de fazer a animação de pulo simplesmente removendo a imagem e substituindo temporariamente ela por uma vinculada a um shaman object que será levemente lançado e irá cair de volta? Não sei se ficou muito compreensível e nem funcional, mas é uma ideia. |
Bolodefchoco « Sénateur » 1529698620000
| 0 | ||
O problema é a gravidade que pode fufu tudo, mas usar objetos é viável :v |
Bolodefchoco « Sénateur » 1529699820000
| 0 | ||
Editei a classe para que os timers sejam usados uma única vez para todos os NPCs (mais leve). Agora a action é tratada como valor, setAction / getAction. Tendo um loop só, a velocidade é constante para todos os NPCs. Altere-a caso necessário. |
Zash1eh « Censeur » 1529701980000
| 1 | ||
Ui Amey |
Hugotitas « Citoyen » 1529788440000
| 1 | ||
Que legal bolo! |
0 | ||
Olá eu sou burro tentei fazer mas n tenho paciência sera q auguem possa me informar como colocar tudo no lugar? |
Bolodefchoco « Sénateur » 1532903460000
| 0 | ||
Tópico atualizado com novas funções. |
0 | ||
a onde? |
Bolodefchoco « Sénateur » 1532903580000
| 0 | ||
Rap a dit : Você só pode usar imagens se for um membro da module team. :/ |
0 | ||
mas tipo n posso usa npc pra colocar cafofo e tipo ele pode vender as coisas |
0 | ||
Você só pode usar imagens se for um membro da module team. :/[/quote] como assim? |
Bolodefchoco « Sénateur » 1532904600000
| 0 | ||
Cara, você devia falar tudo em uma mensagem só.. Mó vacilo permitirem double :P Rap a dit : Aqui estão mais informações sobre a module team. De qualquer forma, não, você não pode @edit: nada te impede de usar o script, você só não verá a imagem |
0 | ||
:( porq n posso se puder me ajudar queria npc pra fica cafofo Dernière modification le 1532904720000 |
Bolodefchoco « Sénateur » 1532904720000
| 0 | ||
Rap a dit : Acabei de responder, colega. Apenas membros da module team tem a permissão de usarem a função tfm.exec.addImage |
0 | ||
como faço para poder entrar? |
Bolodefchoco « Sénateur » 1532904960000
| 0 | ||
Rap a dit : Você deve ser capaz de programar em Lua. Se você se considera capaz, envie seu formulário aqui em inglês Para perguntas não relacionadas a este tópico, por favor utilize este outro tópico |
0 | ||
mano tem como eu fazer um npc? se tiver me ajuda |