Jump to content
View in the app

A better way to browse. Learn more.

Forum Supreme-Elite

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Avant de commencer l'aprentissage au SourcePAWN je vous conseille d'utiliser un éditeur de langage.
Personellement j'utilise Notepad++ qui est très simple et très complet.
Lorsque vous Notepad++ est installé vous devez cliquer sur l'onglet "Langage" et choisir le langage "C".
 
 
Le sourceSPAWN utilise des includes pour fonctionner (ce qui est logique car ça était inventé par SourceMOD).
Du coup il y a une ligne à ajouter en début de code qui est tout simplement: 
 
#include <sourcemod> 
 
 
Ensuite vous pouvez créer la fonction myinfo pour déterminer quelques informations sur le plugin comme ceci:
 
public Plugin:myinfo =
{
name = "Nom du plugin",
author = "Ton prénom/pseudo",
description = "Description du plugin",
version = "Version de ton plugin",
url = "URL de ton site/twitter"
};
 
Le prototype public signifie que SourceMod aura accès directement à la fonction Plugin:myinfo.
 
Le prototype public est utilisé pour plusieurs autres fonctions. Commençons par le commencement, pour que SourceMOD détermine ou le plugin va commencer, nous utilisons une fonction indispensable OnPluginStart qui est toujours suivis de deux parenthèses () (ce qui veut dire qu'il ne prends aucun paramètre) : 
 
public OnPluginStart() { 


// Ton code ici


}
 
Les Accolades signifie l'ouverture de la fonction "{" et la fin de la fonction"}". Vous ne pouvez pas écrire du code après une accolade.
 
Prenons un exemple, On aimerait envoyer au serveur un message qui répétera dans la console du genre "Salut tout le monde !"
Pour cela nous allons utiliser une fonction qui est PrintToServer et nous allons proceder comme ça: 
 
PrintToServer("Salut tout le monde !");
La fonction PrintToServer prend comme paramètre une chaîne de caractère (string).
Ici les parenthèses nous servent à écrire, mais avant d'écrire notre texte les guillemets sont indispensables qui définie une chaîne de caractère. et le point-virugle signifie
ici "fermeture", il est également indispensable pour clore la fonction dans de nombreux langages mais en sourcepawn, ce n'est pas obligatoire.
 
Le code au complet ressemblera à ça:
 
#include <sourcemod>


public Plugin:myinfo =
{
name = "Nom du plugin",
author = "Ton prénom/pseudo",
description = "Description du plugin",
version = "Version de ton plugin",
url = "URL de ton site/twitter"
};


public OnPluginStart() { 


PrintToServer("Salut tout le monde !");


}
 
Maintenant, nous souhaitons ajouter une variable qui dit au serveur d'utiliser une commande (INGAME) pour traiter un texte, disons que nous allons utiliser la commande "!test" pour cela il faut une fonction qui est RegConsoleCmd:
 
 
RegConsoleCmd("sm_test", TestCmd);
 
Ca commence à se compliquer  tout ça, mais passons aux explications !
RegConsoleCmd est la fonction pour dire que nous voulons crée une commande INGAME. "sm_test" s'agit de la commande disponible soit en tapant !test ou bien !sm_test.
Et venons au plus compliqué à comprendre pour les débutants ", TestCmd" à la fin de la guillemet.
Il s'agit enfaîte d'une déclaration (Callback) que nous allons utiliser dans la suite du tutoriel.
 
Il faut désormais dire au serveur que nous souhaitons utiliser un Callback lorsque la personne va entrer la commande qui est ici "TestCmd".
Pour cela on utilise la définition Action  avec comme paramètre l'index client et les arguments et le code ressemblera à ça:
 
public Action:TestCmd(client, args)
 
Jusqu'à là rien de très compliqué mais je pense que la question qui vous vient est  "Mais à quoi ce qui y a derrière, c'est à dire (client, args) ?!"
Enfaite il s'agit de deux paramètres qui sont prédéfinis de base car c'est une fonction sourcemod avec comme paramètre l'index client et les autres arguments.
 
Ensuite, nous voulons dire au serveur que cette commande doit dire quelque chose au joueur, reprenons l'exemple d'un peu plus en haut "Salut tout le monde !". Pour ça on utilisera la variable PrintToChat:
 
PrintToChat(client, "Salut tout seul !");  
 
PrintToChat est la fonction prédéfini sourcemod.
"client," est l'argument pour dire en gros "les joueurs"
"Salut tout le monde !" est le texte que nous voulons faire apparaître.
 
Ensuite, il existe une énumération propre au moteur source : "La commande du serveur d'origine ne sera pas traitée, si il y avait un. Si la commande de serveur a été créé par un plugin, cela n'a aucun effet.". Souvent utilisé dans la redéfinition d'événement sourcemod.
Il s'agit de Plugin_Handled et s'écrit comme ça: 
 
return Plugin_Handled;

return qui signifie donc "retour".

 
Le code complet donnera ça:
 
#include <sourcemod>


public Plugin:myinfo =
{
name = "Nom du plugin",
author = "Ton prénom/pseudo",
description = "Description du plugin",
version = "Version de ton plugin",
url = "URL de ton site/twitter"
};


public OnPluginStart()
{
    RegConsoleCmd("sm_test", TestCmd);
}


public Action:TestCmd(client, args)
{
    PrintToChat(client, "Salut tout le monde !");


    return Plugin_Handled;
}  
Maintenant que notre mini Plugin est fini il va falloir le compiler. Pour cela, il existe un site qui est: http://www.sourcemod.net/compiler.php
Il suffit de copier le code et de le coller dans l'espace réservé pour et pour nommer le plugin il faut entrer le nom du Plugin dans 
l'espace "Plugin short name".
 
J'agrandirais petit à petit le tutoriel pour ainsi faire avancer la communauté française dans le langage "SourceSpawn". 
Surtout que j'ai débuté il y a quelques jours mais j'avais déjà des notions en langage PHP et un peu de C donc plus de facilité pour ma part. 
 
Ce tutoriel a était écrit par moi et je n'ai pas pioché autre part pour me valoriser, au contraire, ça me permet de ne pas trop oublier les bases même si je connais déjà pas mal de chose...
 
J'espère que ce tutoriel vous a aidé, à bientôt ;-)

Edited by Dertione
correction

Salut K4nsuke,

 

merci d'avoir pris de ton temps pour faire ce tutoriel il est certes pour le moment basique mais bien expliqué et clair il pourra aider à inculquer des bases aux néophytes.

 

Bonne continuation avec tes tutoriels. ;) 

  • Author

