August 7, 201411 yr comment_179719 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 signifieici "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.phpIl 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 August 28, 201411 yr by Dertione correction Report
August 7, 201411 yr comment_179725 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. Report
August 7, 201411 yr Author comment_179726 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. Report
August 8, 201411 yr comment_179751 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 Report
August 8, 201411 yr Author comment_179783 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 ? Report
August 12, 201411 yr comment_179888 Jolie tuto, mais moi je préfère SublimeText 3, c'est plus esthétique Report
August 12, 201411 yr Author comment_179890 SublimeText j'utilise aussi, enfin j'utilise notepad++ et SublimeText (notepad en général pour le php et SublimeText pour le pawno) Report
August 20, 201411 yr comment_180104 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 ... Report
August 21, 201411 yr Author comment_180128 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à. Report
August 22, 201411 yr comment_180200 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 August 22, 201411 yr by kriax Report
August 22, 201411 yr Author comment_180203 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. Report
August 22, 201411 yr comment_180216 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é ? ... Report
August 22, 201411 yr Author comment_180219 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. Report
August 22, 201411 yr comment_180221 même avec des débutant il faut savoir utilisé des moits "compliqué" seulement après il faut savoir expliquer ! Report
August 23, 201411 yr comment_180242 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 ^^. Report
August 23, 201411 yr comment_180245 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 ? ... Report
August 24, 201411 yr Author comment_180253 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 Report
August 28, 201411 yr comment_180317 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 ^^. Report
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.