• 28 Mars 2024, 13:31:54


Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Xartrick

Pages: [1]
2
Salutations !

Pour mon premier vrai écrit, je vous est composé un petit PDF sur comment créer son système de rangs !
Je vous propose d'apprendre à créer un système de rangs avec plusieurs exercices, qui à la fin, forme le système.

Voici sans attendre, le lien du PDF: http://solidfiles.com/d/fcfb6/

Cordialement,
Xartrick.

3
Scripting SA-MP [Pawn center] / [Exemple] Camera SAMP
« le: 11 Juin 2011, 21:24:33 »
Salutations à tous !

J'ai souvent remarqué que beaucoup de membres avaient des problèmes avec les fonctions liées à la caméra, c'est pour cela que j'ai pensais à programmer un petit exemple simple pour montrer le fonctionnement de ces fonctions.

Donc, dans ce code, l'utilisateur à le droit d'utiliser deux commandes:


Code: (Commandes) [Sélectionner]
/start - Permet de commencer une session
/stop - Permet d'arrêter une session

Une session met la caméra à une position précise et lorsque que le joueur bouge, la caméra suit du regard le joueur mais ne change pas de position !
Pour cela, j'ai utilisé une méthode très simple, j'ai utilisé la fonction évènementielle OnPlayerUpdate !
L'utilisation de cette fonction est un peu lourde, mais vous pouvez utiliser un timer, rien ne vous en empêche !

Donc, voici le code: Camera by Xartrick

J'espère que ce code vous aidera à mieux comprendre les fonctions liés à la caméra !
Voici un schéma que j'ai fais pour l'occasion !



1 - Vous positionnez votre caméra
2 - Vous donnez une position à votre joueur (ou non)
3 - Vous mettez le point de vue de la caméra à la position du joueur

Cordialement,
Xartrick.

4
Tutoriels et références SA:MP / La programmation optimisée
« le: 16 Mai 2011, 21:53:26 »
Salutations.

Dans ce tutoriel qui ne sera d'ailleurs JAMAIS fini, je vais, ou plutôt nous allons vous apprendre ou du moins, vous aidez à programmer dans les meilleurs conditions.
Le nous fait référence à vous, à moi, car tous le monde peux y participer, à condition d'être dans le sujet et que votre contribution soit utile !
Pour commencer, je vais faire une petite introduction pour vous expliquez, de mon point de vue, la programmation optimisée.
Une bonne partie des notions de ce tutoriel ont déjà était abordé sur le forum par Syg ou encore Sim, je vous encourage d'ailleurs d'aller consulter leurs tutoriels !

Introduction

La programmation optimisée est avant tous, une gestion correct de son code, j'entends par cela, la bonne aération de son code et la compréhension de ce dernier.
Les premiers articles seront consacrés à la programmation dans les meilleurs conditions.
Ce tutoriel sera dédié à tous le monde, car dans ce tutoriel, nous allons essayer de reprendre certaines bases pour bien se comprendre.
Je vous préviens, certaines notions seront misent de côté, car il ne faut pas non plus ne rien connaître.
Donc, le sujet de ce tutoriel, vous l'aurez compris, est la programmation optimisée.

L'indentation

L'indentation permet d'aérer son code pour le rendre plus fluide à la lecture, bien des erreurs peuvent être éviter grâce à cette pratique, qui est d'ailleurs vital si vous voulez travailler dans les meilleurs conditions possibles !
Bien, maintenant que cela est dit, comment indentons-nous un code ? Eh bien, un exemple, puis une explication !


Code: (Code non-indenté) [Sélectionner]
main()
{
new a;
new b;
new c;

a = 1;
b = 2;
c = d(a, b);
}

public d(e, f)
{
return e + f;
}

Code: (Code indenté) [Sélectionner]
main()
{
new a;
new b;
new c;

a = 1;
b = 2;
c = d(a, b);
}

public d(e, f)
{
return e + f;
}

Comme vous pouvez le voir, les deux codes suivants sont similaires, ils ne servent pas à grand chose, certes, mais sont un très bon exemple !
Ce qui change, c'est que nous ajoutons une tabulation à chaque fois que nous entrons dans une accolade, donc plus généralement, dans une fonction, une condition, ou encore, une boucle.
Cela permet de rendre plus agréable un code qui est généralement une chose pas très comestible.
À part cela, l'indentation n'a aucun effet sur la compilation du code !

Mais maintenant, un problème se pose !


Citation de: Compilateur
C:\Documents and Settings\Xartrick\exemple.pwn(40) : error 030: compound statement not closed at the end of file (started at line 3)
Pawn compiler 3.2.3664           Copyright (c) 1997-2006, ITB CompuPhase

