🤔 Para Refletir :
"O mais importante não é a história, mas como você conta ela."
- FL

Limitação da Engine em relação a alguns comandos de eventos

Estado
Tópico fechado. Não é possível fazer postagens nela.

Lorrampi Masculino

Novato
Membro
Membro
Jamais desista!
Juntou-se
05 de Junho de 2016
Postagens
8
Bravecoins
0
Área
Programação
Motor de jogo
RPG Maker 2000
Olá pessoa, espero que todos estejam bem.
Estava tentando um dia desses criar um sistema baseado em eventos em um projeto meu que envolvia derivações condicionais.

Vejam as imagens abaixo:
Problema_01.png
Problema_02.png


No sistema que estava panejando fazer usando um evento comum, fez falta a opção "Variável" que pode ser visto na imagem abaixo:
Problema_03.png


Na primeira imagem, seria legal se fosse possível criar uma derivação condicional (Conditional Branch) onde o alvo da condição fosse um ator cujo ID estivesse armazenado em uma variável.
Exemplo: Quero saber se o ator X está nocauteado? (X é o número do Ator, que em algum evento anterior já havia declarado o valor na variável que vai ser usada)

Na segunda imagem, seria legal se tivesse também a opção marcada na imagem 3, a de variável, pois poderia adicionar ou remover um ator, só usando uma variável cujo valor do ator em questão já está armazenado.

Como isso poderia ser resolvido?
Desde já agradeço a atenção. Fiquem na paz...
 
Infelizmente este não chega a ser a única limitante da Engine, o triste que como não são muitos os que fazem este tipo de reclamação inclusive diretamente para o time de desenvolvimento, observe que quando vou para a Aba "Ajuda" tenho as seguintes opções: Conteúdo, Sobre...
Ou seja, não tenho "Feedback" ou "Suport", acaba sendo difícil de conseguirmos as atualizações que precisamos, na última inclusive tivemos das de UI foi de poder colorir as transparências, por grades no mapa do editor, atualizar a lista de plug-ins, o botão DLC no gerenciador de recursos, algumas opções de seleção e uso do scroll do mouse, consertos nos Bugs, mas nada relacionado a eventos, bem, eu criei um sistema de veículo (Carro), que acabou ficando muito simples justamente porque faltou opções que poderiam ter deixado mais realista este sistema, um deles por exemplo é a animação de entrar e sair de um veículo que vc poderia colocar em um evento, porém é por padrão dos veículos de embarcação e voo, uma pena, espero que em breve de desenvolvimento traga novas ferramentas para quem está em meio ao projeto e aqueles que tbm já terminaram possam estar criando atualizações mais complexas e dinâmicas as suas produções. Abraço e fica na Paz!
 
Você poderia declarar uma variável com o valor de vida do inimigo, digamos (3). E quando este inimigo for for atingindo 3 vezes ele seria deletando por uma switch.

Tipo assim:
<>Esperar 1 frame
<>Condição: Pressionar tecla (C)
<>Animação de ataque
Comentário: Crie uma variável dentro desta condição!!
<>Opções de variável (Ataque) +1
<>Esperar 2 Frames

Comentário: Agora crie uma condição variável dentro desta condição!

<>Condição Variável (Ataque) == 3
Switch que vai deletar o inimigo ou abrir algum baú, cabe sua criatividade decidir.
<>Switch (Morte inimigo) = ON
<>Exceção
<>Fim

<>Exceção
<>Fim


Veja se isso pode te ajudar. Abraços amigo!
 
lorrampi comentou:
[...]
Como isso poderia ser resolvido?
Desde já agradeço a atenção. Fiquem na paz...

Pelo que vejo, dá para resolver isso facilmente utilizando um plugin bem pequeno e fácil de fazer, com alguns comandos de plugin para utilizar.

Não se preocupe, os comandos são bem simples em pseudo-código, você não precisa sujar suas mãos com Javascript.

Por favor, peço que você reuna o máximo de condições destas que deseja, para que eu possa fazer tudo de uma vez só.

Essas duas já dão um começo. Nos próximos dias farei um plugin para isso (se ninguém aqui correr na minha frente, né)

Se cuida e até mais,



