Hola hola, vengo por aquí para despejar algunas inquietudes; en primera instancia, como ya te lo dijeron los compañeros, incluír tus liberías en el archivo principal, es la manera correcta, y luego distribuyes el ejecutable, y claro que tus scripts no podrán ser vistos, a menos que utilicen un desensamblador, dicho en español para que se entienda,
vastante poderoso. En cuanto a que solo habla sapi al compartirlo, eso pasa porque no estás entregando el ejecutable del programa con la dll de NVDA, por ejemplo que es la que va permitir la salida hacia este lector, dicha libería es nvdaControllerClient32.dll.
En cuanto al tema del pack de sonidos, estos se empaquetan en un archivo .dat, puedes usar un pack creater que hay por ahí, que a su vez te permite ponerle una llave de encriptación para que si alguien luego extrae los sonidos no pueda usarlos.
Para terminar, si que es posible incluír el pack, so sonidos y luego cambiar el lugar donde el motor buscará los sonidos, mediante la siguiente intrucción:
set_sound_storaje();
Aquí el apartado de la documentación de bgt, en inglés y también traducido.
set_sound_storage
This function sets the location of the pack file in which the engine will look for sound files loaded through the sound object.
bool set_sound_storage(string filename)
Parameters:
filename
The pack file to use. This can be either an absolute path, a relative path, the file name on its own, or a * (see remarks).
Return value:
true on success, false on failure.
Remarks:
Note that both and / can be used to specify paths.
If an empty string is passed to this function, the engine will not look for sounds in a pack file but will attempt to locate requested files on disk instead. This is the default behavior.
If you pass * to this function, the engine will attempt to look for sounds in a pack file that has been included into the program itself. For more information on how this is done, see the tutorial on packaging files with your executable.
It is perfectly legal to call this function more than once in your game. Sounds that are already loaded will not be affected, any changes are only seen the next time you attempt to load a sound.
set_sound_storage
Esta función establece la ubicación del archivo de paquete en el que el motor buscará los archivos de sonido cargados a través del objeto de sonido.
bool set_sound_storage(string filename);
Parámetros:
filename
El paquete de archivos a utilizar. Puede ser una ruta absoluta, una ruta relativa, el nombre del archivo por sí solo o un * (ver comentarios).
Valor de retorno:
true en el éxito, false en el fracaso.
Observaciones:
Tenga en cuenta que tanto como / pueden usarse para especificar rutas.
Si se pasa una cadena vacía a esta función, el motor no buscará sonidos en un paquete de archivos, sino que intentará ubicar los archivos solicitados en el disco. Este es el comportamiento predeterminado.
Si pasa * a esta función, el motor intentará buscar sonidos en un paquete que se haya incluido en el programa. Para obtener más información sobre cómo se hace esto, consulte el tutorial sobre cómo empaquetar archivos con su ejecutable.
Es perfectamente legal llamar a esta función más de una vez en tu juego. Los sonidos que ya están cargados no se verán afectados, los cambios solo se verán la próxima vez que intente cargar un sonido.
Visto ésto, significa que podemos incluír el paquete con los sonidos, y luego en donde lo necesitemos, llamar a las dos funciones siguientes:
include "sounds.dat" // incluímos nuestro pack de sonidos
void main() // función principal
{ // abre main
set_sound_storage("*") //
// luego indicamos al motor bgt nuestra llave para desencriptar internamente los sonidos:
set_sound_decryption_key("clave_para_desencriptar_nuestros_sonidos", false); // aquí la hemos indicado al programa
} // cierra main