• 04 Juin 2026, 16:08:23


Auteur Sujet: [Resolu] Alleger son gamemode  (Lu 2858 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne will

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
[Resolu] Alleger son gamemode
« le: 08 Décembre 2011, 15:57:09 »
Bonjour,

Est-il possible d'alleger son gamemode en mettant ses vehicules dans un filterscript.

Merci
« Modifié: 08 Décembre 2011, 17:15:59 par will »

Hors ligne mehdi-jumper

  • *
  • Bandit
  • Messages: 311
    • Voir le profil
Re : Alleger son gamemode
« Réponse #1 le: 08 Décembre 2011, 16:03:01 »
Oui, si tu fais cela, ton gamemode sera moins rempli donc l'espace qu'il prend diminuera et donc il sera allégé.

Je vois pas pourquoi tu poses une question telle que celle là...

C'est comme si je demandais:"Si j'eteind mon ecran je verrais encore une image?"...

Hors ligne will

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : Alleger son gamemode
« Réponse #2 le: 08 Décembre 2011, 16:45:07 »
Ben j'ai beaucoup de vehicule et ca prend trop de place donc si je met mes vehicule et spawn de joueur dans un filterscript cest plus lisible.

*Coté esthetique ^^

Hors ligne mehdi-jumper

  • *
  • Bandit
  • Messages: 311
    • Voir le profil
Re : Alleger son gamemode
« Réponse #3 le: 08 Décembre 2011, 16:49:59 »
Tu fais ce que tu veux.

Hors ligne angelrider

  • Scripteur
  • *
  • Bandit
  • Messages: 299
    • Voir le profil
Re : Alleger son gamemode
« Réponse #4 le: 08 Décembre 2011, 17:11:13 »
Oui mais "alléger" un gamemode ne veut pas dire forcément qu'il sera plus lisible ou qu'il sera plus rapide,
J'ai par exemple un game mode de 81 000 lignes qui est léger je pense :) et bien lisible pour moi..
Je pense que tout a sa place dans ton Gamemode que ce soit le spawn de tes joueurs ou le spawn de tes véhicules si tu veux vraiment les sortir de ton gamemode par contre je te conseille plus de les mettre dans un scriptfile et non pas dans un Filterscript car te retrouver a la fin avec 10 filterscript la sa commense a faire lourd ^^.
Amicalement
Nouveau Site de Mods San Andreas:
http://lcdacreation.fr

Hors ligne will

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : Alleger son gamemode
« Réponse #5 le: 08 Décembre 2011, 17:15:36 »
Merci, effectivement cela ferait beaucoup.

J'ai surtout besoin d'aide dans un autre topic parlant du radar ( minimap ) les joueurs n'y apparaissent pas, c'est important donc si tu peux m'aider ce serait bien. Merci

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Resolu] Alleger son gamemode
« Réponse #6 le: 09 Décembre 2011, 10:48:17 »
L'inconvénient du FS c'est qu'il faut le rajouter dans le fichier de configuration du serveur et qu'il ne faut pas oublier de mettre le .AMX correspondant dans le répertoire filterscript. De plus il fait l'objet d'un compilation séparée et ne permet pas le partage de variables directement avec le GM.

La solution la plus simple pour réduire la taille du script d'un GM est de passer par des includes.

Exemple :
Voici un gamemode (très petit) :
#include <a_samp>

main ()
{
}

public OnGameModeInit ()
{
/* Ajout de tous les persos */
for (new i=0, j=0 ; i<350 ; i++)
{
AddPlayerClass (i, 1930.8340, -1394.4470, 13.7947, 151.9744, 0, 0, 0, 0, 0, 0);
}

/* Ajout des véhicules */
AddStaticVehicle(409,1669.6370,1579.5623,10.6049, 0.0,random (127), random (127));
AddStaticVehicle(409,1669.5219,1573.8367,10.5817,86.3478,random (127), random (127));
AddStaticVehicle(400,1668.8595,1567.9686,10.8705,96.2175,random (127), random (127));
AddStaticVehicle(400,1669.5197,1563.3639,10.8782,98.5761,random (127), random (127));
AddStaticVehicle(402,1669.8319,1558.1472,10.6282,94.3042,random (127), random (127));
}