thiagokyo comentou:
Infelizmente este não chega a ser a única limitante da Engine, o triste que como não são muitos os que fazem este tipo de reclamação inclusive diretamente para o time de desenvolvimento, observe que quando vou para a Aba "Ajuda" tenho as seguintes opções: Conteúdo, Sobre...
Ou seja, não tenho "Feedback" ou "Suport", acaba sendo difícil de conseguirmos as atualizações que precisamos, na última inclusive tivemos das de UI foi de poder colorir as transparências, por grades no mapa do editor, atualizar a lista de plug-ins, o botão DLC no gerenciador de recursos, algumas opções de seleção e uso do scroll do mouse, consertos nos Bugs, mas nada relacionado a eventos, bem, eu criei um sistema de veículo (Carro), que acabou ficando muito simples justamente porque faltou opções que poderiam ter deixado mais realista este sistema, um deles por exemplo é a animação de entrar e sair de um veículo que vc poderia colocar em um evento, porém é por padrão dos veículos de embarcação e voo, uma pena, espero que em breve de desenvolvimento traga novas ferramentas para quem está em meio ao projeto e aqueles que tbm já terminaram possam estar criando atualizações mais complexas e dinâmicas as suas produções. Abraço e fica na Paz!

Isso é bem verdade. Eles até presatm algum suporte e aceitam algumas sugestões, mas é apenas no fórum oficial e em inglês, o que coloca muitas barreiras a mais para nós (criar conta, falar em inglês, esperar a boa vontade deles que são apenas representantes, etc.).

Por sinal, eu estava a desenvolver há uns meses atrás um plugin de veículos adicionais bem interessante, se quiser trabalhar comigo nisso, eu posso até me animar para terminar.

Atenciosamente,



[member=279]Angelo Nobre[/member],

Condições até funcionam, mas pelo que o [member=680]lorrampi[/member] me falou, ele terá muitos heróis e inimigos para verificar, tornando o sistema desnecessariamente complexo (Se não explodindo o Interpretador de Eventos...). Um plugin muito simples pode resolver isso. De repente ele até já existe, ou está meio pronto uma hora dessas -- É coisa de uma linha só de Javascript, mais as formalidades para tornar um plugin de fato.\

Forte abraço, amigo!
 
thiagokyo comentou:
Infelizmente este não chega a ser a única limitante da Engine, o triste que como não são muitos os que fazem este tipo de reclamação inclusive diretamente para o time de desenvolvimento, observe que quando vou para a Aba "Ajuda" tenho as seguintes opções: Conteúdo, Sobre...
Ou seja, não tenho "Feedback" ou "Suport", acaba sendo difícil de conseguirmos as atualizações que precisamos, na última inclusive tivemos das de UI foi de poder colorir as transparências, por grades no mapa do editor, atualizar a lista de plug-ins, o botão DLC no gerenciador de recursos, algumas opções de seleção e uso do scroll do mouse, consertos nos Bugs, mas nada relacionado a eventos, bem, eu criei um sistema de veículo (Carro), que acabou ficando muito simples justamente porque faltou opções que poderiam ter deixado mais realista este sistema, um deles por exemplo é a animação de entrar e sair de um veículo que vc poderia colocar em um evento, porém é por padrão dos veículos de embarcação e voo, uma pena, espero que em breve de desenvolvimento traga novas ferramentas para quem está em meio ao projeto e aqueles que tbm já terminaram possam estar criando atualizações mais complexas e dinâmicas as suas produções. Abraço e fica na Paz!
É amigo, infelizmente eles melhoram várias coisas, mas acabam piorando outras...
Lembro como era fácil criar um sistema de seleção de personagens no RPG Maker 2003 através de eventos. No RPG Maker MV os comandos de eventos não seriam suficientes, a única solução seria plugins mesmo.
Eu também vou ficar na torcida, até porque os makers japoneses já devem ter percebido algumas dessas limitações e provavelmente vão ser os primeiros a sugerirem as melhorias que são essenciais aos makers do mundo inteiro.

Angelo Nobre comentou:
Você poderia declarar uma variável com o valor de vida do inimigo, digamos (3). E quando este inimigo for for atingindo 3 vezes ele seria deletando por uma switch.

Tipo assim:
<>Esperar 1 frame
<>Condição: Pressionar tecla (C)
<>Animação de ataque
Comentário: Crie uma variável dentro desta condição!!
<>Opções de variável (Ataque) +1
<>Esperar 2 Frames

Comentário: Agora crie uma condição variável dentro desta condição!

