Annonce

Réduire
Aucune annonce.

Comment apprendre le SourcePawn ?

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Comment apprendre le SourcePawn ?

    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-..._Source_Events
    https://wiki.alliedmods.net/Category...eMod_Scripting
    https://wiki.alliedmods.net/Introduction_to_SourcePawn

    http://forum.supreme-elite.fr/topic/...programmation/
    http://forum.supreme-elite.fr/topic/...remier-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

  • #2
    En soit c'est player_spawn l'event

    Liste des events de cs:s

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

    Commentaire


    • #3
      Code PHP:
      #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:namebool: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 :
      Code:
      #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.

      Commentaire


      • #4
        Code PHP:
        #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 :
        Code PHP:
        GivePlayerItem 
        est une fonction utiliser par sdktools, si tu ne met pas
        Code PHP:
        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 :

        Code PHP:
        stock SetClientSpeed(clientFloat:amount)
        {
            
        SetEntPropFloat(clientProp_Data"m_flLaggedMovementValue"amount);

        Pour utilisé cette fonction il suffiras de faire :

        Code PHP:
        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 :

        Code PHP:
        K_GetClientSpeed(client);
        K_SetClientSpeed(client);
        K_GetClientArmor(client);
        K_SetClientArmor(client);
        K_ShakeClient(client); 
        Etc

        Commentaire


        • #5
          Merci à Alex et Kriax pour votre aide
          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à
          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.

          Commentaire


          • #6
            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 :

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

            Commentaire

            Chargement...
            X