Merci Snayp de ta critique positif, oui certes il est basique mais simple à comprendre pour les débutants.

 

Je passerais à des choses plus complexe pour un niveau intermediaire, je développe moi même mes plugins pour mon ba_jail (d'ailleurs c'est grace à ça que j'ai commencé à comprendre le pawno car sm_hosties fonctionné pas sur mon serveur) du coup je développe mes plugins solo (dé fois c'est mieux d'être indépendant à soi même au moins quand il y a un problème tu te repère mieux dans tes plugins).

 

Prochaine étape du tuto c'est les strings et les nombreuses fonctions du pawno.  

good job ! Si tu veux faire d'autre tuto, je te conseille de complémenter ceux déjà existant, voir même les corrigés ou les améliorer si tu veux :) !

En regardant les premières phrases de ton tutoriel, tu m'as donné l'idée d'un autre ahah ^^. Je n'utilises pas "langage C" dans notepad ++ mais SOURCEPAWN, tu vas voir, ca va te changer la vie :P

  • Author

Merci Dertione ! 

 

Pour les autres tuto que je prépare je pense continuer la suite de ce tutoriel (restreindre l'accès d'une commande à un flag, ect...), mais je corrigerais aussi les tutos déjà présent (notamment le tuto "crée un menu" qui est bourré de problème niveau syntaxe).

 

Je n'ai pas le langage SOURCEPAWN dans notepad++ je pense qu'il s'agit d'un plugin externe :)

 

Tu as eu quoi comme idée ? :P

  • Author

SublimeText j'utilise aussi, enfin j'utilise notepad++ et SublimeText (notepad en général pour le php et SublimeText pour le pawno)

  • 2 weeks later...

Yop.

 

Je tiens à précisé quelque erreur :

 

 


nous utilisons une variable obligatoire OnPluginStart qui est toujours suivis de deux parenthèses ():

 

OnPluginStart n'est pas une variable, pareil pour PrintToChat.

 

Les variables sont ceci :

 

new Variable
new Float:Variable
new String:Variable[16]
new Handle:Variable
new bool:Variable

 

Pourquoi #include <sourcemod> ?

Sert à rien ...

  • Author