Modification :
Je crée un fichier que je nomme VEH.INC dans le répertoire gamemode (donc au même endroit que le gamemode car c'est plus facile à gérer que de le mettre dans le répertoire include de PAWNO).
Ce fichier contient les lignes suivantes :
AddStaticVehicle(409,1669.6370,1579.5623,10.6049, 0.0,random (127), random (127));
AddStaticVehicle(409,1669.5219,1573.8367,10.5817,86.3478,random (127), random (127));
AddStaticVehicle(400,1668.8595,1567.9686,10.8705,96.2175,random (127), random (127));
AddStaticVehicle(400,1669.5197,1563.3639,10.8782,98.5761,random (127), random (127));
AddStaticVehicle(402,1669.8319,1558.1472,10.6282,94.3042,random (127), random (127));
Soit tous les véhicules de mon GM.

Ensuite, je modifie mon GM comme ceci :
#include <a_samp>

main ()
{
}

public OnGameModeInit ()
{
/* Ajout de tous les persos valides */
for (new i=0, j=0 ; i<350 ; i++)
{
if (i != BadSkins[j])
{
AddPlayerClass (i, 1930.8340, -1394.4470, 13.7947, 151.9744, 0, 0, 0, 0, 0, 0);
}
else
{
    j++;
}
}

/* Ajout des véhicules */
#include ".\\veh.inc"
}

Explication :
La directive de compilation #include permet de rajouter des parties de script n'importe où dans le script de départ (et donc pas seulement au début du GM). Les parties de script sont incluses telles quelles, sans aucun ajout (seul le contenu du fichier est inclus) pour produire le script final qui sera compilé.
De plus, cette directive permet d'aller chercher les fichiers à inclure à n'importe quel endroit sur la machine où est compilé le script. Mais pour cela, il faut utiliser des guillemets (" ") et donner le chemin d'accès (absolu ou relatif) au fichier.
NB : L'usage de < et > indique que le fichier à inclure se trouve dans le(s) répertoire(s) par défaut des includes (pawno\include)
Dans mon cas, je donne le chemin relatif au fichier. Ce chemin relatif est "." (répertoire courant dans lequel le compilateur travaille = répertoire gamemode) suivi du nom du fichier que je veux inclure (je double l'antislash car je suis dans un chaîne de caractères).

Dans cet exemple, le gain est minime mais cette solution fonctionne quelque soit le nombre de lignes que l'on déplace du GM vers le fichier à inclure.
Il est aussi possible d'inclure autant de fichier que l'on veut et ces fichiers peuvent contenir ce que l'on veut (des bouts de code, comme dans mon exemple, des fonctions, des callbacks, des déclaration de variables, ...).

Ce qu'il faut retenir c'est que le compilateur ne compile par un GM, il compile un script reconstitué à partir du GM et des différents "morceaux" que l'on inclut dedans.
Lorsqu'on a compris ça, on peut faire un GM seulement à partir d'include (solution extrème) :
#include <a_samp>

#include ".\\DeclVars.inc"
#include ".\\main.inc"
#include ".\\OnGameModeInit.inc"
#include ".\\OnPlayerSpawn.inc"

Dernière remarque :
Le directive #include est récursive. Il est donc possible de mettre de #include dans des fichiers include (c'est le cas dans "a_samp.inc" par exemple).

++
Syg
Courtesy of GtaManiac

Hors ligne angelrider

  • Scripteur
  • *
  • Bandit
  • Messages: 299
    • Voir le profil
Re : [Resolu] Alleger son gamemode
« Réponse #7 le: 09 Décembre 2011, 13:36:52 »
Oui donc au final très alléger ^^,
Très bien rangé aussi,
mais plus complexe peut être non?
Quant tu bosse sur un gamemode comme ça tu dois avoir le notepad ouvert avec 15 .inc d'ouvert plus ton gamemode..
Puis de plus si il y a une erreur dans un .inc pawno le détecte t'il?
Je vais te questionner Syg je trouve pas mal du tout un Gamemode sous forme.
Nouveau Site de Mods San Andreas:
http://lcdacreation.fr

Hors ligne will

  • *
  • Criminel
  • Messages: 42
    • Voir le profil
Re : [Resolu] Alleger son gamemode
« Réponse #8 le: 10 Décembre 2011, 14:51:02 »
Salut,

Merci pour ton tuto de fou :P C'est vraiment top mais ca doit etre chiant a modifier non ?

Lorsque je joue j'ai des petit ralentissement :/

Je vous poste mon gamemode (Ne m'accuser pas de plagia, je n'ai pas dis que j'avais tout créé moi même. J'ai repris des bout de code de partout et je les ai mit dans mon GM. Il n'y à aucun crédit dedans etant donné que c'est pour une utilisation personelle ).

http://solidfiles.com/d/771f1731d9/

Hors ligne Syg

  • Expert programmeur C/C++/PAWN
  • *
  • The GTAOnline Jesus
  • Messages: 3908
    • Voir le profil
Re : [Resolu] Alleger son gamemode
« Réponse #9 le: 12 Décembre 2011, 14:57:44 »
Pour répondre à anglerider : Oui, le compilateur te donne le nom du fichier et la ligne à laquelle il trouve une erreur.

Sinon, le deuxième exemple que je donne est un exemple extrême et n'est pas vraiment un exemple à suivre, c'était juste pour montrer ce qu'on peut faire.

Par contre, concernant la déplacement de la création des véhicules ou la créations des objets dans un .INC, c'est quand même une bonne idée car ça représente un grand nombre de lignes et ce sont des parties de code auxquelles on ne touche pas souvent.

++
Syg
Courtesy of GtaManiac

Hors ligne S!m

  • *
  • Messages: 2341
    • Voir le profil
Re : Re : [Resolu] Alleger son gamemode
« Réponse #10 le: 12 Décembre 2011, 17:25:34 »
Salut,

Pour répondre à anglerider : Oui, le compilateur te donne le nom du fichier et la ligne à laquelle il trouve une erreur.

Sinon, le deuxième exemple que je donne est un exemple extrême et n'est pas vraiment un exemple à suivre, c'était juste pour montrer ce qu'on peut faire.

Par contre, concernant la déplacement de la création des véhicules ou la créations des objets dans un .INC, c'est quand même une bonne idée car ça représente un grand nombre de lignes et ce sont des parties de code auxquelles on ne touche pas souvent.

++
Syg

je dois dire que j'ai eu beaucoup de plaisir à les déporter dans un dossier scriptfile sur mon serveur.
C'est plus difficile à faire, mais ça m'a permis de regrouper les objets en maps (chaque fichier est une map) et d'en faire un chargement dynamique...c'est à dire qu'à tout instant du jeu je pouvais enlever ou ajouter une map selon mon bon vouloir.
À noter que ceci requiert un peu plus de code et une certaine base en script.
Au pire je pourrais le sortir sous forme de FS...

++Sim++