16/03/2023 17:13
(Esta mensagem foi modificada pela última vez a: 16/03/2023 17:17 por Dr Editor.)
Sobre:
Com a vinda do OpenMP e a título de minha própria curiosidade e experiência, acabei realizando a 'conversão' de um gamemode inteiro SA:MP para OpenMP e é sobre isso que irei fazer meu relato.
Eu possuo um gamemode que venho desenvolvendo há um bom tempo e que no momento está pegando poeira. Estava aguardando o encerramento da versão beta para fazer a conversão do gamemode para OpenMP.
As mudanças:
Sim, houve inúmeras mudanças.
Se você pensa em baixar o servidor do OpenMP e jogar em cima do seu servidor SA:MP para dar aquele upgrade, esqueça! Terá bastante trabalho e será realmente cansativo.
Se alguém disser o contrário então não estamos falando de um grande script.
Foram correções, parâmetros renomeados, funções adicionadas, funções que serão removidas (provavelmente no próximo release), novas versões de plugins...
Foi adicionado também novas tags para tipificar enumeradores e parâmetro e isso, se mantido, inviabilizará a conversão de um script muito grande caso mantenha os 'moldes' do OpenMP.
Sinceramente, essas tags vieram como um coice pra quem não estava acostumado a trabalhar com elas visto que as únicas tags do SA:MP eram para tipos de dados.
(Não estou mistificando o uso delas, apenas afirmando que o SA:MP não trabalhava com elas da mesma forma que o OpenMP)
Começando a conversão:
Etapa 1: Instalação
O início da conversão é como vocês já imaginam. Baixei o servidor, joguei a livraria na pasta do compilador, ajustei o nome da include no script e realizei a primeira compilação.
Confesso que nunca tinha visto tantos erros e avisos na tela. Os erros se limitam aos 26 por compilação, porém os avisos... Bom, foram em torno de 900!!
Alí já bateu o desânimo, porém comecei estudar as includes e entender o motivo dos avisos para ter certeza se iria continuar ou parar.
Etapa 2: Estudando os problemas
Ao comprender melhor o motivo dessas dezenas de erros percebi que a maior parte deles era em função de callbacks com hook, pois era o erro clássico de que a função era diferente da nativa por conta das novas e incríveis tags adicionadas e outras por conta de parâmetros renomeados.
Os avisos eram apenas em função das tags mesmo.
Etapa 3: Estudando a viabilidade
Nas primeiras impressões não senti que ajustar as novas tags no servidor seria algo impossível, mas não achei que seria o melhor caminho.
Estamos falando de mais de 1000 ajustes MANUAIS que não seria possível através de uma ferramenta externa sem o risco de comprometer ainda mais o script.
Etapa 4: Em busca da solução
Queria converter sem perder tanto tempo, mas ao mesmo tempo sem comprometer todo o gamemode.
Então resolvi não aderir aos moldes do OpenMP e manter a estrutura mais próxima do SA:MP, ou seja, eliminar as tag!
No braço de fato eu demoraria um tempo, mas bem menos que realizar as modificações no gamemode visto que o projeto foi feito em módulos.
Etapa 5: Mãos a obra
Pensando mais a frente e me colocando num cenário em que venho a perder as includes modificadas manualmente ou até mesmo para futuros updates onde é adicionado novas funções, desenvolvi um programa para remover as tags personalizadas do OpenMP e foi um sucesso.
Etapa 5: Ajustes finais
Como nem tudo são flores, apesar do programa fazer todo o trabalho pesado ainda resta fazer algumas alterações no código.
Algumas funções que originalmente não possuíam um valor booleano, mas que logicamente deveria ter e isso foi implementado no OpenMP eu atualizei.
Conclusão:
Foram algumas horas perdidas ao longo do dia, mas no fim valeu a pena e o servidor iniciou sem qualquer problema.
Não é um processo rápido, mas se você tem um projeto sólido e que vale a pena esse tempo, então espero que meu relato sobre como foi minha experiência realizando esse procedimento possa te dar um norte.
Reforço que tudo o que descrevi foi a minha forma de como lidei com a atualização. Você pode optar por qualquer outra que achar viável.
Dica e reflexão:
Não tem muita esperiência com programação ou mesmo com Pawn? Não perca seu tempo!
Não sabe o que são tags, como implementar e quais são relevantes ou não? Não perca seu tempo!
Não compreende muito bem os erros e avisos do compilador? Não perca seu tempo!
Caso ainda assim queira se arriscar, faça um backup e realize o procedimento.
Não é burrice tentar algo novo e as perguntas acima não devem ser um fator desmotivador. Apenas se certifique de investir seu tempo em algo que valha a pena.
Sua opinião:
Já tentou ou realizou com sucesso a conversão de algum script para OpenMP? Conte como foi a experiência.
Com a vinda do OpenMP e a título de minha própria curiosidade e experiência, acabei realizando a 'conversão' de um gamemode inteiro SA:MP para OpenMP e é sobre isso que irei fazer meu relato.
Eu possuo um gamemode que venho desenvolvendo há um bom tempo e que no momento está pegando poeira. Estava aguardando o encerramento da versão beta para fazer a conversão do gamemode para OpenMP.
As mudanças:
Sim, houve inúmeras mudanças.
Se você pensa em baixar o servidor do OpenMP e jogar em cima do seu servidor SA:MP para dar aquele upgrade, esqueça! Terá bastante trabalho e será realmente cansativo.
Se alguém disser o contrário então não estamos falando de um grande script.
Foram correções, parâmetros renomeados, funções adicionadas, funções que serão removidas (provavelmente no próximo release), novas versões de plugins...
Foi adicionado também novas tags para tipificar enumeradores e parâmetro e isso, se mantido, inviabilizará a conversão de um script muito grande caso mantenha os 'moldes' do OpenMP.
Sinceramente, essas tags vieram como um coice pra quem não estava acostumado a trabalhar com elas visto que as únicas tags do SA:MP eram para tipos de dados.
(Não estou mistificando o uso delas, apenas afirmando que o SA:MP não trabalhava com elas da mesma forma que o OpenMP)
Começando a conversão:
Etapa 1: Instalação
O início da conversão é como vocês já imaginam. Baixei o servidor, joguei a livraria na pasta do compilador, ajustei o nome da include no script e realizei a primeira compilação.
Confesso que nunca tinha visto tantos erros e avisos na tela. Os erros se limitam aos 26 por compilação, porém os avisos... Bom, foram em torno de 900!!
Alí já bateu o desânimo, porém comecei estudar as includes e entender o motivo dos avisos para ter certeza se iria continuar ou parar.
Etapa 2: Estudando os problemas
Ao comprender melhor o motivo dessas dezenas de erros percebi que a maior parte deles era em função de callbacks com hook, pois era o erro clássico de que a função era diferente da nativa por conta das novas e incríveis tags adicionadas e outras por conta de parâmetros renomeados.
Os avisos eram apenas em função das tags mesmo.
Etapa 3: Estudando a viabilidade
Nas primeiras impressões não senti que ajustar as novas tags no servidor seria algo impossível, mas não achei que seria o melhor caminho.
Estamos falando de mais de 1000 ajustes MANUAIS que não seria possível através de uma ferramenta externa sem o risco de comprometer ainda mais o script.
Etapa 4: Em busca da solução
Queria converter sem perder tanto tempo, mas ao mesmo tempo sem comprometer todo o gamemode.
Então resolvi não aderir aos moldes do OpenMP e manter a estrutura mais próxima do SA:MP, ou seja, eliminar as tag!
No braço de fato eu demoraria um tempo, mas bem menos que realizar as modificações no gamemode visto que o projeto foi feito em módulos.
Etapa 5: Mãos a obra
Pensando mais a frente e me colocando num cenário em que venho a perder as includes modificadas manualmente ou até mesmo para futuros updates onde é adicionado novas funções, desenvolvi um programa para remover as tags personalizadas do OpenMP e foi um sucesso.
Etapa 5: Ajustes finais
Como nem tudo são flores, apesar do programa fazer todo o trabalho pesado ainda resta fazer algumas alterações no código.
Algumas funções que originalmente não possuíam um valor booleano, mas que logicamente deveria ter e isso foi implementado no OpenMP eu atualizei.
Conclusão:
Foram algumas horas perdidas ao longo do dia, mas no fim valeu a pena e o servidor iniciou sem qualquer problema.
Não é um processo rápido, mas se você tem um projeto sólido e que vale a pena esse tempo, então espero que meu relato sobre como foi minha experiência realizando esse procedimento possa te dar um norte.
Reforço que tudo o que descrevi foi a minha forma de como lidei com a atualização. Você pode optar por qualquer outra que achar viável.
Dica e reflexão:
Não tem muita esperiência com programação ou mesmo com Pawn? Não perca seu tempo!
Não sabe o que são tags, como implementar e quais são relevantes ou não? Não perca seu tempo!
Não compreende muito bem os erros e avisos do compilador? Não perca seu tempo!
Caso ainda assim queira se arriscar, faça um backup e realize o procedimento.
Não é burrice tentar algo novo e as perguntas acima não devem ser um fator desmotivador. Apenas se certifique de investir seu tempo em algo que valha a pena.
Sua opinião:
Já tentou ou realizou com sucesso a conversão de algum script para OpenMP? Conte como foi a experiência.
SA:MP Dev Tools
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140
Faça mais, ganhe mais e poupe tempo!
Viper Anti-Cheat
Torne seu servidor mais seguro!
________________________________________
Soluções personalizadas para SA:MP
Discord: .eduardoac | Eduardo AC#3140