Aller au contenu
News ticker
  • Bienvenue sur le nouveau forum VeryGames
  • Welcome to the new VeryGames forum
  • VeryNews

    [SourcePawn 1.7 Help] - Fuc**** tag mismatch


    NeoXw

    Messages recommandés

    Bonjour,

     

    J'ai un petit projet en cours de création, pour se faire j'ai besoin de prendre un joueur ct aléatoirement et le mettre en couleur (Tout est fait ça fonctionne bien), or, dans la compilation du plugin j'ai trois "tag mismatch" qui s'affichent et un rien peut me déranger, j'aimerai savoir ce que j'ai zappé, oublié :

    #pragma semicolon 1
    #pragma tabsize 0
    #pragma newdecls required
    
    
    #include <sourcemod>
    
    
    public void OnPluginStart()
    {
       RegConsoleCmd("sm_tryr", Cmd_Tryr);
    }
    
    
    int colorplayer = -1;
    
    
    public Action Cmd_Tryr(int client, int args)
    {
        colorplayer = GetRandomPlayer(); //Ligne 16
        if(colorplayer > 0 && colorplayer <= GetMaxClients())
           SetEntityRenderColor(colorplayer, 0, 0, 255, 255);
    }
    
    
    stock void GetRandomPlayer()
    {
       int PlayerList[MAXPLAYERS+1];
       int PlayerCount;
    
       for(int i=1; i <= GetMaxClients(); i++)
       {
           if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
               PlayerList[PlayerCount++] = i;
       }
    
       if(PlayerCount == 0)
           return -1; //Ligne 33
    
       return PlayerList[GetRandomInt(0, PlayerCount-1)]; //Ligne 35
    }

     

    Test.sp(16) : warning 213: tag mismatch
    Test.sp(33) : warning 213: tag mismatch
    Test.sp(35) : warning 213: tag mismatch

    Quelqu'un peut me dire pourquoi j'ai ces trois petites lignes qui s'affichent ? Merci d'avance

    Modifié par NeoXw
    Lien vers le commentaire
    Partager sur d’autres sites

    Hey,

     

    Pas besoin de mettre des trucs inutiles dans ton code^^

     

    [color=#7e7e7e]#pragma[/color] semicolon [color=#979797]1[/color]
    
    [color=#7e7e7e]#include[/color][color=#f46b6c] <sourcemod>[/color]
    
    [color=#569cd5]public[/color] [color=#2890b0]void[/color] [color=#569cd5]OnPluginStart[/color][color=#8f8f8f]()[/color]
    [color=#8f8f8f]{[/color]
       [color=#569cd5]RegConsoleCmd[/color][color=#8f8f8f]([/color][color=#f46b6c]"[/color][color=#f46b6c]sm_tryr[/color][color=#f46b6c]"[/color], Cmd_Tryr[color=#8f8f8f]);[/color]
    [color=#8f8f8f]}[/color]
    
    [color=#2890b0]int[/color] colorplayer = [color=#979797]-1[/color][color=#8f8f8f];[/color]
    
    [color=#569cd5]public[/color] [color=#2890b0]Action[/color] [color=#4585c5]Cmd_Tryr[/color][color=#8f8f8f]([/color][color=#2890b0]int[/color] client, [color=#2890b0]int[/color] args[color=#8f8f8f])[/color]
    [color=#8f8f8f]{[/color]
        colorplayer = [color=#4585c5]GetRandomPlayer[/color][color=#8f8f8f]();[/color]
    
        [color=#569cd5]if[/color][color=#8f8f8f]([/color]colorplayer [color=#8f8f8f]>[/color] [color=#979797]0[/color] [color=#8f8f8f]&&[/color] colorplayer [color=#8f8f8f]<[/color]= [color=#569cd5]GetMaxClients[/color][color=#8f8f8f]())[/color]
           [color=#569cd5]SetEntityRenderColor[/color][color=#8f8f8f]([/color]colorplayer, [color=#979797]0[/color], [color=#979797]0[/color], [color=#979797]255[/color], [color=#979797]255[/color][color=#8f8f8f]);[/color]
    [color=#8f8f8f]}[/color]
    
    [color=#4585c5]GetRandomPlayer[/color][color=#8f8f8f]()[/color]
    [color=#8f8f8f]{[/color]
       [color=#2890b0]int[/color] PlayerList[color=#8f8f8f][[/color][color=#bc62c5]MAXPLAYERS[/color][color=#979797]+1[/color][color=#8f8f8f]];[/color]
       [color=#2890b0]int[/color] PlayerCount[color=#8f8f8f];[/color]
    
       [color=#569cd5]for[/color][color=#8f8f8f]([/color][color=#2890b0]int[/color] i=[color=#979797]1[/color][color=#8f8f8f];[/color] i [color=#8f8f8f]<[/color]= [color=#bc62c5]MaxClients[/color][color=#8f8f8f];[/color] i[color=#8f8f8f]++)[/color]
       [color=#8f8f8f]{[/color]
           [color=#569cd5]if[/color][color=#8f8f8f]([/color][color=#569cd5]IsClientConnected[/color][color=#8f8f8f]([/color]i[color=#8f8f8f])[/color] [color=#8f8f8f]&&[/color] [color=#569cd5]IsClientInGame[/color][color=#8f8f8f]([/color]i[color=#8f8f8f])[/color] [color=#8f8f8f]&&[/color] [color=#569cd5]IsPlayerAlive[/color][color=#8f8f8f]([/color]i[color=#8f8f8f])[/color] [color=#8f8f8f]&&[/color] [color=#569cd5]GetClientTeam[/color][color=#8f8f8f]([/color]i[color=#8f8f8f])[/color] == [color=#979797]3[/color][color=#8f8f8f])[/color]
               PlayerList[color=#8f8f8f][[/color]PlayerCount[color=#8f8f8f]++][/color] = i[color=#8f8f8f];[/color]
       [color=#8f8f8f]}[/color]
    
       [color=#569cd5]return[/color] [color=#8f8f8f]([/color]PlayerCount == [color=#979797]0[/color][color=#8f8f8f])[/color] [color=#8f8f8f]?[/color] [color=#979797]-1[/color] : PlayerList[color=#8f8f8f][[/color][color=#569cd5]GetRandomInt[/color][color=#8f8f8f]([/color][color=#979797]0[/color], PlayerCount[color=#979797]-1[/color][color=#8f8f8f])];[/color]
    [color=#8f8f8f]}[/color]
    

     

    de rien.

     

    Delachambre.

    Lien vers le commentaire
    Partager sur d’autres sites

    J'en viens à compléter les dires de Delachambre.

    Même si je t'ai aider sur steam x) peut être que ça en aideras d'autre.

     

    Comme il la si bien dit en haut, ton code contiens des lignes inutiles ...

    Ta condition qui vas retourner un -1 dans ton GetRandomPlayer n'est pas "utile" en soit.

     

    Tu vas auto-incrémenter PlayerCount, qui de base est de 0.

    Si tu n'as aucun client repris dans ta boucle, PlayerCount resteras de 0. Du coup ton GetRandomInt seras un random entre 0 et 0 .. se qui te retourneras forcément 0.

    Dans tout les cas, -1 ou 0 te retourne un client "invalid".

     

    Si jamais .. GetMaxClient devrais disparaitre au fil des release de Sourcemod.

     

    Ton code ici utilise la variable global "colorplayer", qui ne te sers autre part dans ton code que dans le random.

    Faire une global ne te sers donc à rien ^^ En soit ça change pas grand chose, juste de la logique ^^

     

    Je te conseil aussi de mettre des paramètres dans ta condition GetRandomPlayer et de la mettre dans une include perso de ton côté.

    Ma petite include me sers TOUT LE TEMPS, je n'ai pas à refaire les fonctions à chaque fois.

    Bien que tu en as des toutes faites, les re-faires à ta manière t'aideras pour plus tard, étant donner que tu commences tout juste à dev' ^^

     

    Ton erreur est causé par le fait que GetRandomInt est un void .. du coup il ne peu rien retourner.

    Ici tu as besoin de reprendre une variable integer pour l'index du client, du coup .. remplace le void par un int, et tu verras que tout fonctionneras mieux !

     

    C'est comme retourner du float dans une fonction qui devrais te retourner une integer, tu auras un tag miss match ^^

    Lien vers le commentaire
    Partager sur d’autres sites

    Rejoindre la conversation

    Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

    Invité
    Répondre à ce sujet…

    ×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

      Seulement 75 émoticônes maximum sont autorisées.

    ×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

    ×   Votre contenu précédent a été rétabli.   Vider l’éditeur

    ×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

    ×
    ×
    • Créer...