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

    probleme compilation avec morecolors


    Skuzy

    Messages recommandés

    Il ne reconnais pas les fonctions de More Colors, re-télécharge le, si mes souvenirs sont bon, tu devrais avoir MoreColors et MoreColorLight (un truc du genre).

    Met les deux dans le dossier include et met #include <morecolors>

     

    EDIT : J'avais pas vue les maj de cette include, lite existe plus :p

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

    Après compilation je peux dire que c'est MoreColors qui bug (on s'en doute).

     

    Il te faut une version antérieur à la 1.7.4.

     

    Enregistre ceci sous le nom de morecolors.inc :

     

    // MOAR COLORS
    // By Dr. McKay
    // Inspired by: https://forums.alliedmods.net/showthread.php?t=96831
    
    #if defined _colors_included
    #endinput
    #endif
    #define _colors_included
    
    #define MORE_COLORS_VERSION "1.1.0BETA"
    #define MAX_MESSAGE_LENGTH 250
    
    #define COLOR_RED 0xFF4040
    #define COLOR_BLUE 0x99CCFF
    #define COLOR_GRAY 0xCCCCCC
    #define COLOR_GREEN 0x3EFF3E
    
    new bool:CSkipList[MAXPLAYERS + 1] = {false, ...};
    new Handle:CTrie = INVALID_HANDLE;
    
    /**
    * Prints a message to a specific client in the chat area.
    * Supports color tags.
    * 
    * @param client        Client index.
    * @param message        Message (formatting rules).
    * @noreturn
    * 
    * On error/Errors:        If the client is not connected an error will be thrown.
    */
    stock CPrintToChat(client, const String:message[], any:...) {
       CCheckTrie();
       if(client <= 0 || client > MaxClients) {
           ThrowError("Invalid client index %i", client);
       }
       if(!IsClientInGame(client)) {
           ThrowError("Client %i is not in game", client);
       }
       decl String:buffer[MAX_MESSAGE_LENGTH], String:buffer2[MAX_MESSAGE_LENGTH];
       SetGlobalTransTarget(client);
       Format(buffer, sizeof(buffer), "\x01%s", message);
       VFormat(buffer2, sizeof(buffer2), buffer, 3);
       CReplaceColorCodes(buffer2);
       PrintToChat(client, buffer2);
    }
    
    /**
    * Prints a message to all clients in the chat area.
    * Supports color tags.
    * 
    * @param client        Client index.
    * @param message        Message (formatting rules).
    * @noreturn
    */
    stock CPrintToChatAll(const String:message[], any:...) {
       CCheckTrie();
       decl String:buffer[MAX_MESSAGE_LENGTH], String:buffer2[MAX_MESSAGE_LENGTH];
       for(new i = 1; i <= MaxClients; i++) {
           if(!IsClientInGame(i) || IsFakeClient(i) || CSkipList[i]) {
               CSkipList[i] = false;
               continue;
           }
           SetGlobalTransTarget(i);
           Format(buffer, sizeof(buffer), "\x01%s", message);
           VFormat(buffer2, sizeof(buffer2), buffer, 2);
           CReplaceColorCodes(buffer2);
           PrintToChat(i, buffer2);
       }
    }
    
    /**
    * Prints a message to a specific client in the chat area.
    * Supports color tags and teamcolor tag.
    * 
    * @param client        Client index.
    * @param author        Author index whose color will be used for teamcolor tag.
    * @param message        Message (formatting rules).
    * @noreturn
    * 
    * On error/Errors:        If the client or author are not connected an error will be thrown
    */
    stock CPrintToChatEx(client, author, const String:message[], any:...) {
       CCheckTrie();
       if(client <= 0 || client > MaxClients) {
           ThrowError("Invalid client index %i", client);
       }
       if(!IsClientInGame(client)) {
           ThrowError("Client %i is not in game", client);
       }
       if(author <= 0 || author > MaxClients) {
           ThrowError("Invalid client index %i", author);
       }
       if(!IsClientInGame(author)) {
           ThrowError("Client %i is not in game", author);
       }
       decl String:buffer[MAX_MESSAGE_LENGTH], String:buffer2[MAX_MESSAGE_LENGTH];
       SetGlobalTransTarget(client);
       Format(buffer, sizeof(buffer), "\x01%s", message);
       VFormat(buffer2, sizeof(buffer2), buffer, 4);
       CReplaceColorCodes(buffer2, author);
       PrintToChat(client, buffer2);
    }
    
    /**
    * Prints a message to all clients in the chat area.
    * Supports color tags and teamcolor tag.
    *
    * @param author      Author index whos color will be used for teamcolor tag.
    * @param message   Message (formatting rules).
    * @noreturn
    * 
    * On error/Errors:   If the author is not connected an error will be thrown.
    */
    stock CPrintToChatAllEx(author, const String:message[], any:...) {
       CCheckTrie();
       if(author <= 0 || author > MaxClients) {
           ThrowError("Invalid client index %i", author);
       }
       if(!IsClientInGame(author)) {
           ThrowError("Client %i is not in game", author);
       }
       decl String:buffer[MAX_MESSAGE_LENGTH], String:buffer2[MAX_MESSAGE_LENGTH];
       for(new i = 1; i <= MaxClients; i++) {
           if(!IsClientInGame(i) || IsFakeClient(i) || CSkipList[i]) {
               CSkipList[i] = false;
               continue;
           }
           SetGlobalTransTarget(i);
           Format(buffer, sizeof(buffer), "\x01%s", message);
           VFormat(buffer2, sizeof(buffer2), buffer, 3);
           CReplaceColorCodes(buffer2, author);
           PrintToChat(i, buffer2);
       }
    }
    
    /**
    * This function should only be used right in front of
    * CPrintToChatAll or CPrintToChatAllEx and it tells
    * to those funcions to skip specified client when printing
    * message to all clients. After message is printed client will
    * no more be skipped.
    * 
    * @param client   Client index
    * @noreturn
    */
    stock CSkipNextClient(client) {
       if(client <= 0 || client > MaxClients) {
           ThrowError("Invalid client index %i", client);
       }
       CSkipList[client] = true;
    }
    
    /**
    * Checks if the colors trie is initialized and initializes it if it's not (used internally)
    * 
    * @return            No return
    */
    stock CCheckTrie() {
       if(CTrie == INVALID_HANDLE) {
           CTrie = InitColorTrie();
       }
    }
    
    /**
    * Replaces color tags in a string with color codes (used internally by CPrintToChat, CPrintToChatAll, CPrintToChatEx, and CPrintToChatAllEx
    *
    * @param buffer        String.
    * @param author        Optional client index to use for {teamcolor} tags, or 0 for none
    * @param removeTags    Optional boolean value to determine whether we're replacing tags with colors, or just removing tags, used by CRemoveTags
    * @param maxlen        Optional value for max buffer length, used by CRemoveTags
    * @noreturn
    * 
    * On error/Errors:        If the client index passed for author is invalid or not in game.
    */
    stock CReplaceColorCodes(String:buffer[], author=0, bool:removeTags=false, maxlen=MAX_MESSAGE_LENGTH) {
       CCheckTrie();
       if(!removeTags) {
           ReplaceString(buffer, maxlen, "{default}", "\x01", false);
       } else {
           ReplaceString(buffer, maxlen, "{default}", "", false);
           ReplaceString(buffer, maxlen, "{teamcolor}", "", false);
       }
       if(author != 0 && !removeTags) {
           if(author < 0 || author > MaxClients) {
               ThrowError("Invalid client index %i", author);
           }
           if(!IsClientInGame(author)) {
               ThrowError("Client %i is not in game", author);
           }
           decl String:team[16];
           Format(team, sizeof(team), "\x07%06X", CGetTeamColor(author));
           ReplaceString(buffer, maxlen, "{teamcolor}", team, false);
       }
       decl String:part[maxlen], String:find[32], String:replace[16];
       new value, first, last;
       new index = 0;
       for(new i = 0; i < 100; i++) { // conditions are failsafe, we'll return in the loop
           first = FindCharInString(buffer[index], '{');
           last = FindCharInString(buffer[index], '}');
           if(first == -1 || last == -1) {
               return; // no opening or closing brace
           }
           first++;
           last--;
           for(new j = 0; j <= last - first + 1; j++) { // everything from this point on is really confusing
               if(j == last - first + 1) {
                   part[j] = 0;
                   break;
               }
               part[j] = buffer[index + first + j];
           }
           index += last + 2;
           StrToLower(part);
           if(GetTrieValue(CTrie, part, value)) {
               Format(find, sizeof(find), "{%s}", part);
               Format(replace, sizeof(replace), "\x07%06X", value);
               if(!removeTags) {
                   ReplaceString(buffer, maxlen, find, replace, false);
               } else {
                   ReplaceString(buffer, maxlen, find, "", false);
               }
           }
       }
    }
    
    /**
    * Converts a string to lowercase
    * 
    * @param buffer        String to convert
    * @noreturn
    */
    stock StrToLower(String:buffer[]) {
       new len = strlen(buffer);
       for(new i = 0; i < len; i++) {
           buffer[i] = CharToLower(buffer[i]);
       }
    }
    
    /**
    * Adds a color to the colors trie
    *
    * @param name            Color name, without braces
    * @param color            Hexadecimal representation of the color (0xRRGGBB)
    * @return                True if color was added successfully, false if a color already exists with that name
    */
    stock bool:CAddColor(const String:name[], color) {
       CCheckTrie();
       new value;
       if(GetTrieValue(CTrie, name, value)) {
           return false;
       }
       decl String:newName[64];
       strcopy(newName, sizeof(newName), name);
       StrToLower(newName);
       SetTrieValue(CTrie, newName, color);
       return true;
    }
    
    /**
    * Removes color tags from a message
    * 
    * @param message        Message to remove tags from
    * @param maxlen        Maximum buffer length
    * @noreturn
    */
    stock CRemoveTags(String:message[], maxlen) {
       CReplaceColorCodes(message, 0, true, maxlen);
    }
    
    /**
    * Returns the hexadecimal representation of a client's team color (will NOT initialize the trie)
    *
    * @param client        Client to get the team color for
    * @return                Client's team color in hexadecimal, or green if unknown
    * On error/Errors:        If the client index passed is invalid or not in game.
    */
    stock CGetTeamColor(client) {
       if(client <= 0 || client > MaxClients) {
           ThrowError("Invalid client index %i", client);
       }
       if(!IsClientInGame(client)) {
           ThrowError("Client %i is not in game", client);
       }
       new value;
       switch(GetClientTeam(client)) {
           case 1: {
               value = COLOR_GRAY;
           }
           case 2: {
               value = COLOR_RED;
           }
           case 3: {
               value = COLOR_BLUE;
           }
           default: {
               value = COLOR_GREEN;
           }
       }
       return value;
    }
    
    stock Handle:InitColorTrie() {
       new Handle:hTrie = CreateTrie();
       SetTrieValue(hTrie, "aliceblue", 0xF0F8FF);
       SetTrieValue(hTrie, "antiquewhite", 0xFAEBD7);
       SetTrieValue(hTrie, "aqua", 0x00FFFF);
       SetTrieValue(hTrie, "aquamarine", 0x7FFFD4);
       SetTrieValue(hTrie, "azure", 0xF0FFFF);
       SetTrieValue(hTrie, "beige", 0xF5F5DC);
       SetTrieValue(hTrie, "bisque", 0xFFE4C4);
       SetTrieValue(hTrie, "black", 0x000000);
       SetTrieValue(hTrie, "blanchedalmond", 0xFFEBCD);
       SetTrieValue(hTrie, "blue", 0x99CCFF); // same as BLU/Counter-Terrorist team color
       SetTrieValue(hTrie, "blueviolet", 0x8A2BE2);
       SetTrieValue(hTrie, "brown", 0xA52A2A);
       SetTrieValue(hTrie, "burlywood", 0xDEB887);
       SetTrieValue(hTrie, "cadetblue", 0x5F9EA0);
       SetTrieValue(hTrie, "chartreuse", 0x7FFF00);
       SetTrieValue(hTrie, "chocolate", 0xD2691E);
       SetTrieValue(hTrie, "coral", 0xFF7F50);
       SetTrieValue(hTrie, "cornflowerblue", 0x6495ED);
       SetTrieValue(hTrie, "cornsilk", 0xFFF8DC);
       SetTrieValue(hTrie, "crimson", 0xDC143C);
       SetTrieValue(hTrie, "cyan", 0x00FFFF);
       SetTrieValue(hTrie, "darkblue", 0x00008B);
       SetTrieValue(hTrie, "darkcyan", 0x008B8B);
       SetTrieValue(hTrie, "darkgoldenrod", 0xB8860B);
       SetTrieValue(hTrie, "darkgray", 0xA9A9A9);
       SetTrieValue(hTrie, "darkgrey", 0xA9A9A9);
       SetTrieValue(hTrie, "darkgreen", 0x006400);
       SetTrieValue(hTrie, "darkkhaki", 0xBDB76B);
       SetTrieValue(hTrie, "darkmagenta", 0x8B008B);
       SetTrieValue(hTrie, "darkolivegreen", 0x556B2F);
       SetTrieValue(hTrie, "darkorange", 0xFF8C00);
       SetTrieValue(hTrie, "darkorchid", 0x9932CC);
       SetTrieValue(hTrie, "darkred", 0x8B0000);
       SetTrieValue(hTrie, "darksalmon", 0xE9967A);
       SetTrieValue(hTrie, "darkseagreen", 0x8FBC8F);
       SetTrieValue(hTrie, "darkslateblue", 0x483D8B);
       SetTrieValue(hTrie, "darkslategray", 0x2F4F4F);
       SetTrieValue(hTrie, "darkslategrey", 0x2F4F4F);
       SetTrieValue(hTrie, "darkturquoise", 0x00CED1);
       SetTrieValue(hTrie, "darkviolet", 0x9400D3);
       SetTrieValue(hTrie, "deeppink", 0xFF1493);
       SetTrieValue(hTrie, "deepskyblue", 0x00BFFF);
       SetTrieValue(hTrie, "dimgray", 0x696969);
       SetTrieValue(hTrie, "dimgrey", 0x696969);
       SetTrieValue(hTrie, "dodgerblue", 0x1E90FF);
       SetTrieValue(hTrie, "firebrick", 0xB22222);
       SetTrieValue(hTrie, "floralwhite", 0xFFFAF0);
       SetTrieValue(hTrie, "forestgreen", 0x228B22);
       SetTrieValue(hTrie, "fuchsia", 0xFF00FF);
       SetTrieValue(hTrie, "fullblue", 0x0000FF);
       SetTrieValue(hTrie, "fullred", 0xFF0000);
       SetTrieValue(hTrie, "gainsboro", 0xDCDCDC);
       SetTrieValue(hTrie, "ghostwhite", 0xF8F8FF);
       SetTrieValue(hTrie, "gold", 0xFFD700);
       SetTrieValue(hTrie, "goldenrod", 0xDAA520);
       SetTrieValue(hTrie, "gray", 0xCCCCCC); // same as spectator team color
       SetTrieValue(hTrie, "grey", 0xCCCCCC);
       SetTrieValue(hTrie, "green", 0x3EFF3E);
       SetTrieValue(hTrie, "greenyellow", 0xADFF2F);
       SetTrieValue(hTrie, "honeydew", 0xF0FFF0);
       SetTrieValue(hTrie, "hotpink", 0xFF69B4);
       SetTrieValue(hTrie, "indianred", 0xCD5C5C);
       SetTrieValue(hTrie, "indigo", 0x4B0082);
       SetTrieValue(hTrie, "ivory", 0xFFFFF0);
       SetTrieValue(hTrie, "khaki", 0xF0E68C);
       SetTrieValue(hTrie, "lavender", 0xE6E6FA);
       SetTrieValue(hTrie, "lavenderblush", 0xFFF0F5);
       SetTrieValue(hTrie, "lawngreen", 0x7CFC00);
       SetTrieValue(hTrie, "lemonchiffon", 0xFFFACD);
       SetTrieValue(hTrie, "lightblue", 0xADD8E6);
       SetTrieValue(hTrie, "lightcoral", 0xF08080);
       SetTrieValue(hTrie, "lightcyan", 0xE0FFFF);
       SetTrieValue(hTrie, "lightgoldenrodyellow", 0xFAFAD2);
       SetTrieValue(hTrie, "lightgray", 0xD3D3D3);
       SetTrieValue(hTrie, "lightgrey", 0xD3D3D3);
       SetTrieValue(hTrie, "lightgreen", 0x99FF99);
       SetTrieValue(hTrie, "lightpink", 0xFFB6C1);
       SetTrieValue(hTrie, "lightsalmon", 0xFFA07A);
       SetTrieValue(hTrie, "lightseagreen", 0x20B2AA);
       SetTrieValue(hTrie, "lightskyblue", 0x87CEFA);
       SetTrieValue(hTrie, "lightslategray", 0x778899);
       SetTrieValue(hTrie, "lightslategrey", 0x778899);
       SetTrieValue(hTrie, "lightsteelblue", 0xB0C4DE);
       SetTrieValue(hTrie, "lightyellow", 0xFFFFE0);
       SetTrieValue(hTrie, "lime", 0x00FF00);
       SetTrieValue(hTrie, "limegreen", 0x32CD32);
       SetTrieValue(hTrie, "linen", 0xFAF0E6);
       SetTrieValue(hTrie, "magenta", 0xFF00FF);
       SetTrieValue(hTrie, "maroon", 0x800000);
       SetTrieValue(hTrie, "mediumaquamarine", 0x66CDAA);
       SetTrieValue(hTrie, "mediumblue", 0x0000CD);
       SetTrieValue(hTrie, "mediumorchid", 0xBA55D3);
       SetTrieValue(hTrie, "mediumpurple", 0x9370D8);
       SetTrieValue(hTrie, "mediumseagreen", 0x3CB371);
       SetTrieValue(hTrie, "mediumslateblue", 0x7B68EE);
       SetTrieValue(hTrie, "mediumspringgreen", 0x00FA9A);
       SetTrieValue(hTrie, "mediumturquoise", 0x48D1CC);
       SetTrieValue(hTrie, "mediumvioletred", 0xC71585);
       SetTrieValue(hTrie, "midnightblue", 0x191970);
       SetTrieValue(hTrie, "mintcream", 0xF5FFFA);
       SetTrieValue(hTrie, "mistyrose", 0xFFE4E1);
       SetTrieValue(hTrie, "moccasin", 0xFFE4B5);
       SetTrieValue(hTrie, "navajowhite", 0xFFDEAD);
       SetTrieValue(hTrie, "navy", 0x000080);
       SetTrieValue(hTrie, "oldlace", 0xFDF5E6);
       SetTrieValue(hTrie, "olive", 0x9EC34F);
       SetTrieValue(hTrie, "olivedrab", 0x6B8E23);
       SetTrieValue(hTrie, "orange", 0xFFA500);
       SetTrieValue(hTrie, "orangered", 0xFF4500);
       SetTrieValue(hTrie, "orchid", 0xDA70D6);
       SetTrieValue(hTrie, "palegoldenrod", 0xEEE8AA);
       SetTrieValue(hTrie, "palegreen", 0x98FB98);
       SetTrieValue(hTrie, "paleturquoise", 0xAFEEEE);
       SetTrieValue(hTrie, "palevioletred", 0xD87093);
       SetTrieValue(hTrie, "papayawhip", 0xFFEFD5);
       SetTrieValue(hTrie, "peachpuff", 0xFFDAB9);
       SetTrieValue(hTrie, "peru", 0xCD853F);
       SetTrieValue(hTrie, "pink", 0xFFC0CB);
       SetTrieValue(hTrie, "plum", 0xDDA0DD);
       SetTrieValue(hTrie, "powderblue", 0xB0E0E6);
       SetTrieValue(hTrie, "purple", 0x800080);
       SetTrieValue(hTrie, "red", 0xFF4040); // same as RED/Terrorist team color
       SetTrieValue(hTrie, "rosybrown", 0xBC8F8F);
       SetTrieValue(hTrie, "royalblue", 0x4169E1);
       SetTrieValue(hTrie, "saddlebrown", 0x8B4513);
       SetTrieValue(hTrie, "salmon", 0xFA8072);
       SetTrieValue(hTrie, "sandybrown", 0xF4A460);
       SetTrieValue(hTrie, "seagreen", 0x2E8B57);
       SetTrieValue(hTrie, "seashell", 0xFFF5EE);
       SetTrieValue(hTrie, "sienna", 0xA0522D);
       SetTrieValue(hTrie, "silver", 0xC0C0C0);
       SetTrieValue(hTrie, "skyblue", 0x87CEEB);
       SetTrieValue(hTrie, "slateblue", 0x6A5ACD);
       SetTrieValue(hTrie, "slategray", 0x708090);
       SetTrieValue(hTrie, "slategrey", 0x708090);
       SetTrieValue(hTrie, "snow", 0xFFFAFA);
       SetTrieValue(hTrie, "springgreen", 0x00FF7F);
       SetTrieValue(hTrie, "steelblue", 0x4682B4);
       SetTrieValue(hTrie, "tan", 0xD2B48C);
       SetTrieValue(hTrie, "teal", 0x008080);
       SetTrieValue(hTrie, "thistle", 0xD8BFD8);
       SetTrieValue(hTrie, "tomato", 0xFF6347);
       SetTrieValue(hTrie, "turquoise", 0x40E0D0);
       SetTrieValue(hTrie, "violet", 0xEE82EE);
       SetTrieValue(hTrie, "wheat", 0xF5DEB3);
       SetTrieValue(hTrie, "white", 0xFFFFFF);
       SetTrieValue(hTrie, "whitesmoke", 0xF5F5F5);
       SetTrieValue(hTrie, "yellow", 0xFFFF00);
       SetTrieValue(hTrie, "yellowgreen", 0x9ACD32);
       return hTrie;
    }
    

     

    Et ceci sous le nom de morecolorslite.inc :

     

    /** MOAR COLORS (Lite)
    * By Dr. McKay
    * v1.0.0
    */
    
    #define COLOR_GRAY 0xCCCCCC
    #define COLOR_RED 0xFF4040
    #define COlOR_BLUE 0x99CCFF
    #define COLOR_GREEN 0x3EFF3E
    
    /**
    * Returns the hexadecimal representation of a client's team color (will NOT initialize the trie)
    *
    * @param client        Client to get the team color for
    * @return                Client's team color in hexadecimal, or green if unknown
    * On error/Errors:        If the client index passed is invalid or not in game.
    */
    stock CGetTeamColor(client) {
       if(client <= 0 || client > MaxClients) {
           ThrowError("Invalid client index %i", client);
       }
       if(!IsClientInGame(client)) {
           ThrowError("Client %i is not in game", client);
       }
       new value;
       switch(GetClientTeam(client)) {
           case 1: {
               value = COLOR_GRAY;
           }
           case 2: {
               value = COLOR_RED;
           }
           case 3: {
               value = COLOR_BLUE;
           }
           default: {
               value = COLOR_GREEN;
           }
       }
       return value;
    }
    

     

     

    Version 1.1 BETA mais fonctionne ;)

    Lien vers le commentaire
    Partager sur d’autres sites

    Après compilation je peux dire que c'est MoreColors qui bug (on s'en doute).

    allez, un ptit up pour le plaisir.

     

    Depuis une mise à jour CSGO (et d'autres jeux), le système de message de chat est passé en ProtoBuf, le morecolors a été adapté à ce système.

     

    suffit de mettre le compiler SM à jour. (un des derniers snapshots stable)

     

    :>

    Modifié par Phobie
    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...