O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Prism Ex: Quest System

Iniciado por Sotelie, 11/07/2017 às 16:56

Ah, sem dúvida eu tenho.
Seu script já estava sendo bem usado por aqui e como ele é bastante prático, não há opção melhor.

Se houver algo com o qual eu posso lhe ajudar nesse processo não exite em me procurar. Mas também não quero lhe dar trabalho, se não puder não tem problema.

Ocorre que usar os recursos plenos da plataforma torna o jogo enfadonho e toda a estética dela já saturou. Se vc não entende de desenho e criação própria dos gráficos, como eu, acaba tendo que depender de uma boa história, um bom mapeamento e, claro, os scripts. E quando vc usa uma quantidade considerável desse último as chances de ocorrer algum problema, incompatibilidade (etc), ficam mais altas. Então vc abre mão de alguns deles para manter outros, como eu estava fazendo com o seu. Pode ter certeza que o interesse neste script é alto de minha parte, e aposto que outros usam/usarão também. Não tenho intenção de removê-lo se os únicos problemas que ele aparentou foram estes que mencionei, sendo que incompatibilidade mesmo ocorreu apenas com o Mode 7, então se não puder fazê-lo não haverá problema, não quero atrapalhá-lo em seus projetos presentes com um projeto antigo.

18/03/2020 às 16:07 #16 Última edição: 18/03/2020 às 17:09 por Jorge_Maker
Darkrafa:
Bora lá resolver seu problema. :coffee: (tá me devendo um pastel, Alisson uhaeaue')


Quanto a segunda parte, testei o script do HEIRUKICHI por aqui e o relógio fica sempre abaixo do menu. Aliás, não faria nem sentido ele estar sobreponde o menu de quests, uma vez que faz parte da cena do mapa e, ao menos que o desenvolvedor tivesse sido muito imprudente, a imagem dele deveria ser sempre liberada no momento da troca de cena do mapa para o menu. Também testei com a HUD do sistema SAS, o resultado: ela também ficou sempre abaixo.
Mano, num sei o que aconteceu aí não. ,_,
Mesmo que eu não tenha conseguido replicar os seus problemas por aqui, sugiro que tente mudar a propriedade Z das janelas para valores altos no programinha de configuração que vem junto com a demo do sistema. Lembre-se de marcar a caixa Posição Customizada para visualizar as alterações aqui feitas. Pode ser que corrija o empecilho. :shrug:

Spoiler
[close]


Sobre a questão da contagem dos itens, o ideal seria o Alisson refatorar o sistema para adicionar essa opção de forma mais bonita, mas eu já preparei uma gambiarra aqui procê. e.e
Primeiro, você vai ter que aprender a usar a condição do tipo script ao seu favor:

No exemplo dado, a quest só será completada se o jogador tiver um ou mais itens do tipo 17, que, no caso da demo, corresponde à lenha. consulte o banco de itens pra saber a ID correspondente de cada item.
Pra fazer aparecer a quantidade de itens do jogador em uma mensagem associado à quantidade pedida pela quest, você vai ter que tacar essa linha de código aqui abaixo da linha 236 do script Window_Base.
    result.gsub!(/\eQS\[(\d+)[,\s*](\d+)[,\s*](\d+)\]/i) do
      match = $~
      if $game_system.pex_qs[:completed][match[1].to_i - 1]
        "#{match[3]}/#{match[3]}"
      else
        i = [$game_party.item_number($data_items[match[2].to_i]), match[3].to_i].min.to_s
        i + "/#{match[3]}"
      end
    end

Ficando dessa forma:
Spoiler
[close]
E pra usar:

Sendo o primeiro parâmetro, "1", a id da quest, o segundo, "17", a id do item e o terceiro, "1", a quantidade máxima desse item.


Analisei a sua suposta incompatibilidade com o Mode7, e, na verdade, não tem nada a ver com ele, é só um bug do PrimsEX com mapas que tem loop. A boa notícia é que foi um erro bem bobo do Alisson, então é sussa pra corrigir.
Substitua todas as linhas, desde 3163 até a 3185 do script PrimsEx por isto:
        #───────────────────────────────────────────────────────────────────────────
	# ♦ adjust_x
	#───────────────────────────────────────────────────────────────────────────
	def adjust_x(x)
		pos = (@display_x * 32).floor.to_f / 32
		if loop_horizontal? && x < pos - (width - screen_tile_x) / 2
			return x - pos + @map.width
		else
			return x - pos
		end
	end

	#───────────────────────────────────────────────────────────────────────────
	# ♦ adjust_y
	#───────────────────────────────────────────────────────────────────────────
	def adjust_y(y)
		pos = (@display_y * 32).floor.to_f / 32
		if loop_vertical? && y < pos - (height - screen_tile_y) / 2
			return y - pos + @map.height
		else
			return y - pos
		end
	end

ficando dessa forma:
Spoiler
[close]


Espero ter ajudado. Grande abraço. o/
Oxe

18/03/2020 às 22:04 #17 Última edição: 18/03/2020 às 22:10 por Darkrafa
Obrigado pela disposição, Jorge_Maker. Mesmo Syureri não tinha qualquer dever para esse auxílio, então sou grato a vocês.

Vamos lá:
-Sobre a opacidade da janela, realmente, +1 erro bobo em minha conta, a caixa Z do programinha estava em 0 e, claro, era isso que fez com que tanto a hud do SAS quanto o relógio ficassem sobre ela.
É engraçado que as vezes eu mexo em alguns scripts, quando algum erro ocorre, e vez ou outra eu resolvo, ou descubro alguns script calls que tinham outra forma de serem utilizados, mas com uma ou outra mudança eu também consigo realizá-las ao meu jeito, aí chega nesses pequenos detalhes... ... dá até vergonha rs.

-Sobre o Mode 7, não sei como mas funcionou. Eu copiei o texto e colei exatamente no espaço que era pra ser preenchido, e não notei qualquer diferença. Bruxaria de programadores...
Mas admito que não dei um ctrl Z ali pra reparar certinho kk

-Sobre a gambiarra que sugeriu, olha tentei várias vezes mas não funcionou.
Spoiler
[close]
Código na caixa do script e no programinha. A não ser que eu esteja muito cego neste momento, acredito que os caracteres estejam idênticos, exceção é claro as pequenas mudanças:
-id da quest de 1 para 3;
-id do item de 17 para 39;
-id da quantidade de 1 para 5.

E no jogo fica assim:
Spoiler
[close]

Queria destacar que fiz mudanças nas tentativas para ver se funcionaria. Por exemplo, meu Window-Base não é exatamente igual o seu, a parte de baixo é um pouco diferente, mas pelo que percebi se deve a tradução (o meu está em português). Além disso, havia uma linha (especificamente):
Spoiler
result.gsub!(/\eG/i)          { Vocab::currency_unit }
[close]
de código na imagem que vc postou que não continha no código do spoiler que era pra eu copiar, tentei com ela também, adicionando-a. Nenhuma mudança.

Vou postar aqui como é meu Window_Base sem essa edição, e com essa edição, pois talvez seja esse o problema e vc possa me apontar:
Sem a edição
Spoiler
[close]
Com a edição
Spoiler
[close]

No mais, fiz outras tentativas deixando os textos dos códigos juntos (no script do programinha/e no texto da descrição do programinha), sem respeitar os espaços, em outras eu incluía mais espaços. Nada.
Mas sou bastante agradecido à você por essa disposição, será ótimo ter esse script+mode 7 juntos de toda forma.

Grande abraço à vocês!

Não deu certo porquê você colocou no lugar errado, aparentemente a linha 236 da Window_Base na sua versão do VXAce é diferente dela por aqui. A correspondente da linha 236 aqui é a linha 244 no seu.
Aproveitei pra refatorar o código, agora ele deve funcionar um pouco melhor do que antes:
    result.gsub!(/\eQS\[([[,\s*]\d+]+)\]/i) do
      match = $~[1].scan(/\d+/)
      if $game_system.pex_qs && $game_system.pex_qs[:completed][match[0].to_i - 1]
        "#{match[2]}/#{match[2]}"
      else
        i = [$game_party.item_number($data_items[match[1].to_i]), match[2].to_i].min.to_s
        i + "/" + match[2]
      end
    end

O ideal é que ele fique assim no editor:



Aliás, queria reforçar mais um pouco o poder das quests que usam condição do tipo script. Usando essa condição você pode criar múltiplas exigências para que a quest seja completada, usando os operadores lógicos and e or. Exemplos:
$game_party.item_number($data_items[1] >= 2) and $game_party.item_number($data_items[3] >= 5)

A quest só será satisfeita após o jogador possuir 2 ou mais itens de ID 1 e 5 ou mais itens de ID 3
$game_party.item_number($data_items[5] >= 7) or $game_party.item_number($data_items[2] >= 3)

A quest só será satisfeita após o jogador possuir 7 ou mais itens de ID 5 ou 3 ou mais itens de ID 2
$game_party.item_number($data_items[5] >= 7) and $game_party.item_number($data_items[4] >= 3) or $game_party.item_number($data_items[2] >= 3)

A quest só será satisfeita após o jogador possuir 7 ou mais itens de ID 5 e 3 ou mais itens de ID 4 ou simplesmente 3 ou mais itens de ID 2
$game_party.item_number($data_items[5] >= 7) and ($game_party.item_number($data_items[4] >= 3) or $game_party.item_number($data_items[2] >= 3))

A quest só será satisfeita após o jogador possuir 7 ou mais itens de ID 5 e 3 ou mais itens de ID 4 ou 3 ou mais itens de ID 2
Enfim, as formas de se usar isso são ilimitadas. :XD:


Espero que tudo isso tenha sido útil, Darkrafa. Qualquer outra dúvida, é só falar.
Grande abraço. o/
Oxe

19/03/2020 às 22:44 #19 Última edição: 19/03/2020 às 22:49 por Darkrafa
Olá, Jorge, boa noite.

Novamente, obrigado pela disposição.

Sinto dizer mas ainda assim não funcionou, mesmo colocando o código na linha 244. O cenário foi o mesmo:
Spoiler
[close]
Spoiler
[close]

Como a função de script call é um pouco complexa, sempre fiz questão de copiar digito por digito igual ao seu, e desta vez notei que seus códigos para explorar ainda mais o uso do sistema de missão terminaram com ")", o que fez na verdade com que todas as minhas tentativas dessem erro. Quando eu aloquei esse último parênteses antes dos símbolos de ">=" (como no exemplo de ontem), eles funcionaram (mas o objetivo de fazer aparecer a contagem continuava o mesmo, sem novidades como você pode ver na imagem que postei acima). Além disso, notei também que em alguns campos há mais espaços do que no código que você me passou ontem.
Como acho que pode ter sido algum deslize seu (a gente faz automático e as vezes nem repara mesmo), me indaguei se, talvez, esses espaços, ou mesmo a alocação dos parênteses, não poderiam ser a razão de nenhuma dessas tentativas estarem dando certo, de repente em algum ponto não tem que colocar espaço, e estamos colocando, e vice-versa. É, como não entendo disso, não sei até que ponto esses espaços fazem diferença também.

Então é isso.
Eu lamento o trabalhão aí, cara, mas como sempre sou grato a ti por essa disposição e pelas pequenas lições.

Grande abraço!

Obs: (mano, não tenha ódio de mim, por favor kkk)

Calma lá, que eu vou resolver seu problema sim! uhaehaue
Mano, é MUITO estranho aqui estar funcionando e aí não. Você tá usando algum script que modifique as mensagens?
De todo modo, baixa esse arquivo aqui e testa, é a demo do sistema só que modificada pra atender aos seus pedidos. (que eu tô usando pra testes)
https://drive.google.com/open?id=1RPSchENq1b2XAYmMZcu4TTOpN-9bjCv5
Espero que dê certo aí. :feelsbatman:
Oxe

Grato pelo retorno, Jorge.

Testei aqui a demo, dei uma olhada nos eventos e no Window-Base. Copiei-o, além de resolver criar o evento e a quest com as mesmas informações da demo e mesmo assim não funcionou.

Sobre scripts que alterem as mensagens, penso que os únicos que podem se qualificar nisso seriam:
-Khas Message System;
-Yanfly's Ace Save Engine - Confirmation Add-on;
-Popup Window de V.M of D.T;

Nenhum dos demais me parece fazer sentido poderem estar alterando as mensagens.

Citação de: Syureri online 11/07/2017 às 16:56

Prism Ex: Quest System
Autor: Alisson
Data: 11/07/2017
Versão: 1.0


O sistema de quests do Prism Ex foi feito para ser simples, porém bem customizável. Ele vem junto com um editor para facilitar o gerenciamento de quests e garantir que o usuário insira as informações corretas.

Durante a edição de descrições e detalhes no editor, você pode usar os comandos normais da janela de mensagens, como \i[id] para mostrar um ícone, \v[id] para variáveis e \c[id] para cores. A diferença é que ao invés de \, você usa \\.
A demo já vem com um exemplo do uso deles.
Isso significa que, se você estiver usando outro script que proveja mais códigos do tipo, você provavelmente vai poder utilizá-los aqui.

O editor lhe permite escolher uma imagem de windowskin para qualquer janela, e uma imagem de fundo. Embora você possa escolher imagens que estejam fora da pasta do projeto, é recomendável escolher imagens que estejam dentro da pasta do projeto, visto que o editor não vai tentar copiar as imagens para a pasta do seu jogo.

O editor também lhe permite alterar a posição, tamanho e opacidade de qualquer janela na scene, então não se prenda ao layout padrão e libere sua criatividade para deixar o sistema combinando com seu projeto.

Eu recomendo que você deixe o editor na mesma pasta em que está localizado o Game.exe do seu jogo, visto que ele irá fazer todo o trabalho para você contanto que o deixe lá.

Obviamente, não é necessário manter o editor quando o seu jogo estiver pronto. No entanto os arquivos que ele cria na pasta Data são importantes.

Spoiler
[close]



Você pode obter o Prism Ex: Quest System na Prism Engine



Antes de reportar bugs ou postar dúvidas, tenha certeza de possuir um conhecimento básico sobre o RPG Maker em geral.

C-Como...Onde você- Meu Deus isso é incrível! Chega a ser rídiculo como isso é customizável! Cara até uns dias eu ficava pensando em migrar pro MV só por causa de quests aí vem você com isso?! Obrigado <3!
Meus parabéns, ótimo script! Abraços, MrChokito :3

Eae novato na área.

Eu uso o Galv's Menu Engine no meu game de VXAce e eu queria saber como eu chamo a Scene do menu de quests dentro desse menu.
Eu tentei algumas coisas, dentre elas:

# ["Menu Text", :command_type, :Scene, switch1, switch2, help txt, icon]
  ["Items",     :cmd, :Scene_Item,   0, 0, "View or use items from your inventory.",270],
  ["Skills",    :sel, :Scene_Skill,  0, 0, "View or use character skills.",112],
  ["Equip",     :sel, :Scene_Equip,  0, 0, "Equip your characters with weapons and armor.",170],
  ["Status",    :sel, :Scene_Status, 0, 0, "View status of your characters.",117],
  ["Party",     :cmd, :Scene_Party,  0, 0, "Manage your party.",121],
  ["Quests",    :cmd, :QuestSystemScene,  0, 0, "View your quests.",270],
  ["Bestiary",  :cmd, :Monster_Book,   0, 0, "See the enemies you've beaten.",230],
  ["Save",      :cmd, :Scene_Save,   0, 0, "Record your game progress.",224],
  ["Game End",  :cmd, :Scene_End,    0, 0, "End or restart the game.",6],


Pode me dar um assist? :)

Faça desse modo:
["Quests", :cmd, PrismEx::QuestSystemScene, 0, 0, "View your quests.", 270],

Lembrando que os códigos do sistema de quests devem ficar acima do código do menu.


Citação de: Gabriel N. online 22/03/2020 às 15:55
Faça desse modo:
["Quests", :cmd, PrismEx::QuestSystemScene, 0, 0, "View your quests.", 270],

Lembrando que os códigos do sistema de quests devem ficar acima do código do menu.

Valeu cara! Você arrebenta. :)