<>Condição Variável (Ataque) == 3
Switch que vai deletar o inimigo ou abrir algum baú, cabe sua criatividade decidir.
<>Switch (Morte inimigo) = ON
<>Exceção
<>Fim

<>Exceção
<>Fim


Veja se isso pode te ajudar. Abraços amigo!
Olha, em outra circunstância sim, no caso de um sistema ABS por eventos, mas a questão é bem complicada, do tipo que só plugins podem contorná-la.
Vou te dar um exemplo: Por eventos você tenta criar um um depósito para itens. Se a seleção dos itens for feita, você teria que criar uma derivação condicional para cada item, quando, se fosse possível, especificar o valor da ID do Item na Variável tal, o processamento aconteceria sem depender de nenhuma derivação condicional.
De qualquer forma, agradeço a intenção em ajudar.  Outro abraço.

Rafael_Sol_MAKER comentou:
lorrampi comentou:
[...]
Pelo que vejo, dá para resolver isso facilmente utilizando um plugin bem pequeno e fácil de fazer, com alguns comandos de plugin para utilizar.

Não se preocupe, os comandos são bem simples em pseudo-código, você não precisa sujar suas mãos com Javascript.

Por favor, peço que você reuna o máximo de condições destas que deseja, para que eu possa fazer tudo de uma vez só.

Essas duas já dão um começo. Nos próximos dias farei um plugin para isso (se ninguém aqui correr na minha frente, né)

Se cuida e até mais,
Pois bem, Rafael_Sol_MAKER, nas imagens abaixo, eu acho que consegui reunir as condições que desejo. Acho que os desenvolvedores erraram feio ao deixar a derivação condicional da aba 2 tão limitada, e os comandos da guia 1 que circulei em vermelho. Agradeço a atenção e espero ter me expressado melhor dessa vez...
Fica na paz e um abraço.
exemplo1.png

exemplo2.png
 
Já saquei, isso já dá um trabalhinho legal para se fazer! Oba!

Notei que o mesmo também se aplica aos comandos de eventos para Tropas Inimigas, procede? Dou uma olhada nessa parte também?

Quanto ao plugin... Vou gerar uma série de comandos fáceis de usar, assim você só vai precisar especificar alguns ids e/ou números, pode ser? Exemplo:

ComandoPlugin id_variável valor

Opcionalmente posso fazer algo a mais a depender da sua necessidade. Ao invés de id_variável você pode preferir usar um número qualquer ou qualquer outra variável ou constante, daí você teria que usar algo como $game_variables[id_variável] no lugar para acessar as variáveis do editor. Acha melhor assim? Ou então posso deixar tudo direcionado para ids de varáveis automaticamente que você só precisa entrar a id, mas daí você perde essa funcionalidade extra. O que acha? Qual dos dois prefere?

Valor vai variar a depender do tipo, se for para estado será a id do Estado, se for, sei lá, p.ex. HP, vai ser o valor do HP a definir. Acho que esse aqui não tem mistério.
 
Rafael_Sol_MAKER comentou:
Já saquei, isso já dá um trabalhinho legal para se fazer! Oba!

Notei que o mesmo também se aplica aos comandos de eventos para Tropas Inimigas, procede? Dou uma olhada nessa parte também?

Quanto ao plugin... Vou gerar uma série de comandos fáceis de usar, assim você só vai precisar especificar alguns ids e/ou números, pode ser? Exemplo:

ComandoPlugin id_variável valor

Opcionalmente posso fazer algo a mais a depender da sua necessidade. Ao invés de id_variável você pode preferir usar um número qualquer ou qualquer outra variável ou constante, daí você teria que usar algo como $game_variables[id_variável] no lugar para acessar as variáveis do editor. Acha melhor assim? Ou então posso deixar tudo direcionado para ids de varáveis automaticamente que você só precisa entrar a id, mas daí você perde essa funcionalidade extra. O que acha? Qual dos dois prefere?

