Affichage des résultats 1 à 6 sur 6

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

  1. #1
    Newbee
    Date d'inscription
    May 2017
    Messages
    5

    Par défaut [SourcePawn 1.7 Help] - Fuc**** tag mismatch (Problème résolu)

    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é :

    Code:
    #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
    }
    Code:
    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
    Dernière modification par NeoXw ; 24/08/2017 à 21h11.

  2. #2
    Membre confirmé
    Date d'inscription
    May 2013
    Messages
    233

    Par défaut

    Hey,

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

    Code:
    #pragma semicolon 1
    
    #include <sourcemod>
    
    public void OnPluginStart()
    {
        RegConsoleCmd("sm_tryr", Cmd_Tryr);
    }
    
    int colorplayer = -1;
    
    public Action Cmd_Tryr(int client, int args)
    {
         colorplayer = GetRandomPlayer();
         
         if(colorplayer > 0 && colorplayer <= GetMaxClients())
            SetEntityRenderColor(colorplayer, 0, 0, 255, 255);
    }
    
    GetRandomPlayer()
    {
        int PlayerList[MAXPLAYERS+1];
        int PlayerCount;
        
        for(int i=1; i <= MaxClients; i++)
        {
            if(IsClientConnected(i) && IsClientInGame(i) && IsPlayerAlive(i) && GetClientTeam(i) == 3)
                PlayerList[PlayerCount++] = i;
        }
        
        return (PlayerCount == 0) ? -1 : PlayerList[GetRandomInt(0, PlayerCount-1)];
    }
    de rien.

    Delachambre.

  3. #3
    Modérateur

    Date d'inscription
    May 2011
    Localisation
    Belgique
    Messages
    3 104

    Par défaut

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


  4. #4
    Newbee
    Date d'inscription
    May 2017
    Messages
    5

    Par défaut

    Merci Delachambre mais expliquer serait encore mieux ^^

    Merci beaucoup Kriax <3

  5. #5
    Membre confirmé
    Date d'inscription
    May 2013
    Messages
    233

    Par défaut

    Citation Envoyé par NeoXw Voir le message
    Merci Delachambre mais expliquer serait encore mieux ^^

    Merci beaucoup Kriax <3
    Je te l'ai expliqué sur steam il me semble

  6. #6
    Newbee
    Date d'inscription
    May 2017
    Messages
    5

    Par défaut

    Citation Envoyé par CM_Delachambre Voir le message
    Je te l'ai expliqué sur steam il me semble
    Tu dois te tromper de personne je crois, fin bref ^^

Informations de la discussion

Utilisateur(s) sur cette discussion

Il y a actuellement 1 utilisateur(s) naviguant sur cette discussion. (0 utilisateur(s) et 1 invité(s))

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •