DeAmx ne décompile pas les includes de SAMP pour la bonne et simple raison qu'ils ne contiennent pas de code.
Si on met tout le code dans un include, DeAmx le décompilera de la même façon que si il était dans le gamemode.
Ta méthode ne fonctionne donc pas cristab.
Il est très facile de s'en convaincre, il suffit de créer un gamemode qui en inclut un autre :
Voici test.pwn
#include <a_samp>
main ()
{
new Float:Drunk3;
Drunk3 = 61513/6060;
printf ("Drunk3 = %.2f", Drunk3);
Drunk3 = 61513/6060.0;
printf ("Drunk3 = %.2f", Drunk3);
}
public OnGameModeInit ()
{
return 1;
}
Voici toto.pwn (1 seule ligne puisque tous les includes sont déjà dans test.pwn) :
#include "test.pwn"
et voici le résultat de DeAmx sur toto.amx :
#include <a_samp>
#include <core>
#include <float>
function8(arg0, Float:arg1)
{
return arg0 / arg1;
}
main()
{
new var0 = 0;
var0 = 1092616192;
printf("Drunk3 = %.2f", var0);
var0 = function8(61513, 6060.0);
printf("Drunk3 = %.2f", var0);
return 0;
}
public OnGameModeInit()
{
return 1;
}On retrouve presque le fichier test.pwn à part quelques calculs qui ont certainement été faits au moment de la compilation (var0=1092616192).
La fonction function8 est la fonction qui permet la division d'un entier par un Float mais je ne vois pas pourquoi elle est là. Certainement un autre bug de DeAmx.
La seule façon de se prémunir d'une décompilation par DeAmx est d'utiliser la faille de ce décompilateur (à savoir, mettre un tableau multidimensionnel quelque part dans le mode).
Personnellement, sur Lalu's Stunt, j'utilise ce bout de code dans la fonction main :
/* Ces deux lignes évitent l'utilisation de DeAmx (elles font planter le décompilateur) */
new a[][9] = {"G", "G", "F"};
#pragma unused a
NB : Attention, certains tableaux multidimensionnels ne font pas planter le décompilateur, je vous conseille de faire l'essai si vous voulez mettre votre propre tableau. D'après ce que j'ai pu voir, il faut que le tableau fasse plus qu'une certaine taille pour que ça marche mais je n'ai pas de valeur précise à donner.
NB2 : Le #pragma qui suit sert juste à éviter le warning du compilateur ("a is assigned to a value ...")
NB3 : GGF veut dire "Go Get F..." = "va te faire f...."
Mais attention, le jour où un petit malin parviendra à corriger le bug du script Lua qui décompile le .amx, cette façon de faire de vaudra plus rien.
Par contre, je vous conseille vivement de prendre un vrai gamemode (de plusieurs milliers de lignes), de le compiler, de décompiler le fichier amx et de jeter un oeil dans le code produit par DeAmx. Je souhaite beaucoup de patience à celui qui réussi à faire quelque chose de ce résultat de décompilation, surtout si il n'a aucune idée de ce que contient le gamemode d'origine.
Tout ça pour dire que si quelqu'un vous pique votre .amx, il faut vraiment qu'il vous en veuille beaucoup pour perdre autant de temps à vouloir remettre d'aplomb un code décompilé.
Mais on est jamais trop prudent.
++
Syg