Valor vai variar a depender do tipo, se for para estado será a id do Estado, se for, sei lá, p.ex. HP, vai ser o valor do HP a definir. Acho que esse aqui não tem mistério.
Não só se aplica as tropas inimigas como é mais simples. Tem um sistema que quero tentar usando um plugin do Victor, o Unreachable Targets, onde eu criaria uma luta especial, onde um inimigo sortido e um aliado se enfrentam enquanto o resto assiste a luta e onde os que lutam não podem atacar os que estão observando. Quando um ator ou inimigo perde, o próximo da fila deixa de ser observador e entra na luta. E claro, não posso esquecer de vedar no que está lutando, as habilidades de que envolvem reviver aliados.
Sobre os comandos, acho que a funcionalidade extra é uma boa. Vai ser meio específica, mas mesmo que a principio eu não acho algo para usá-las, não duvido que mais a frente eu possa estar aproveitando, só sei que os outros em algum momento vão sentir falta da funcionalidade e vão encontrar no seu plugin.
Estou vendo que vai ser simples de todo jeito.
Fica na paz meu amigo. Até...
 
Bueno, eu reobservei a questão dos inimigos, vai ter que sair fora do planejamento por que encontrei uma limitação na forma como a engine é concebida. TIpo, são até 8 inimigos em posições pré-fixas, mas eles podem ser iguais (possuir o mesmo ID) então não tem como alcançar individualmente. Se for para alcançar eles por variável, ela só iria de 1 a 8 então talvez nem compensasse mexer nisso.

Contudo para a equipe dos heróis todas as opções vão estar disponíveis (inclusive uma extra que está enterrada no fundo da engine). Vão ser 8 comandos, sendo que alguns incluirão várias opções e valerão por muito mais que um só (p.ex. juntei 3 em 1, sem contar o condicional que é bem extenso). Tirando a documentação, já fiz mais de 3/4 dele, então amanhã ou até esse fim de semana, deve estar pronto.

A opção da condicional eu vou fazer dar retorno no ID de um switch do editor, assim você terá mais liberdade para trabalhar com tais condicionais, tudo bem? O script sairá primeiro em inglês e também poderá estar disponível nos próximos dias na rpgmakerweb.com. Se você quiser requisitar exclusividade por um tempo antes de eu divulgar livremente (CC-BY 4.0 é a licença que eu uso pro meu trabalho em condições normais), fica a seu critério, posso te conceder essa "vantagem".

Forte abraço e até mais, (E desculpa pela demora para um script tão fácil e bobo)
 
Falta apenas um comando e alguma documentação, e ele estará disponível para ser testado. Vai funcionar por base nas ID das variáveis do editor que você quer acessar o valor. Amanhã eu te entrego.

Só aviso que ele vai ser extremamente sensível a erros na digitação dos parâmetros dos comandos, ainda não consigo prever bem o que pode acontecer em todos os casos (nem testei ainda), e não há tratamento de erros muito avançado, por isso vou dar a ele o rótulo de BETA.

Daí aconselho que você teste todos os comandos com valores válidos ou não e daí me reporte o que aconteceu. A funcionalidade dele não será alterada até a versão "estável", então você já pode se acostumar com os comandos como forem apresentados.

Novamente, aviso que eles estão em inglês. Se realmente isso for um empecilho, deixe me saber para que eu possa providenciar uma versão em português pra você. Contudo creio que não terá problemas.

Até breve!
 
Rafael_Sol_MAKER comentou:
Bueno, eu reobservei a questão dos inimigos, vai ter que sair fora do planejamento por que encontrei uma limitação na forma como a engine é concebida. Tipo, são até 8 inimigos em posições pré-fixas, mas eles podem ser iguais (possuir o mesmo ID) então não tem como alcançar individualmente. Se for para alcançar eles por variável, ela só iria de 1 a 8 então talvez nem compensasse mexer nisso.

Contudo para a equipe dos heróis todas as opções vão estar disponíveis (inclusive uma extra que está enterrada no fundo da engine). Vão ser 8 comandos, sendo que alguns incluirão várias opções e valerão por muito mais que um só (p.ex. juntei 3 em 1, sem contar o condicional que é bem extenso). Tirando a documentação, já fiz mais de 3/4 dele, então amanhã ou até esse fim de semana, deve estar pronto.

A opção da condicional eu vou fazer dar retorno no ID de um switch do editor, assim você terá mais liberdade para trabalhar com tais condicionais, tudo bem? O script sairá primeiro em inglês e também poderá estar disponível nos próximos dias na rpgmakerweb.com. Se você quiser requisitar exclusividade por um tempo antes de eu divulgar livremente (CC-BY 4.0 é a licença que eu uso pro meu trabalho em condições normais), fica a seu critério, posso te conceder essa "vantagem".

