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

    Demande d'aide hub


    darky3697

    Messages recommandés

    Salut à tous,

     

    j'utilise le jailmod de delachambre et j'aimerais changer le hub en l'occurence changé le "Zone :" par un système de capitaine aléatoire a chaque début de round (ps j'ai déjà reussi à le faire mais le capitaine rester le même chaque round ^^)

     

     

    public Action:HudTimer(Handle:timer, any:client)
    {
       if (IsClientInGame(client))
       {
           new Handle:hBuffer = StartMessageOne("KeyHintText", client);
    
           new String:RealZone[999];
    
           if (IsInJail(client))
           {
               Format(RealZone, sizeof(RealZone), "Jail");
           }
           else if (IsInPiscine(client))
           {
               Format(RealZone, sizeof(RealZone), "Piscine");
           }
           else if (IsInArmu(client))
           {
               Format(RealZone, sizeof(RealZone), "Armurerie");
           }
           else if (IsInCage(client))
           {
               Format(RealZone, sizeof(RealZone), "Grande Cage");
           }
           else if (IsInIso(client))
           {
               Format(RealZone, sizeof(RealZone), "Isoloire");
           }
           else if (IsInFoot(client))
           {
               Format(RealZone, sizeof(RealZone), "Terrain de foot");
           }
           else if (IsInGarage(client))
           {
               Format(RealZone, sizeof(RealZone), "Garage");
           }
           else if (IsInVestiaire(client))
           {
               Format(RealZone, sizeof(RealZone), "Vestiaire");
           }
           else if (IsInVip(client))
           {
               Format(RealZone, sizeof(RealZone), "Cellule VIP");
           }
           else
           {
               Format(RealZone, sizeof(RealZone), "Extérieur");
           }
    
           new String:SteamId[32];
           GetClientAuthString(client, SteamId, sizeof(SteamId));
    
           if (hBuffer == INVALID_HANDLE)
           {
               PrintToChat(client, "INVALID_HANDLE");
           }
           else
           {    
               new String:tmptext[9999];
               {
                   Format(tmptext, sizeof(tmptext), "======= Ba_Jail =======\n\nZone : %s\nCT : %i/%i\nTerros : %i/%i\n%s\nPoints Fidélités : %i\nWeb : clan-corp.verygames.net/\nTS3 : corporation.illimity.com:50358\n\n=======================\n", RealZone, countCtenvie, countCt, countTenvie, countT, (hasvip[client] ? "Status VIP : Actif" : "Status VIP : Inactif"), points[client]);
               }
    
               BfWriteByte(hBuffer, 1); 
               BfWriteString(hBuffer, tmptext); 
               EndMessage();
           }
       }
       else
       {
           KillTimer(TimerHud[client]);
       }
    }

    Lien vers le commentaire
    Partager sur d’autres sites

    Montre ton code du capitaine alors.

     

    Je veux juste un système de capitaine aléatoire sans demander au joueur si il veut l'être et qu'il s'affiche dans le hub mais je ne sais pas comment faire.

    Et en utilisant le random déjà utiliser dans la jailmod de delachambre, il ne s'actualise pas à chaque round et le capitaine reste tout le temps le même

     

    Sinon le code :

     

    public Action:CheckCapitaine(Handle:timer)
    {
       if(!g_ChoixAleatoire)
           return Plugin_Handled;
    
       do 
       {
           random = GetRandomInt(1, MaxClients);
    
           if(ValidPlayer(random) && g_bWantsCaptain[random] && GetClientTeam(random) == 3)
           {
               CPrintToChatAll("%s : Le capitaine est : {blue}%N{default}.", LOGO, random);
    
               chosen = true;
           }
       }
       while(!chosen);
    
       return Plugin_Continue;
    }

     

    mais moi je voudrais qu'il s'affiche dans le hub et reset à chaque début de round

    Lien vers le commentaire
    Partager sur d’autres sites

    Qui dit "code crade", dit "modification crade" héhé :public

     

    Au dessus du plugin près des variable String globale, met ça :

    new String:g_sCapitaineName[64];

    Ensuite tu change ton hud timer par cela :

    public Action:HudTimer(Handle:timer, any:client)
    {
       if (IsClientInGame(client))
       {
           new Handle:hBuffer = StartMessageOne("KeyHintText", client);
    
           new String:SteamId[32];
           GetClientAuthString(client, SteamId, sizeof(SteamId));
    
           if (hBuffer == INVALID_HANDLE)
           {
               PrintToChat(client, "INVALID_HANDLE");
           }
           else
           {    
               new String:tmptext[9999];
               {
                   Format(tmptext, sizeof(tmptext), "======= Ba_Jail =======\n\nCapitaine : %s\nCT : %i/%i\nTerros : %i/%i\n%s\nPoints Fidélités : %i\nWeb : clan-corp.verygames.net/\nTS3 : corporation.illimity.com:50358\n\n=======================\n", g_sCapitaineName, countCtenvie, countCt, countTenvie, countT, (hasvip[client] ? "Status VIP : Actif" : "Status VIP : Inactif"), points[client]);
               }
    
               BfWriteByte(hBuffer, 1); 
               BfWriteString(hBuffer, tmptext); 
               EndMessage();
           }
       }
       else
       {
           KillTimer(TimerHud[client]);
       }
    }

    > À la place d'afficher la zone, ça afficheras le nom du capitaine

     

    Et pour finir, change ton timer par :

    public Action:CheckCapitaine(Handle:timer)
    {
       if(!g_ChoixAleatoire)
           return Plugin_Handled;
    
       do 
       {
           random = GetRandomInt(1, MaxClients);
    
           if(IsClientInGame(client) && IsPlayerAlive(client) && !IsFakeClient(client) && GetClientTeam(random) == 3)
           {
               GetClientName(random, g_sCapitaineName, sizeof(g_sCapitaineName));
               CPrintToChatAll("%s : Le capitaine est : {blue}%s{default}.", LOGO, g_sCapitaineName);
    
               chosen = true;
           }
       }
       while(!chosen);
    
       return Plugin_Continue;
    }

     

    Et dit moi ce qu'il en est.

     

    KriKri.

    Lien vers le commentaire
    Partager sur d’autres sites

    public Action:CheckCapitaine(Handle:timer)
    {
       if(!g_ChoixAleatoire)
           return Plugin_Handled;
    
       do 
       {
           random = GetRandomInt(1, MaxClients);
    
           if(IsClientInGame(client) && IsPlayerAlive(client) && !IsFakeClient(client) && GetClientTeam(random) == 3)
           {
               GetClientName(random, g_sCapitaineName, sizeof(g_sCapitaineName));
               CPrintToChatAll("%s : Le capitaine est : {blue}%s{default}.", LOGO, g_sCapitaineName);
    
               chosen = true;
           }
       }
       while(!chosen);
    
       return Plugin_Continue;
    } 

     

    hum erreur compilation

     

    error 017:undefined symbol "client"

    a cette ligne

    if(IsClientInGame(client) && IsPlayerAlive(client) && !IsFakeClient(client) && GetClientTeam(random) == 3)

    Lien vers le commentaire
    Partager sur d’autres sites

    Bonjour,

     

    Pour que ton chef soit actualiser à chaque fois, il ajouter a ton code plusieurs choses:

    dans l'évenement "player_death" ===> des que le chef est mort, on relance la fonction checkcapitaine

    dans l'évenement "payer_team" ===> des que le chef change de team ( mais normalement il devrait également passé par le player_death donc pas de soucis)

    dans l'évenement "round_start" ===> bien initialiser ta variable namofcapitaine

     

    Normalement avec ça cela devrait actualiser ton chef souvent. Mon plugin jail fonctionne comme ça.

     

    ajoute ca en variable :

    new capitaine;
    

     

    ensuite dans le timer checkcapitaine :

    public Action:CheckCapitaine(Handle:timer)
    {
       do 
       {
           random = GetRandomInt(1, MaxClients);
    
           if(ValidPlayer(random) && g_bWantsCaptain[random] && GetClientTeam(random) == 3)
           {
               CPrintToChatAll("%s : Le chef des gardiens est : {mediumslateblue}%N.", LOGO, random);
               capitaine = random;
               chosen = true;
           }
       }
       while(!chosen);
    
       return Plugin_Continue;
    }
    

     

    et dans player_death :

    if(victim==capitaine)
       {
           CreateTimer(1.0, CheckCapitaine);
       }
    

    Lien vers le commentaire
    Partager sur d’autres sites

    Bonjour,

     

    Pour que ton chef soit actualiser à chaque fois, il ajouter a ton code plusieurs choses:

    dans l'évenement "player_death" ===> des que le chef est mort, on relance la fonction checkcapitaine

    dans l'évenement "payer_team" ===> des que le chef change de team ( mais normalement il devrait également passé par le player_death donc pas de soucis)

    dans l'évenement "round_start" ===> bien initialiser ta variable namofcapitaine

     

    Normalement avec ça cela devrait actualiser ton chef souvent. Mon plugin jail fonctionne comme ça.

     

    ajoute ca en variable :

    new capitaine;
    

     

    ensuite dans le timer checkcapitaine :

    public Action:CheckCapitaine(Handle:timer)
    {
       do 
       {
           random = GetRandomInt(1, MaxClients);
    
           if(ValidPlayer(random) && g_bWantsCaptain[random] && GetClientTeam(random) == 3)
           {
               CPrintToChatAll("%s : Le chef des gardiens est : {mediumslateblue}%N.", LOGO, random);
               capitaine = random;
               chosen = true;
           }
       }
       while(!chosen);
    
       return Plugin_Continue;
    }
    

     

    et dans player_death :

    if(victim==capitaine)
       {
           CreateTimer(1.0, CheckCapitaine);
       }
    

    OK ! Thanks ^^ je test ça dès que je peux.

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