Oui, il ne s'agit pas d'une variable effectivement mais bon c'est une petite erreur d'ortho', ensuite pour l'include, depuis quand ça sert à rien ? 99% des plugins ont l'include sourcemod pour attribuer les librairires déjà disponible de Sourcemod. Mec on est sous SourcePAWN pas Eventscript là.

Tu m'faits rire :')

Compile un plugin avec et sans l'include sourcemod :$

 

Si ça fonctionne c'est effectivement car tu utilises SM, mais la mettre te sert à rien :$

 

C'est beau de mettre : return Plugin_Handled;

 

Faut encore savoir à quoi ça sert :

return Plugin_Handled;
return Plugin_Changed;
return Plugin_Continue;
return Plugin_Stop;
return;
return VARIABLE;

Ceci dit, petit tutos sympa je le cache pas mais beaucoup d'incompréhension.

Je précice aussi qu'il existe une autocompletion ainsi que des couleurs syntaxique pour codé en Sourcepawn :$

 

 


Pour cela on utilise la variable Action et le code ressemblera à ça:

 

CallBack :3

 

 


une variable obligatoire OnPluginStart qui est toujours suivis de deux parenthèses ():

 

Et si tu utilises pas OnPluginStart, tu le met quand même vue que c'est obligatoire ?

 

 


Jusqu'à là rien de très compliqué mais je pense que la question qui vous vient est  "Mais à quoi ce qui y a derrière, c'est à dire (client, args) ?!"
Enfaite il s'agit d'une déclaration obligatoire si nous voulons que cette commande affiche notre texte,
En gros ça veut dire que nous sommes le "client" et que nous voulons donner un "args" (argument) au jeu.
 
Le client, celui qui appelle la commande !test, args le nombre d'argument ? 

 

 


PrintToChat est la variable.
"client," est l'argument pour dire en gros "les joueurs"

 

client : celui qui tape la commande dans ce cas précis ?

Les joueurs -> PrintToChatAll("Je suis une phrase"); ?
 
Je m'arrête la, Dertione seras pas content sinon :$

Edited by kriax

  • Author

Il y a des fautes de compréhension car j'ai voulu simplifier la chose pour les personnes qui débute, puis de plus que le code n'a aucun problème de syntaxe hein.

J'ai pas parler de faute de syntaxe mais bon.

Autemps appeller une variable un truc et une fonction un chouette dans ton tutos.

 

Si tu parles pas de variable, de fonction, de callback et j'en passe comment tu veux que les autres apprennent ?

Imagine un type qui suis ton tutos à un soucis et cherche sur internet, la réponse au soucis est :

- Ta fonction est érroné, de-plus ta variable n'est pas bonne.

 

Si la personne ne sais pas de quoi on parle, elle fait comment ?

T'apprend à nagé à un enfant sans boué ? ...

  • Author

Je vais éditer le tutoriel pour ton plaisir alors, j'ai simplifié le tutoriel pour les débutants et puis je peux toujours aider les personnes qui ont des problèmes.

même avec des débutant il faut savoir utilisé des moits "compliqué" :) seulement après il faut savoir expliquer !

C'est vrai qu'il y a beaucoup d'incompréhension de ta part sur ce tutoriel. Si tu me permets, je peux corriger certain point qui te sont (enfin je crois) encore flou.

 

Amicalement.

 

PS : Kriax est là pour t'aider. Il est un peu direct mais si il dit toutes ces choses, c'est pas pour te casser, juste qu'il faut faire attention quand tu fais un tutoriel car beaucoup de novice vont le regarder et vont partir du mauvais pieds ^^.

Sans utilisé les mots compliquer on apprend pas.

 

Imagine, tu connais la formulre CO2, mais tu sais pas ce que elle représente, en chimie tu fais comment ?

Bah c'est pareil dans le C, JAVA, PHP, SP, ... dans tout ^^

 

Fait confiance à Dertione il sais de quoi il parle après avoir été mon "élève".

D'ailleur Dertione, depuis quand tu te connecte plus steam ? ...

  • Author

Il y'a aucun soucis, il peut corriger mon tuto, moi je me concentre sur du RUBY et je travail pas trop en C (enfin SourcePAWN) mais bon c'est le même principe

Va vite falloir faire une remise à niveau sur les termes que tu utilises car si tu parles comme ça à un développeur, il va rien comprendre ^^. Tu confonds "variable" et "fonction" très souvent, trop souvent. Il ne faut pas confondre une fonction déjà prédéfini par l'include sourcemod et une variable ^^.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.