Página 1 de 1

[ASI] Recarregar arquivos .asi

Enviado: 03 Ago 2019, 19:48
por plasma
Comecei a um tempo a mexer um pouco com .asi e algo que eu fiquei com duvida e que tornaria o desenvolvimento muito mais rápido é: Há alguma maneira de recarregar os arquivos ingame ou algo parecido?
Pelo modloader só da para adicionar novos arquivos .asi, mas substituir não.

Re: [ASI] Recarregar arquivos .asi

Enviado: 03 Ago 2019, 19:54
por Israel
Causaria muitos problemas.

Re: [ASI] Recarregar arquivos .asi

Enviado: 03 Ago 2019, 20:01
por plasma
Israel escreveu:
03 Ago 2019, 19:54
Causaria muitos problemas.
Por que? (desculpe pela ignorância, eu não conheço muito de como .asi funciona kk)

Re: [ASI] Recarregar arquivos .asi

Enviado: 03 Ago 2019, 20:39
por DanielSantos
plasma escreveu:
03 Ago 2019, 20:01
Israel escreveu:
03 Ago 2019, 19:54
Causaria muitos problemas.
Por que? (desculpe pela ignorância, eu não conheço muito de como .asi funciona kk) 

Recarregar uma .dll com um programa em execução

Re: [ASI] Recarregar arquivos .asi

Enviado: 03 Ago 2019, 21:02
por plasma
Daniel69 escreveu:
03 Ago 2019, 20:39
plasma escreveu:
03 Ago 2019, 20:01
Israel escreveu:
03 Ago 2019, 19:54
Causaria muitos problemas.
Por que? (desculpe pela ignorância, eu não conheço muito de como .asi funciona kk) 

Recarregar uma .dll com um programa em execução 
Ok, agora deu pra entender kkk, eu achei que daria porque aparentemente no GTA V dá, mas deve ser diferente nesse caso.

Re: [ASI] Recarregar arquivos .asi

Enviado: 03 Ago 2019, 21:55
por Um_Geek
Se bem que existe estes comandos

Código: Selecionar tudo

loadDynamicLibrary
freeDynamicLibrary

Ai tem os poréns

Re: [ASI] Recarregar arquivos .asi

Enviado: 04 Ago 2019, 00:42
por plasma
Um_Geek escreveu:
03 Ago 2019, 21:55
Se bem que existe estes comandos

Código: Selecionar tudo

loadDynamicLibrary
freeDynamicLibrary

Ai tem os poréns 
Interessante, quais seriam os poréns?

Re: [ASI] Recarregar arquivos .asi

Enviado: 04 Ago 2019, 01:43
por Israel
A grande maioria dos mods ASI faz algum tipo de redirecionamento no código do jogo (jmp, call).
Vou fazer uma ilustração bem bosta aqui:

Imagem
Obviamente é bem mais complexo que isso, mas vamos apenas supor que esse acima é o fluxo do código do jogo, seguindo normalmente sem nenhuma intervenção externa.

Imagem
Agora já temos um mod ASI interferindo no fluxo. No caso acima, está havendo um salto de determinada parte do código do jogo para uma determinada parte do código do ASI, e logo depois do ASI fazer o que bem entender, um outro salto é feito partindo do código do mod, retornando para o código do game para que siga normalmente.

Agora... o que significaria recarregar o mod? Significa que ele seria completamente removido da memória e carregado novamente...
O que aconteceria no momento em que ele fosse removido da memória?

Imagem
Como mostrado acima, quando o fluxo do game chegasse na parte do código onde foi determinado o salto, iria saltar para uma parte "vazia" da memória, causando crash.

Esse é só um dos problemas.

Re: [ASI] Recarregar arquivos .asi

Enviado: 04 Ago 2019, 03:30
por plasma
Israel escreveu:
04 Ago 2019, 01:43
Como mostrado acima, quando o fluxo do game chegasse na parte do código onde foi determinado o salto, iria saltar para uma parte "vazia" da memória, causando crash.

Esse é só um dos problemas.
Bem legal os diagramas, deu pra entender bem. Então o maior problema pelo que eu entendi é que o jogo chama o mod em determinado momento e se o mod não estiver mais lá causa um crash no jogo. E se talvez tivesse uma maneira de "dizer" ao jogo que o mod foi descarregado da memória e não deve ser chamado mais?

Re: [ASI] Recarregar arquivos .asi

Enviado: 04 Ago 2019, 13:06
por Israel
plasma escreveu:
04 Ago 2019, 03:30
Bem legal os diagramas, deu pra entender bem. Então o maior problema pelo que eu entendi é que o jogo chama o mod em determinado momento e se o mod não estiver mais lá causa um crash no jogo. E se talvez tivesse uma maneira de "dizer" ao jogo que o mod foi descarregado da memória e não deve ser chamado mais?
A maneira de fazer isso seria reescrevendo o código original onde foram feitos os redirecionamentos... mas como o mod reloader iria identificar todos eles em todos os mods? Seria inviável. E como eu disse: esse é apenas um dos problemas.

Re: [ASI] Recarregar arquivos .asi

Enviado: 04 Ago 2019, 14:50
por plasma
Israel escreveu:
04 Ago 2019, 13:06
plasma escreveu:
04 Ago 2019, 03:30
Bem legal os diagramas, deu pra entender bem. Então o maior problema pelo que eu entendi é que o jogo chama o mod em determinado momento e se o mod não estiver mais lá causa um crash no jogo. E se talvez tivesse uma maneira de "dizer" ao jogo que o mod foi descarregado da memória e não deve ser chamado mais?
A maneira de fazer isso seria reescrevendo o código original onde foram feitos os redirecionamentos... mas como o mod reloader iria identificar todos eles em todos os mods? Seria inviável. E como eu disse: esse é apenas um dos problemas. 
Tendi, infelizmente parece ser inviável mesmo.