Forte abraço e até mais, (E desculpa pela demora para um script tão fácil e bobo)
Sobre os inimigos, já tinha imaginado que iria dar em algo assim mesmo, mas a engine já supri as necessidades, nesse sentido.
Fico feliz que as opções para a equipe de heróis vão estar disponíveis. E esse extra me deixou curioso :Hm:
Cara, se o negócio for tornar possível uma possibilidade, que os desenvolvedores deixaram passar no editor, está beleza. O que importa é que vai ser fácil de aprender e vai ser muito prático. Esse lance de exclusividade, eu agradeço, mas ainda nem peguei pesado para começar um dos meus projetos.
Não se preocupe, não tenho pressa, até porque ando revisando o database e em breve vou lançar uma atualização dele.

Rafael_Sol_MAKER comentou:
Falta apenas um comando e alguma documentação, e ele estará disponível para ser testado. Vai funcionar por base nas ID das variáveis do editor que você quer acessar o valor. Amanhã eu te entrego.

Só aviso que ele vai ser extremamente sensível a erros na digitação dos parâmetros dos comandos, ainda não consigo prever bem o que pode acontecer em todos os casos (nem testei ainda), e não há tratamento de erros muito avançado, por isso vou dar a ele o rótulo de BETA.

Daí aconselho que você teste todos os comandos com valores válidos ou não e daí me reporte o que aconteceu. A funcionalidade dele não será alterada até a versão "estável", então você já pode se acostumar com os comandos como forem apresentados.

Novamente, aviso que eles estão em inglês. Se realmente isso for um empecilho, deixe me saber para que eu possa providenciar uma versão em português pra você. Contudo creio que não terá problemas.

Até breve!
Tudo bem, pode ir com calma, e o projeto que eu fazia, antes de iniciar o projeto do database, vai servir de base para o teste desse script que você está trabalhando.
Bem, acho que vou precisar de um exemplo básico do que vai ser os valores válidos e inválidos,  :^^':. De qualquer forma, vou tentar aproveitar o aprendizado do BETA.
Amigo, eu tenho uma certa familiaridade com inglês, então não precisa se preocupar. Mas como disse, não tenho pressa. Eu até esperaria a versão em português, no seu devido tempo.

Um forte abraço para você também e até mais!
 
A versão BETA já está disponível nesse link: [descarga]http://pastebin.com/download/K5UvLcfd[/descarga]

A explicação das possibilidades está na Ajuda do script. Um bom nome pro arquivo seria: "CustomVariableCommandsBETA.js"

Aqui vai um exemplo de cada comando, lembrando que para alguns há variação, daí você terá que olhar a ajuda pra saber o que colocar. Uma limitação presente que descobri é que ele só pode checar o primeiro nome do Personagem, na condicional (ConditionalBranchActor), mas isso deve mudar até a versão final.

Lembrando que o primeiro 1 depois da maioria dos comandos é o id da variável no editor que tem o valor que você quer checar. Coloque o id do herói (ou do que for pedido) nessa variável. O que está depois das duas barras // é só o comentário do formato que você deve utilizar.

Código:
// ConditionalBranchActor <actor_id> <condition> <value> <switch>
ConditionalBranchActor  1  Skill  1  10

//ChangeAllItems <item_type> <item_id> <ammount> <includeEquips?>
ChangeAllItems  Weapon  1  -1  true

// ChangePartyMember <actor_id> <operation> <reset?>
ChangePartyMember  1  Add  false

//ChangeEquipment <actor_id> <type> <equip_id>
ChangeEquipment  1  3  1

//ChangeName <actor_id> <data>
ChangeName 1 Fulano de Tal

//ChangeClass <actor_id> <class_id> <keep_exp?>
ChangeClass 1 3 true

//ChangeNickname <actor_id> <data>
ChangeNickname 1 Tiozinho maluco da Sibéria

//ChangeProfile <actor_id> <data>
ChangeProfile 1 Maluco profissional, vive de bater carteiras por aí.

Acho que o resto você deve saber se virar. Qualquer bronca, basta avisar!
 
:Palmas: Muito fera Rafael, eu agradeço pelo empenho e pelo tempo gasto. Saiba que vai ser muito útil não só para mim, como vai ser também para qualquer outro que precise usar essas funcionalidades
 
Estado
Tópico fechado. Não é possível fazer postagens nela.
Voltar
Topo Inferior