1 Error.

Voici le code ...

Code: (Code non-indenté) [Sélectionner]
main()
{
new a;
new b;
new c;

a = 1336;
b = 1337;
c = 1338;

if(a == b)
{
if(b == c)
{
if(c == a)
{

}
if(a > b)
{
if(b > c)
{
if(c > a)
{
}
}
}
if(a < b)
{
if(b < c)
{
if(c < a)
{

}
}
}
}
}

Ici, j'ai malencontreusement oublié une accolade, mais où cela ?!
Pour le trouver, nous allons ranger le code !


main()
{
new a;
new b;
new c;

a = 1336;
b = 1337;
c = 1338;

if(a == b)
{
if(b == c)
{
if(c == a)
{
}

if(a > b)
{
if(b > c)
{
if(c > a)
{
}
}
}

if(a < b)
{
if(b < c)
{
if(c < a)
{
}
}
}
}
}

Et oui, il manquait une accolade à la fin, d'un seul coup d'œil, nous l'avons vue !
Pour l'indentation, cela sera tout !


L'espacement

L'espacement du code, tous comme l'indentation, n'a aucun intérêt si ce n'est que d'avoir un code clair et compréhensible.
Pour cette exemple, je vais combiner l'indentation et l'espacement du code !


Code: (Code non-indenté et non-espacé) [Sélectionner]
main(){new a;new b;new c;
a=1;b=2;c=d(a,b);
}
public d(e,f){return e+f;}

Je prends bien évidement un cas extrêmes, mais des personnes programmes comme ceci, et c'est pas joli à voir !
Et maintenant, une forme correct de ce code avec l'indentation et l'espacement correct !


Code: (Code indenté et espacé) [Sélectionner]
main()
{
new a;
new b;
new c;

a = 1;
b = 2;
c = d(a, b);
}

public d(e, f)
{
return e + f;
}

Donc, l'espacement du code demande seulement d'espacer au maximum les choses qui sont différente, ici, nous séparons les déclarations des affectations.
Les opérateurs sont également espacé !
Il faut savoir que certains programmeur pousse le vice jusqu'au bout, voyez cet exemple !


Code: (Code indenté et espacé excessivement) [Sélectionner]
main ()
{
new a ;
new b ;
new c ;

a = 1 ;
b = 2 ;
c = d ( a , b ) ;
}

public d ( e , f )
{
if ( e > f )
{
   return e + f ;
}
else if ( f < e )
{
return f + e ;
}

return 0 ;
}

La déclaration des variables

L'appellation

Cette partie est seulement une préférence personnelle, ceci n'est pas à appliquer obligatoirement !

Comme vous le savez surement déjà, le nom d'une variable doit être alpha-numérique (A-Za-z0-9) et doit toujours commencer par une lettre
Voici quelques déclaration de variable ...


Code: (Déclaration) [Sélectionner]
new a; // Déclaration correct
new 8; Déclaration incorrect (commence par un nombre)
new a8; // Déclaration correct
new 8a; // Déclaration incorrect (commence par un nombre)
new a8é; // Déclaration incorrect (é)
new a8e; // Déclaration correct

Pour ma part, j'ai adopté un petit système d'appelation des variables pour pouvoir les identifier au mieux.
J'utilise un système de préfixe pour identifier les différents types de variables, les voici.

i = Integer = Nombres
b = Boolean = Booléen (0 ou 1)
f = Float = Nombres à virgule
s = String = Tableau de char (chaîne de caractères)
a = Array = Tableau


Ainsi, voici plusieurs déclarations de variables et les affectations associés.


Code: (Déclaration) [Sélectionner]
new iVariable = 1337; // Variable contenant un nombre entier
new bVariable = 0; // Variable booléene
new fVariable = 13.37; // Variable contenant un nombre à virgule
new sVariable[100] = "Xartrick"; // Variable contenant une chaîne de caractère
new aVariable[100] = 1; // Variable contenant plusieurs valeurs (numéral)

Le nom d'une variable n'affecte pas la façon dont elle fonctionne, elle n'est utilise que visuellement !

L'affectation

Cette partie est facultative étant donné que cette partie n'est que d'ordre général.

Maintenant, la partie la plus intéressante, l'affectation d'une valeur à une variable.
Ici, voici un tableau de taille 10000.


Code: (Déclaration d'un tableau) [Sélectionner]
new aArray[10000];
Beaucoup de langage n'affecte pas de valeur de base à leurs variables, ceci est très générant car nous pouvons trouver des valeurs que nous ne souhaitons pas !
Pour m'en rendre compte, j'ai simplement codé un code qui créer un tableau de cette taille et qui vérifie toutes les valeurs de ce tableau et si elle n'est pas égal à 0, on l'inscrit sur la console.


Code: (Test de valeur) [Sélectionner]
#include <a_samp>

main()
{
new aArray[10000];
new i = 0;

for (i = 0; i < 10000; i++)
{
if (aArray[i] != 0)
{
printf("L'indice %i du tableau vaut %i !", i, aArray[i]);
}
}
}

Résultat, aucune entré, donc toutes la variables sont initialisés à 0 lors de leurs déclarations !
C'est le cas pour le PAWN mais ceci n'est pas la cas pour le C, par exemple !


Exemple de code optimisé et non-optimisé

Code non-optimisé: Pastebin GTAOnline.fr - Outil de collaboration dans le développement
Code optimisé: Pastebin GTAOnline.fr - Outil de collaboration dans le développement


Participants

  • Xartrick
    • L'indentation
    • L'espacement
    • La déclaration des variables

5
Salut à vous.

Je ne sais pas si vous avez remarquez, dans Call of Duty 7, quand vous démarrer une partie multijoueur, il y a toujours un texte en haut et centré.
Ce texte ce fait découvrir à l'aide de nombre choisi au hasard.


J'ai créer une fonction pour créer cette effet.

http://pastebin.gtaonline.fr/pastebin.php?show=1053

Donc, en gros, vous passez en argument votre chaîne de caractère (veuillez vérifier quelle ne dépasse pas 255 caractères), et la fonction fait son boulot et vous sort ceci.


Citer
StringGenerate("Salutation à tous GTAOnline.fr !");



Je suis fier de cette version, car elle est dynamique.
Je veux dire par dynamique que les nombres bouge, il ne reste pas statique.

Vous pouvez vous en servir comme bon vous semble avec ou sans crédit, cela m'est égal.

Bonne journée.

Cordialement,
Xartrick.

6
Scripting SA-MP [Pawn center] / Fonction CoDEffect
« le: 26 Février 2011, 00:30:28 »
Salut à vous.

Je ne sais pas si vous avez remarquez, dans Call of Duty 7, quand vous démarrer une partie multijoueur, il y a toujours un texte en haut et centré.
Ce texte ce fait découvrir à l'aide de nombre.


Citer
01234 -> salut

J'ai créer une fonction pour créer cette effet (en C).

http://c.pastebin.com/1zZvE4ZZ

Donc, en gros, vous passez en argument votre chaîne de caractère en argument (veuillez vérifier quelle ne dépasse pas 255 caractères), et la fonction fait son boulot et vous sort ceci.




Je suis pas tellement fier de cette version, car elle est statique.
Je veux dire par statique que les nombres ne bouge pas, il reste les mêmes.

Maintenant, il ne vous reste plus qu'à convertir cette fonction en Pawn (pas bien dur) et de vous en servir comme bon vous semble avec ou sans crédit, cela m'est égal.

Bonne soirée et bonne traduction.

7
Internet - Informatique / NVIDIA GeForce 9800 GT et le SLI et CUDA
« le: 24 Décembre 2010, 05:11:31 »
Bonjour à tous,

Je vous explique ici, dans ce modeste topique, mes questions qui ne trouve pas de réponse malgré de nombreuses recherches.

Je possède actuellement une carte graphique NVIDIA GeForce 9800 GT 512 Mo.
J'aimerais faire du SLI avec et donc, je dois acheter la même carte graphique.

Cependant trois questions me tracasse et je ne trouve aucune réponse à ce sujet (il est tard, mes yeux se ferme !).

Sachant que NVIDIA GeForce 9800 GT 512 Mo est doté de la technologie CUDA, cette technologie sera t'elle doublé comme pour le SLI ?

Je possède une PNY GeForce 9800 GT 512 Mo, le SLI sera t'il possible si j'achète une MSI GeForce 9800 GT 512 Mo ?

La boite que je possède est la même que sur internet mais ma carte graphique est différente, pourquoi ?

Ma boite:



Mais pas ma carte graphique:


http://fr.msi.com/modele/geforce-9800gt
http://www3.pny.com/9800-GT-512MB-PCIe-P2814C331.aspx

Merci à vous d'avoir prit le temps de lire mon topique.

Cordialement,
Xartrick.

8
Showroom SA:MP / [FS] xBanSyst [v1.3]
« le: 10 Décembre 2010, 03:50:23 »
Salut à tous,

Pour mon premier code distribué dans Showroom, je vous propose un système de bannissement.
Je ne sais pas si vous avez remarqué, mais pour dé-bannir une personne, il faut aller soit même supprimer les informations du banni mais également redémarrer le serveur.
C'est pour cela qu'est né xBanSyst !




Niveau






Pourquoi xBanSyst ?



x -> Xartrick's
Ban -> Ban
Syst -> System




Pourquoi ne pas utiliser simplement la fonction Ban() ou BanEx() ?



Tous simplement car comme je l'ai dis plus haut, en utilisant la fonction Ban() ou BanEx(), les bannissements sont stockés dans le fichier samp.ban qui n'est relut seulement à chaque démarrage du serveur, c'est pour cela que mon système est là.
Il permet de pouvoir supprimer des bannissements directement en jeu mais aussi qu'ils prennent effet immédiatement.




Comment l'utiliser ?



Tout simplement en le compilant dans le dossier filterscripts, et en créant le dossier xBanSyst dans le dossier scriptfiles.
Il faudra également ajouter le fichier bannedplayer.ban dans le dossier xBanSyst.
Quand cela est fait, il vous suffit de rajouter le filterscript dans la liste du fichier server.cfg.




Téléchargement



Version 1.3 MySQL



Archive:



Code:

http://pastebin.gtaonline.fr/pastebin.php?show=970

Base de donnée:

Code: (SQL) [Sélectionner]
--
-- Structure de la table `bannedplayers`
--

CREATE TABLE IF NOT EXISTS `bannedplayers` (
  `IP` text NOT NULL COMMENT 'IP des joueurs bannis',
  UNIQUE KEY `index` (`IP`(256))
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Table des joueurs bannis';

Citation de: Changelog v1.3 MySQL
  • Ajout d'une fonction pour bannir un joueur par sa plage d'IP.



Version 1.2 MySQL



Archive:



Code:

http://pastebin.gtaonline.fr/pastebin.php?show=969

Base de donnée:

Code: (SQL) [Sélectionner]
--
-- Structure de la table `bannedplayers`
--

CREATE TABLE IF NOT EXISTS `bannedplayers` (
  `IP` text NOT NULL COMMENT 'IP des joueurs bannis',
  UNIQUE KEY `index` (`IP`(256))
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Table des joueurs bannis';

Citation de: Changelog v1.2 MySQL
  • Ajout d'une fonction pour bannir une IP.
  • Ajout d'un listing des commandes présentes.
  • Ajout d'une fonction pour nettoyer la base de donnée.
  • Modification des noms de quelques fonctions.
  • Modification de quelques messages faux.



Version 1.1 MySQL



Archive:



Code:

http://pastebin.gtaonline.fr/pastebin.php?show=968

Base de donnée:

Code: (SQL) [Sélectionner]
--
-- Structure de la table `bannedplayers`
--

CREATE TABLE IF NOT EXISTS `bannedplayers` (
  `IP` text NOT NULL COMMENT 'IP des joueurs bannis',
  UNIQUE KEY `index` (`IP`(256))
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Table des joueurs bannis';

Citation de: Changelog v1.1 MySQL
  • Ajout des bannissements sur une base de donnée MySQL.



Version 1.1



Archive:



Code:

http://pastebin.gtaonline.fr/pastebin.php?show=967

Citation de: Changelog v1.1
  • Ajout d'une fonction pour vérifier si une IP est valide ou non
  • Ajout de vérification pour savoir si le joueur qu'on veut bannir est connecté ou non (idée de Sim)
  • Modification des fonctions pour quelle soit portable (idée de Sim).



Version 1.0



Archive:



Code:

http://pastebin.gtaonline.fr/pastebin.php?show=966



FaQ



Question: Bannir une plage d'IP ?
Réponse: Bannir une plage d'IP permet à un utilisateur de ne plus revenir même s'il possède une IP dynamique !
Si vous bannissez la plage d'IP d'un joueur avec l'indice 1, son IP sera banni comme ceci:

127.0.0.*Tandis que si vous utilisé l'indice 2, son IP sera banni comme ceci:
127.0.*.*
Question: J'aimerais bannir la plage d'IP d'un joueur grâce à l'indice 3 (127.*.*.*), pourquoi je ne peux pas ?
Réponse: Car cela bannirez trop de personne inutillement, pareil pour l'indice 4, tout le monde serait bannie (IPv4).

Question: Comment bannir la plage d'IP d'un joueur que il n'est pas connecté ?
Réponse: Simplement en bannissant le joueur normalement et en changeant l'IP avec des étoiles (*), mais attention, seulement les deux derniers nombres doivent être changé, sinon le bannissement devient obsolète !




Crédits



  • G-sTyLeZzZ pour son plugin pour utiliser MySQL



Hé bien c'est déjà fini ! J'espère que ma première contribution à ce forum sera apprécié !



Bonne journée !

Cordialement,
Xartrick.

Pages: [1]