Jump to content
News ticker
  • Bienvenue sur le nouveau forum VeryGames
  • Welcome to the new VeryGames forum
  • VeryNews

    Comment apprendre le SourcePawn ?


    KIL3R62

    Recommended Posts

    Bonjour,

    Voilà sa fais 1 semaine que je me suis intéresser au SourcePawn pour pouvoir faire mes propre plugin et aussi avec des connaissances dans ce domaine.

     

    J'ai déjà suivi ces liens:

     

    http://docs.sourcemod.net/api/

    https://wiki.alliedmods.net/Counter-Strike:_Source_Events

    https://wiki.alliedmods.net/Category:SourceMod_Scripting

    https://wiki.alliedmods.net/Introduction_to_SourcePawn

     

    http://forum.supreme-elite.fr/topic/13073-tuto-d%C3%A9buter-dans-la-programmation/

    http://forum.supreme-elite.fr/topic/13167-tuto-votre-premier-plugin/

     

    Mais je n'arrive pas a m'en sortir. Je ne vois pas comment former les fonctions ect.. :-(

    J'ai suivi a la lettre les tutos de Dertione mais je n'y arrive toujours pas a trouver la façon de faire un plugin

     

    Comme ça:

     

    HookEvent("player_spawn", OnPlayerSpawn);

     

    Je ne comprend pas où Dertione a trouver la fonction OnPlayerSpawn car j'ai regardé sur les différents lien et je ne l'ai pas trouvé.

    Et j'ai beaucoup de problème pour tout comprendre :?

     

     

    Donc si quelqu'un me pourrait tout expliquer de A à Z s'il vous plaît sa serai très simpat de sa pars.

    Voir même me l'expliquer directement en vocal sa serais encore mieu et parfait

     

     

    Ajouter moi Skype pour ceux qui peuvent me l'expliquer

     

    Skype: dylan.bdn

     

    Merci d'avance pour vos réponse :-)

    Link to comment
    Share on other sites

    #include <sourcemod>
    
    /* Le plugin se lance */
    public OnPluginStart()
    {
       /* Tu hook un event 
        * Pour mieux comprendre : Tu le "défini" et tu l'appelle 
       */
       HookEvent("player_spawn", Event_PlayerSpawn);
       /* HookEvent : La fonction
        * player_spawn : L'évenement > Lister dans la liste que @lex t'as donner
        * Event_PlayerSpawn : Le CallBack > Tu peut mettre Event_TotoSpawn 
       */
    }
    
    /* Tu appelles l'event "player_spawn" via son CallBack (Ici nommer Event_PlayerSpawn) */
    /* Si ton callback étais Event_TotoSpawn, juste en dessous ce serais >> public Action:Event_TotoSpawn(Handle:event, const String:name, bool:dontBroadcast)*/
    public Action:Event_PlayerSpawn(Handle:event, const String:name, bool:dontBroadcast)
    {
       /* Tu créés une variable nommer client et tu stock la personnes qui respawn via des clefs d'évenement */
       new client = GetClientOfUserId(GetEventInt(event, "userid"));
       /* GetClientOfUserId : Tu reprend le UserID d'un index pour le transformer en index réelle (Joueur si tu veux)
          * > Index stocké dans la variable client
        * GetEventInt : Tu reprend une clef d'évenement de l'event appeller "userid"
          * UserID est le UserID du client qui respawn
        * 
        * Traduction de la ligne : nouvelle variable client reprend le userid de la clef d'évenement "userid"
        * En gros, client seras la traduction du userid de la personne qui respawn
       */
    }
    

     

    Sur Cs:s quand tu rejoins un serveur le serveur te donnes un UserID, c'est cela qui te défférencie des autres quand tu passes pas par le SteamID.

    Quand tu tape status dans la console, le petit # afficher est le userid.

     

    Voilà une explication SIMPLIFIER sur les différentes type de variable :

    #Integer : Variable numérique
    #String : Variable à caractère 
    #Float : Variable décimale
    #Booléan : Variable vrais/false (Tu la tournes comme tu veux)
    

     

    Je te conseil d'abbord de savoir utiliser ces variables avant de vouloir passer par des CallBack, SQL, Timer, ...

    Les variables est la base de n'importe quel languages, même si les variables sont les mêmes partout ou presque toujours ^^

     

    Kriax.

    Link to comment
    Share on other sites

    #include <INCLUDE>
    

     

    Ceci vas servire à inclure une include.

    Une include est un petit fichier des fois qui est appart d'un plugin, des fois non.

     

    Ce fichier sert à stocké des fonctions, des variables, enfin tout se que t'as envie d'y mettre.

    Si tu utilises une fonction, variable, ... qui est stocké dans une include et que tu ne l'inclus pas dans le plugin, ça diras qu'il ne connais pas la fonction.

     

    Exemple :

    GivePlayerItem 
    

    est une fonction utiliser par sdktools, si tu ne met pas

    include <sdktools>
    

    Ton compilateur diras qu'il ne connais pas la fonction GivePlayerItem.

     

    Se qui se trouve dans une include, temps que ce n'est pas une native peut rester dans la source d'un plugin.

    Une native si tu veux en simplifié, est une fonction que tu peux utilisé à travers n'importe quel plugin afin qu'il ai un impact sur le plugin qui défini la native.

     

    Exemple :

    #Plugin1 : Nommé HP ayant comme native (fonction) GiveHP

    #Plugin2 : Nommé toto ayant utilise GiveHP.

    Et bien toto auras un impact sur HP car il utiliseras sa native, l'impact est le fait que c'est HP qui execute la fonction GiveHP

     

    Voici un exemple de fonction :

     

    stock SetClientSpeed(client, Float:amount)
    {
       SetEntPropFloat(client, Prop_Data, "m_flLaggedMovementValue", amount);
    }
    

     

    Pour utilisé cette fonction il suffiras de faire :

     

    SetClientSpeed(client, "1.2");
    

     

    En général une fonction est utile, j'entend par le que j'ai ma propre include reprennant plus de 50 fonction.

    La pluspart servent à faire ce genre de chose car m_flLaggedMovementValue est l'entité de la vitesse, je sais pas retenir toute les entitées de ce genre par coeur donc j'utilise ce genre de fonction :

     

    K_GetClientSpeed(client);
    K_SetClientSpeed(client);
    K_GetClientArmor(client);
    K_SetClientArmor(client);
    K_ShakeClient(client);
    

     

    Etc :)

    Link to comment
    Share on other sites

    Merci à Alex et Kriax pour votre aide :-D

    Mais vous savais, je suis seulement entrain de voir le SourcePawn du coup je ne comprend pas trop comment former un code

    Oula Kriax c'est emporté là :megarire:

    Je commence seulement le codage et toi tu sors tout sa ^^ . Mais sinon Kriax tu pourrais m'expliquer ce qu'est une clef d'évènement vu que je n'ai pas compris s'il te plaît ?

    Le HookEvent("player_spawn", OnPlayerSpawn); était juste un exemple de code que je comprenais pas trop.

    Link to comment
    Share on other sites

    Une clef d’événement est pas compliquer à comprendre.

    Sur le lien que @lex t'as donner il y auras différente information.

     

    Imagine que tu dois utiliser l'event "hegrenade_detonate".

     

    Tu auras comme clef d’événement :

     

    userid : La personne qui lance la grenade
    X : Origine X de l'éxplosion
    Y : Origine Y de l'éxplosion
    Z : Origine Z de l’explosion
    

     

    Je sais pas comment te définir exactement une clef d’événement, enfin je vais essayer :

     

    Une clef d’événement seras comme une information que l’événement vas te générer.

    Je reprend un exemple, dans le player_death, l'évenement te donneras comme information la personne qui est morte, la personne qui l'a tuer, si c'est par un headshot ou pas (boolean :p), les dommages causé, ...

     

    Chaque event à ses propre clef, bien que userid reviens souvent car c'est la personne qui est à l'origine de l’événement en gros :p

     

    Tu as compris ?

    Se que tu comprends pas met le ici et je tenterais de t'expliquer :)

     

    Kriax.

    Link to comment
    Share on other sites

    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...

    ×   Pasted as rich text.   Paste as plain text instead

      Only 75 emoji are allowed.

    ×   Your link has been automatically embedded.   Display as a link instead

    ×   Your previous content has been restored.   Clear editor

    ×   You cannot paste images directly. Upload or insert images from URL.

    ×
    ×
    • Create New...