Liste complète des différents codes disponible pour votre serveur

Très souvent des recherches sont effectuées afin de promouvoir les codes les plus utiles pour chaque type d’utilisation sur n’importe quel mode de jeu.
Gardez donc l’œil car il est certain que cette liste gonflera au fur et à mesure. encore un énorme merci a g-box anciennement un site de partage sur garry’s mod pour ces sources.

                      ce site est fait pour tout serveurs donc n’hésitez pas aussi a nous contacter par rapport aux codes si vous etes ailleurs que g-perf ! 

              Un code qui ne fonctionne plus ? Contactez-nous !

     Il est très probable qu’une mise à jour du jeu garry’s mod brise légèrement voir complètement un code, mais essayez de vérifier si l’installation du code est                        avant tout correcte, merci. De la même manière, si vous voyez une quelconque erreur dans la page, merci de nous contacter sur le discord.

Il suffit de cliquer sur les nom pour voir ces astuces ci dessous !

Cette commande assez inutile reste néanmoins un très bon moyen pour les joueurs coquins de se déplacer plus rapidement (retour au centre ville auto) ou ruiner une scène RP…

Bref rien de très agréable, voici donc un code très lite pour empêcher ce genre de gêne :

Merci à Divran pour le code !

Installation: autorun/server/no_kill_command.lua

local function BlockSuicide(ply)

    ply:ChatPrint(« *Rien ne semble se produire..* »)

    return false

end

hook.Add( « CanPlayerSuicide », « BlockSuicide », BlockSuicide )

Envie de voir des sdf dormir par terre sans rien ou d’avoir un job de monstre qui ne construit rien mais se contente d’erré dans les égouts ? bien grace a ce code basique il vous sera facile de contrôler quelle job précisément a la possibilité d’ouvrir son spawnmenu !

Merci a BobbleHead pour le code concept !

Installation: autorun/server/restrict_spawnmenu.lua

 

hook.Add(« SpawnMenuOpen », « team_resctrict_spawnmenu », function()

    local allowedJobs = {[TEAM_CITOYEN] = true, [TEAM_FLIC] = true, [TEAM_MAFIEU] = true, [TEAM_MAIRE] = true, [TEAM_CUISTOT] = true}

    return (allowedJobs[LocalPlayer():Team()] != nil)
end)

Il est très souvent reproché aux serveurs Murder de ne pas pimenter un peu plus le gameplay durant les rounds (hormis avec l’addons des power round), déja qu’attendre de devenir enfin le meurtrier demande une certaine patience en fonction du nombre de joueurs sur le serveur mais en plus au final les techniques s’enchaînent quel que soit le style du joueur.

Avec ce code vous allez avoir une bonne opportunité de rendre fidèle vos joueurs qui on l’habitude de se lassé du simple ‘couteaux’ , en fonction du grade ULX voila les nombreuse possibilités de préconfigurées : un stuff fun ou plus létal.

Merci à Handsome Matt pour son code vraiment cool !

Installation: lua/autorun/server/murder_stuff.lua

hook.Add(« PlayerLoadout », « MurderStuff », function(ply)

    ply:Give(« weapon_rp_hands »)

   

    if ply:GetMurderer() and ply:IsUserGroup(« superadmin ») then

        ply:Give(« VOTRE WEAPONS EN + »)

    elseif ply:GetMurderer() and ply:IsUserGroup(« user ») then

        ply:Give(« VOTRE WEAPONS EN + »)

    elseif ply:GetMurderer() then

        ply:Give(« weapon_mu_knife »)

    end

    return true

end)

Toutes les équipes de modération dans garry’s mod sont fatiguées de devoir se téléporter sur un nouveau joueur pour lui dire :

“Un prénom/nom rp s’il te plait merci.”

Je vous propose donc un code qui a pour concept de générer un prénom ainsi qu’un nom prédéfinis (le joueur pourra bien évidemment changer si il le désire… C’est un code juste pratique pour lutter contre la perte de temps).

Installation : autorun/server

Merci à Borris_Squad pour le code !

Installation : autorun/server/set_name.lua

Variante 1

local firstnames = { « Harry », « Benjamin », « Matthias », « Francois », « Billy », « Max », « Charle », « Patrick », « Kevin », « Titou » }

local lastnames = { « Barma », « Sigon », « Mariu », « Samme », « Beloroide », « Kitsuna », « Fabre », « Tentai », « Slimme », « Moee » }

local delay = 4 — secondes avant que le joueur ne subisse le set rpname

 

hook.Add( « PlayerInitialSpawn », « setnamerp », function(ply)

      timer.Simple(delay , function()

            ply:setRPName(table.Random(firstnames).. » « ..table.Random(lastnames))

      end)

end)

Variante 2

local firstnames = { « Harry », « Benjamin », « Matthias », « Francois », « Billy », « Max », « Charle », « Patrick », « Kevin », « Titou » }

local lastnames = { « Barma », « Sigon », « Mariu », « Samme », « Beloroide », « Kitsuna », « Fabre », « Tentai », « Slimme », « Moee » }

local delay = 4 — secondes avant que le joueur ne subisse le set rpname

hook.Add(« PlayerInitialSpawn », « setnamerp », function(ply)

    if ply:GetPData(« hasRPName », false) then return end

 

      timer.Simple(delay , function()

            ply:setRPName(table.Random(firstnames).. » « ..table.Random(lastnames))

            ply:SetPData(« hasRPName », true)

      end)

end)

 

 

Dans Garry’s Mod, un très grand panel d’outils de base est fourni, il sont tous différents les uns des autres à l’égard des caractéristiques et permettent aux joueurs de pouvoir mettre en œuvre beaucoup de systèmes plus ou moins complexes.

Les thrusters sont un outil à la fois mécanique et décoratif, ayant la particularité d’augmenter la puissance de poussée d’un objet (très pratique pour des voitures voire des bateaux). Le problème de cet outil est qu’il propose toute une variété de sons assez lourds pour la plupart… Alors ça peut se révéler fun pour une soucoupe volante, mais au bout de 20mn quand un joueur utilise un son d’ascenseur vous allez vite avoir pour habitude de resté éloigné de sa construction…

Bref voici un code qui permet de simplement mute les sons de l’outil en général 😉

Installation: lua/autorun/server/no_thruster_sounds.lua

if SERVER then

      local ShutUpThrusters = function(ent)

            if ent:GetClass() == « gmod_thruster » then

                  timer.Simple(.01, function()

                        ent.StartThrustSound = function()return end

                  end)

            end

      end

      hook.Add(« OnEntityCreated », « Thrustershit », ShutUpThrusters)

end

Très souvent inutile en PrisonRP ou toute autre déclinaison du gamemode Sandbox ce code va vous permettre d’afficher un menu conséquent en moins pour le joueur (celui ci n’en n’ayant finalement pas besoin) 

Installation: darkrp/gamemode/cl_init.lua

local function DisallowSpawnMenu( )

if not LocalPlayer():IsAdmin() then

return false

chat.AddText( Color( 255, 0, 0 ), « Menu reservé au staff du serveur ! » )

end

end

hook.Add( « SpawnMenuOpen », « DisallowSpawnMenu », DisallowSpawnMenu)

 

Marre de voir des trolls spawn sur le serveur et directement prendre un job pour freekill ou pire ? (Flic par exemple…)

Alors limitez la sélection d’un job en vérifiant le nombre de temps d’un joueur sur le serveur ! Simple et permettant de fidéliser votre communauté, ce code va vous permettre de mettre une certaine limite pour différents job… Ainsi vous serez tranquilles; quand un joueur prendra le job “Policier” ou “Maire”, cela prouvera qu’il est là depuis un bon moment (en fonction du temps minimum requis indiqué)

Pré-requis : Utime

Ensuite, dans votre job il suffit d’ajouter ce customCheck :

customCheck = function(ply) –remplacer 7200 par le nombre de seconde

      if ply:GetUTimeTotalTime() >= 7200 then

            return true

      end

end,

CustomCheckFailMsg = « Vous devez jouer «  .. string.NiceTime( 7200 ) .. » pour pouvoir prendre ce type de metier. »,

Salut à tous, pour inaugurer cette première page de la Catégorie 4 maintenant disponible dans “Codes glua cadeaux”, on va voir un code compatible à n’importe quel genre de gamemode et ici plus particulièrement pour le mode de jeu “DeathRun😀

Gamemode très drôle entre amis, où le but est simplement de finir une map remplie d’obstacles tous plus loufoques & sadiques les uns que les autres… Seul hic dans cet objectif : un des joueurs contrôle le déclenchement des machines et des pièges pouvant vous faire échouer.

De ce fait, très souvent, de nombreux fondateurs essaient de rajouter en plus de la victoire des petits bonus qui donnent envie de continuer à s’entraîner sur le serveur pour perfectionner son timing de sauts ou d’esquives… Voici donc un code en relation avec le Pointshop qui récompensera vos joueurs si ils parviennent à la victoire (à savoir tuer tous les autres joueurs pour le/les joueur(s) contrôlant les pièges et juste finir la map sans mourir pour les runners )

Merci à Combinerus pour ce code très gratifiant 

Installation: lua/autorun/server/pointshop_reward.lua

local amount = 0;

hook.Add( « PlayerDeath », « KillPoints », function( victim, weapon, killer)

    if( IsValid( killer ) and IsValid( victim ) ) then

        if( killer:IsPlayer() and victim:IsPlayer() ) then

            if ( killer:Team() == TEAM_RUNNER and victim:Team() == TEAM_DEATH ) then

                killer:PS_GivePoints( 50 );

                killer:PS_Notify(« Vous avez reçu 50 points pour avoir évité la mort ! »);

            elseif ( killer:Team() == TEAM_DEATH and victim:Team() == TEAM_RUNNER ) then

                killer:PS_GivePoints( 70 );

                killer:PS_Notify(« Vous avez reçu 70 points pour avoir tué tout le monde ! »);

            end;

        end;

    end;

end )

 

Simple comme de se frotter avec énergie contre la boîte aux lettres de son voisin, à vous de choisir entre n’avoir aucun son lors de la mort du joueur ou un son différent de l’horrible “BEEP BEEP” de base ( pour un son custom ne pas oublier de l’inclure dans un FastDL ).

Merci à CombineGuru d’avoir post ce code  simple et efficace

local function NoSound()

      return true

end

hook.Add(« PlayerDeathSound », « NoSound », NoSound)

et voici une variable si vous voulez un son custom

function GM:EntityTakeDamage(ply, info)

      if ply:Health() < 1 then

            ply:EmitSound(string.format(« soncustom.wav », math.random(1, 6)), 100, 100, 1, CHAN_BODY)

      end

end

function GM:PlayerDeathSound()

      return true

end

Fatigué de devoir faire un !cloak PSEUDO ? Ce code va donc résoudre vos problèmes de tendinite !

Essentiellement un raccourcie qui évitera de perdre du temps a votre équipe de modération qui la plupart du temps l’oublient.

hook.Add(« PlayerNoClip », « noclip_cloak », function(ply, noClipState)

        if not ply:IsAdmin() then return false end

 

        if noClipState then

            ply:SetNoDraw(true)

            ply:SetNotSolid(true)

            ply:GodEnable()

            ply:DrawWorldModel(false)

        else

            ply:SetNoDraw(false)

            ply:SetNotSolid(false)

            ply:GodDisable()

            ply:DrawWorldModel(true)

        end

 

        return true

    end)

Envie de “réalisme” pur en terme de gameplay économique ? , très bien alors ce code est fait d’office pour votre serveur ! en effet comme le nom l’indique quand un joueur mourra il perdra l’intégralité de son portefeuille..ce genre de manoeuvre permet de limité le freekill mais aussi d’inculqué une présence d’esprit vital en terme de gestion du personnage concernant le transfert d’argent ect..ect (le joueur étant alors forcé de prendre sur lui une petite somme de son compte en banque..)

Merci a Reese Roite pour la publication du code ! & et a ntrom pour le detterage du code situé dans un vieux topic du forum que moi méme je n’ai pas retrouvé 😉

Installation:  lua/autorun/server/drop_all_player_money.lua

hook.Add(« PlayerDeath », « argentmortyipicaye », function(ply)

      local amount = ply:getDarkRPVar( « money » )

      amount = math.Round(amount)

      if amount > 0 then

          ply:addMoney(amount)

          DarkRP.createMoneyBag(ply:GetPos(), amount)

      end

end)

Envie que vos joueurs bondissent comme des lapins sous cocaïne ?

Aucun problème ! Ce minuscule code va vous permettre de set la puissance de saut du personnage (permettant ainsi de ne plus le faire dans le fichier source du jeu, qui s’efface à chaque màj… Yeah ! ) et donc permettre de pouvoir avoir plus de chance de passer au-dessus des bâtiments qui normalement sont inaccessibles 😉

Installation: lua/autorun/server/bunny.lua

hook.Add(« PlayerSpawn »,« lahaut »,function ( ply )

      ply:SetJumpPower( 800)

end )

Fatigué d’entendre le même son en boucle à chacun de vos sauts ? Alors ce code va apporter un peu de fun sur votre serveur en modifiant avec goût (oupas !) le wav original ! Libre de mettre bien évidemment un son pas forcément de base dans le jeux issu de CSS ou un autre jeu valve, mais n’oubliez juste pas de l’inclure dans un fastdl 🙂 

function RemoveDeadRag( ent )

 

    if (ent == NULL) or (ent == nil) then return end

    if (ent:GetClass() == « class C_ClientRagdoll ») then

        if ent:IsValid() and !(ent == NULL) then

            SafeRemoveEntityDelayed(ent,0)

        end

    end  

end

hook.Add(« OnEntityCreated », « RemoveDeadRag », RemoveDeadRag)

Code permettant de pouvoir enfin assouvir ses envie d’event apocalyptique sans craindre une répercussion drastique sur les ressource de votre serveur ! , sentez vous mieux en observant les cadavre de vos NPC disparaître automatiquement !

Merci à Fantym420 pour ce code très sympathique !

Installation: lua\autorun\client\clear_ragdoll_npc_death

function RemoveDeadRag( ent )

 

    if (ent == NULL) or (ent == nil) then return end

    if (ent:GetClass() == « class C_ClientRagdoll ») then

        if ent:IsValid() and !(ent == NULL) then

            SafeRemoveEntityDelayed(ent,0)

        end

    end

   

end

hook.Add(« OnEntityCreated », « RemoveDeadRag », RemoveDeadRag)

 

Envie de faire un job gouvernemental qui a un style unique ? , ne cherchez plus avec ce code vous aurez le plaisir d’augmenter l’immersion du job de 500% ! .

Différent son vont être jouer a chaque mouvement du joueur afin d’avoir un rendu inhabituelle qui peux rendre le gameplay plus réaliste/loufoque (en fonction du type de serveur..).

hook.Add(« PlayerFootstep », « ChangeStepSounds », function(ply)

    if ply:Team() == TEAM_NOM then

            ply:EmitSound( « NPC_Hunter.Footstep » ) — Custom sound

            return true — Don’t allow default footsteps

    end

    if ply:Team() == TEAM_DIFFERENTE then

      ply:EmitSound( « CustomSound.mp3 » ) — Custom sound

            return true — Don’t allow default footsteps

    end

end)

Code pas forcément a mettre en oeuvre pour le gamemode Darkrp (quoi que?) il permet simplement de supprimer la totalité des entités de type “prop” sur la map , essentiellement utilisé a cause de certaine map contenant des props inutile ou néfaste .

Notez qu’il est possible d’avoir une variante pour le reste des entités  (NPC , Weapons , Ragdolls , Glass)

installation : lua/autorun/server/lenom.lua

 hook.Add("InitPostEntity", "DeleteTrash", function()
      for _,v in pairs(ents.GetAll()) do
            if string.find(v:GetClass(), "prop") then
                  SafeRemoveEntity(v)
            end
      end
end)

 

Envie de boost le groupe steam de votre communauté ? facile avec ce code qui permet de proposer au joueurs in-game de faire une simple command pour avoir un aperçu de votre groupe ou se trouve vos infos supplémentaire (TS, Discord, Forum)

Installation: lua/autorun/client/urlsay.lua

local command = "!gperf"
local url = "https://g-perf.fr"
hook.Add("OnPlayerChat","GBox_URL4Chat",function(ply, text)
if string.Trim(text) == command then
if ply == LocalPlayer() then
gui.OpenURL(url)
end
return true
end
end)

Maintenant, sur de très nombreux serveurs, un style de type “apocalypse” est en vogue, survival/horror, et nombreux sont alors confrontés à un léger souci sur les maps pas forcément créées dans l’idée de ce genre de gameplay…

Le style de jeu se veux très dark mais du coup certaines map imposent malgré elles le “soleil” dans le ciel, viens alors le compromis pénible de devoir prendre un cycle jour/nuit.

Néanmoins, grâce a ce simple code un peu hors norme, il vous sera possible de désactiver (ou enlever, voire détruire, cela dépend de votre point de vue 😉) l’affichage du soleil sans forcément passer par l’entité sun_edit.

Notez que ce code peut aussi servir à supprimer ce visuel un poil gênant 🙂 (gm_construct par exemple, où il ne sert à rien…)

Merci à ZIgnorant pour ce code qui ne n’a pas besoin d’avoir un serveur sous sv_cheats 1 ! 

Installation: lua/autorun/soleil.lua

hook.Add(« InitPostEntity », « sun remove », function()

      local aSuns = ents.FindByClass(« env_sun »)

      for i = 1, #aSuns do

            aSuns[i]:Remove()

      end

end)

Voilà un code qui peut paraître ridicule au vue de sa longueur mais qui confère un grand soutien pour une équipe de modération d’un petit serveur.

Ce code va vous permettre d’avoir un antipropkill basique, sans option, via panel ou fichier config (le GhostProps par exemple s’avère assez pénible dans les serveurs darkrp). Mais notez qu’il est conseillé de l’utiliser dans un serveur assez basique (Sandbox par exemple ou Murder voire TTT), après à vous de voir… Le code n’étant pas infaillible, il est juste là pour pouvoir offrir un minimum de sécurité contre le propkilling brute.

Installation: lua/autorun/server/no_propkill.lua

hook.Add(« EntityTakeDamage », « AntiPropKilldeluxe », function( target, dmginfo )

      local attacker = dmginfo:GetAttacker()

      if attacker:GetClass() == « prop_physics » then

            dmginfo:SetDamage(0)

      end

end)

Marre des joueurs qui traine par terre depuis la dernière fusillade en ville ou qui sont simplement afk après un raid foiré contre le gang le plus célèbre du serveur ? ..alors ce code seras la solution à ce type de problématique

Un grand merci à Stanstar22 pour son code très complet

Installation: lua/autorun/force_respawn.lua

function autoRespawn( ply )

    timer.Simple( 1, function()

        if !ply:Alive() then

            ply:Spawn()

        end

    end )

end

hook.Add( « PlayerDeath », « autoRespawn », autoRespawn )

 

Voici des codes très intéressants permettant d’avoir un ajout supplémentaire pour des serveurs au concept “réaliste”.

Leur effet, à la mort du joueur, consiste à ce qu’il perde non seulement la totalité de son argent (comme avec un autre code, disponible sur g-box :)), mais aussi ses props, véhicules et bien évidemment ses propriétés (portes si vous préférez).

Installation: lua/autorun/server/nlrsystem.lua

Un grand merci à Jayhook pour son code, qui, à la suite d’un MP, a délivré une version encore plus complète que celle de base 😉 

— Permet de définir tout les hooks relatifs au spawn d’entités pour permettre l’ajout de l’entité spawn à la liste d’entités à nettoyer à la mort du joueur

local hooks = {

    PlayerSpawnedVehicle = {ply=1, ent=2},

    PlayerSpawnedProp = {ply=1, ent=3}

}

 

— Sert à ajouter les hooks définits dans la variable précédente

for h, ents in pairs(hooks) do

    hook.Add(h, « JayCleanUp », function()

        local args = {}

        local ply = args[ents.ply]

        if not ply.JayCleanUp then ply.JayCleanUp = {} end

        ply.JayCleanUp[#ply.JayCleanUp + 1] = args[ents.ent]

    end)

end

 

— Code de base auquel j’ai ajouté la fonctionnalité de supprimer les entités ajoutées dans la variable ply.JayCleanUp

hook.Add(« PostPlayerDeath », « JayCleanUp », function(ply)

    for _, ent in pairs( ents.GetAll() ) do

        if IsValid(ent) and ent:isDoor() then ent:keysUnOwn(ply) end

    end

    for _, ent in pairs(ply.JayCleanUp or {}) do

        if IsValid(ent) then ent:Remove() end

    end

    ply.JayCleanUp = nil

end)

voici une deuxieme alternative

hook.Add(« PlayerDeath », « RemovePropsAndDoors », function(ply)

    for _, ent in pairs( ents.GetAll() ) do

        if ent:GetClass() == « prop_physics » then

            if ent:CPPIGetOwner() == ply then

                ent:Remove()

            end

        end

 

        if ent:isDoor() && ent:isKeysOwned() then

            if ent:getDoorOwner() == ply then

              ent:keysUnOwn(ply)

          end

        end

    end

end)

 

Quand on a un serveur avec la possibilité de spawn des props, il peut s’avérer que la commande “gm_spawn” soit problématique… En effet, entre le fait de spamprops pour mettre à mal votre serveur ou d’avoir des joueurs préférant troll en spawnant un meuble assez massif très rapidement, il y a de quoi devenir dingue…

Voilà donc des codes très intéressants qui peuvent servir à sécuriser votre serveur, ou mieux encore, à avoir un rendu plus réaliste (concernant uniquement les mode de jeux roleplay).

Installation: lua/autorun/client/gm_spawn_system
Merci à Mista Tea pour le partage public du code

hook.Add( « PlayerBindPress », « BlockGMSpawnBinds », function( _, bind )

    if ( string.find(string.lower(bind), « gm_spawn ») ) then

        LocalPlayer():PrintMessage( HUD_PRINTTALK, « *Action impossible* » )

        return true

    end

end)

Merci à Giraffen93 pour la publication du code (2eme variante)

local canspawn = {

      [« admin »] = true,

      [« superadmin »] = true,

}

hook.Add(« PlayerSpawnProp », « MaksStopGmSpawn », function(ply)

      if not canspawn[ply:GetUserGroup()] then

            ply:PrintMessage(HUD_PRINTTALK,« *Action impossible* »)

            return false

      end

end)

 

Fait intéressant a remarquer sur garrys mod durant vos sessions vous avez sans doute remarquer que quand votre joueur est en feu il est inutile de plonger dans un lac puisque une fois dans l’eau absolument rien ne se passe (si ce n’est que votre joueur continue de prendre des dégâts..) de même et bien évidemment les NPC

Voici donc le code nécessaire pour ajouter le réalisme évident des lois de la nature 😉

local CurTime = CurTime

local ents_GetAll = ents.GetAll

 

local flNextCheckTime = 0

 

hook.Add(« Tick », « WaterExtinguish », function()

    local flCurTime = CurTime()

   

    if (flNextCheckTime <= flCurTime) then

        flNextCheckTime = flCurTime + 0.2 — Check every 0.2 seconds..

       

        local tEntities = ents_GetAll()

       

        for i = 1, #tEntities do

            if (tEntities[i]:IsOnFire() and tEntities[i]:WaterLevel() == 3) then

                tEntities[i]:Extinguish()

            end

        end

    end

end)

Dans certains modes de jeu disponibles sur Garry’s Mod, pas mal de fondateurs apprécient de pouvoir resctrict des fonctions du joueur un peu plus poussées que simplement ‘Réduire la vitesse de marche‘.

Ce ne sont pas forcément le genre de fonctions qui s’adressent à n’importe quel type de serveur mais dans un contexte précis il peut s’avérer plutôt utile (comme un job n’ayant pas la possibilité de sauter car il n’a pas de jambes à proprement parler, visuellement).

Bref à vous de voir en attendant je crois qu’il est nécessaire que ce code soit libre à la sélection pendant votre configuration 😉

local CMoveData = FindMetaTable( « CMoveData » )

 

function CMoveData:RemoveKeys( keys )

      — Using bitwise operations to clear the key bits.

      local newbuttons = bit.band( self:GetButtons(), bit.bnot( keys ) )

      self:SetButtons( newbuttons )

end

 

hook.Add( « SetupMove », « NoJump », function( ply, mvd, cmd )

      if mvd:KeyDown( IN_JUMP ) then

            mvd:RemoveKeys( IN_JUMP )

      end

end )

Salut à toi, jeune amateur de la configuration DarkRP 🙂 !

Marre du HUD de base HL2 avec ses divers effets sur l’écran, comme l’indicateur de dommages ou poison ? Alors dans ce cas il te faut ce code absolument indispensable et très pratique du fait qu’il est possible d’indiquer plusieurs éléments récurrents qui pop sur l’écran des joueurs.

Petit panel du chat vocal ainsi que l’armure sont aussi de la partie, ce code est très pratique si dans un HUD personnalisé il n’existe pas dans le code la fonctionnalité de cacher l’HUD de base.

Voilà le code, je me permet aussi d’inclure une petite liste des différent éléments du jeux, bonne config 😉 !

local tab = {

      [« CHudDamageIndicator »] = true,

      [« CHudHealth »] = true,

      [« CHudAmmo »] = true,

      [« CHudSecondaryAmmo »] = true

}

 

hook.Add(« HUDShouldDraw », « HideOldie », function(name)

      return tab[name]

end)

CHudAmmo = Munitions

CHudSecondaryAmmo = Munitions secondaires (grenades SMG, AR2 energy balls)

CHudBattery = L’armure

CHudHealth = Compteur de Santé

CHudChat = Chatbox de base

CHudCrosshair = Sélection des swep par défaut (“weapon selector“)

CHudDamageIndicator = Indications des dommages (4 angles différents de l’écran)

CHudDeathNotice = Indicateur de kills en haut a droite (kill feed)

CHudPoisonDamageIndicator = Indicateur de dommages de type ‘poison’ (Headcrab toxique pour les joueurs d’Half-Life 2)

CHudSquadStatus = Indicateur de followers (NPCs)

CHudZoom = Zoom Screen

NetGraph = Informations relatives aux performances client/serveur

CAchievementNotificationPanel = Panel des succès steam (?)

CHudVoiceStatus & CHudVoiceSelfStatus = Éléments s’affichant quand le joueur parle avec son micro dans le jeu

CHudCommentary = Commentaires de l’équipe de Valve de la démo du moteur Source

Envie de diversité ? , grâce à ce code extensible votre serveur se verra peuplé d’une multitude de physguns aux couleurs toutes plus ou moins colorées en fonction du grade du joueur concerné !

Installation: lua/autorun/server/colorphysgun.lua

local ranks = {}

local function AddExtraRank(id,col)

    ranks[id] = {}

    ranks[id].Color = col

end

   

AddExtraRank(« superadmin »,Color(255,0,0))

AddExtraRank(« admin »,Color(0,0,255))

AddExtraRank(« user »,Color(0,128,255)) — don’t remove these three. just add more as necessary.

 

local function GetRankPhysgunColor(ply)

    if ucl then — I took this code from a join colour thing I made in another thread a while back.

        if ranks[ply:GetUserGroup()] then

            return ranks[ply:GetUserGroup()].Color

        else

            return Color(255,255,255)

        end

    else

        if ply:IsSuperAdmin() then

            return ranks[« superadmin »].Color

        elseif ply:IsAdmin() then

            return ranks[« admin »].Color

        else

            return ranks[« user »].Color

        end

    end

end

 

hook.Add( « PlayerSpawn », « AdminPhysgunCol », function( ply )

    local color = GetRankPhysgunColor(ply)

    timer.Create(« setphysguncolour »,0.1,1,function()

    ply:SetWeaponColor(Vector(color.r / 255, color.g / 255, color.b / 255))

    end)

end)

 

hook.Add( « PlayerInitialSpawn », « AdminPhysgunCol2 », function( ply )

    local color = GetRankPhysgunColor(ply)

    timer.Create(« setinitialphysguncolour »,0.1,1,function()

    ply:SetWeaponColor(Vector(color.r / 255, color.g / 255, color.b / 255))

    end)

end)

 

Vous connaissez surement le code permettant de perdre la totalité en terme de bien monétaire d’un joueur mais cela vous parait trop radical ? ,

Pas de problèmes le glua offre des possibilités quasi infini et donc un code bien plus adapté a votre demande à savoir perdre une somme d’argent en fonction d’un certains pourcentage (comme une sorte de drop d’argent faussement aléatoire en laissant a terre par exemple 20% de votre portefeuille) permet d’offrir a votre serveur une réel gestion de l’argent

Installation : autorun/server/death_money.lua

Mercià  Maks pour le code <3

hook.Add(« DoPlayerDeath »,« dropTheMoneyBitches »,function(ply)

    local money = ply:getDarkRPVar(« money »)

    if money == 0 then return end

    local toPay = math.ceil(50 / 100 * money) — formule magique des pourcentages

    ply:addMoney(toPay)

    DarkRP.createMoneyBag(ply:GetPos(), toPay)

end)

Très prisée en Darkrp ou en Sandbox, cette fonctionnalité l’est beaucoup moins quand les fondateurs sont obligés d’installer des addons supplémentaire pour évité le drop d’armes dangereuses une fois dans les mains d’un joueur (exemple: Nuke), sans oublier la problématique de gestion pendant les events, voire pour certains types de job (c’est néanmoins configurable dans le setting.lua).

Voici donc un code très basique permettant de blacklist une sélection au choix des armes que le joueur ne pourras pas faire tomber !

Amusez-vous bien et surtout bonne optimisation 🙂

local PLAYER = FindMetaTable(« Player »)

local fDropWeapon = PLAYER.DropWeapon

 

local tBlacklist = {

   weapon_nuke_M9K = true,

   weapon_fusrodah = true

}

 

function PLAYER:DropWeapon(pWeapon)

   if (not tBlacklist[pWeapon:GetClass()]) then

      fDropWeapon(self, pWeapon)

   end

end

Alors le Propclimb que ce que c’est ? ;

Une manipulation simple a réaliser qui permet au joueur de ne pas tenir compte de la physique réaliste du moteur Source en exploitant l’utilisation des props afin d’atteindre le toit d’un bâtiment normalement inaccessible ou juste passer outre un obstacle (des murs / véhicules utilitaire ) .

Dans quels gamemodes le PropClimbing est-t-il néfaste principalement ? ;

Darkrp > détruit l’immersion ainsi que le réalisme , triche concernant les printers/meth.

Murder > Permet de faire des rounds quasi-infini (troll).

Zombie Survival (ZS) Rounds wins abuse , Permet de faire des cades indesctructible.

 

Bref maintenant le fix !
Installation: lua/autorun/server/no_props_climb.lua

hook.Add(« ShouldCollide », « Player.Stuck », function(entity1, entity2)

      if entity1:IsValid() and entity2:IsValid() then

            if entity1:IsPlayer() or entity2:IsPlayer() then

                  if string.match(entity1:GetClass(), « prop_physics* ») or string.match(entity2:GetClass(), « prop_physics* ») then

                        if entity1:GetPhysicsObject():IsPenetrating() != false or entity2:GetPhysicsObject():IsPenetrating() != false then

                              return false

                        end

                  end

            end

      end

end)

 

Désireux de pouvoir mettre en œuvre un job ne pouvant faire aucun dégat ? (Job SDF par exemple)

Alors voici un code assez intéressant permettant d’indiquer la TEAM qui ne pourra pas faire de dégâts de type “agressif” envers les autres… Ah, et pour les gens qui cherchent une solution pour qu’il ne puissent même pas prendre d’armes, voila en bonus un autre code, couplé à celui qui empêche les dégâts 😉 .

Merci à Greetings pour le code ! 

local dmgJobs = { — TEAM ne pouvant pas attaquer

      TEAM_ONE = true,

      TEAM_TWO = true,

}

hook.Add( « EntityTakeDamage », « BlockDamageForTeam », function(target, dmg)

      local attacker = dmg:GetAttacker()

      if target:IsPlayer() and attacker:IsPlayer() and dmgJobs[attacker:Team()] then

            return false

      end

end)

 

 je vous propose ce code minuscule qui fait exactement l’équivalent du tutoriel mais en plus rapide 🙂

Rien de bien consistant à décrire, si ce n’est que seul les staffs seront en mesure de l’ouvrir… Pratique pour un PrisonRP qui désire être clean de ce genre de menus inutiles !

hook.Add(« ContextMenuOpen », « DisallowContextMenu », function()

      if !(LocalPlayer():IsAdmin() or LocalPlayer():IsSuperAdmin()) then

            return false

      end

end)

Un code très pratique pour que chaque membre de la modération du serveur soit capable de prendre un job roleplay tout en pouvant noclip (le fameux job ‘Staff of Duty‘) , le code permet de part son intuitivité d’ajouter autant de groupes ulx que possible (modo, vip , …N’importe quel groupe peut avoir un accès au noclip)

Merci à Zaros pour ce code très sexy

Installation: lua/autorun/server

local groupsuperadmin = {

    [« superadmin »] = true,

    [« admin »] = true

}

 

local jobautorisation = {

    [TEAM_ADMIN] = true

}

 

hook.Add(« PlayerNoClip », « NCOnJobOnly », function(ply)

    if groupsuperadmin[ply:GetUserGroup()] then return true end

    if not jobautorisation[ply:Team()] then return false end

end)

 

Si votre serveur comporte plusieurs groupes ULX et que vous désirez, par exemple, give le physgun uniquement dans le stuff des VIP’s alors ce code va vous permettre de le faire très simplement 😉 !

Merci a Arnold0 pour le partage ! 

local GiveToGroups = {

    [‘VIP’] = true,

    [‘VIP+’] = true,

}

 

local WeaponsToGive = {

    « weapon_physgun »,

}

 

hook.Add( « PlayerSpawn », « GiveMeMyWeaponsThx », function (ply)

    if GiveToGroups[ply:GetUserGroup()] then

        for k,v in pairs(WeaponsToGive) do

            ply:Give(v)

        end

    end

end)

 

Les insultes ne sont jamais vraiment un problème sur un serveur de jeu..néanmoins il est plus agréable de lire un chat un minimum propre de toute offense , bien évidemment il est impossible de censurer la totalité des injures..mais ce code permet de vous soulager d’en lire pas mal au final 😉

Merci à Zaros & Maks pour le partage ! 

local badWords = {

    « fdp »,

    « fils de pute »,

    « pd »,

    « pédé »,

    « ntm »,

    « nique ta mere »,

    « nik ta mer »,

    « nik ta mere »,

    « nike t3 m4re »,

    « salope »,

    « sal0pe »,

    « connard »,

    « c0nnard »,

    « connar »,

    « c0nnar »,

    « connare »,

    « c0nnare »,

    « tg »,

    « tageul »,

    « tagueule »,

    « tagueule »,

}

 

hook.Add(« PlayerSay », « NoBadWords », function(ply, text)

    local newText = text

    for _, bad in pairs(badWords) do

        if (string.find(text:lower(), bad)) then

            newText = string.Replace(text, bad, « [Whoops] »)

        end

    end

    if newText ~= text then

        ply:ChatPrint(« Attention à votre vocabulaire! »)

        return newText

    end

end)

 

Simple code qui permet de désactiver les dégâts de chutes ! , a noter qu’il est possible de simplement glisser une commande dans le server.cfg (mp_falldamage “0”)

Merci a meharryp pour le partage !

hook.Add(« GetFallDamage », « OverwriteFallDamage », function(ply, speed)

  return 0

end)

 

La plupart du temps des joueurs qui désirent spamprops pour diverses raisons (crash le serveur, gêner les autres) ne sont pas très futés et gogolisent leur touche bind avec la command gm_spawn ou via leur souris dans le spawn menu voir l’outil ‘duplicator’,

Voici donc une solution simple qui allégera la surveillance de vos admins puisque le joueur qui spam va être automatiquement mis en jail avec un message d’avertissement

Merci  Maks !

local numberProps = 10 — Combien de props la personne peux spawn par seconde avant de se faire gicler

local timeToJail = 700

local messageToDisplay = « WOW WOW WOW DU CALME ! »

local varToSpam = {}

local function checkSpam(ply)

      varToSpam[ply] = ( varToSpam[ply] or 0 ) + 1

      timer.Simple(1, function()

            varToSpam[ply] = varToSpam[ply] 1

      end)

      if varToSpam[ply] > numberProps then

            RunConsoleCommand(« ulx »,« jail »,ply:Nick(),timeToJail)

            ply:PrintMessage(HUD_PRINTCENTER,messageToDisplay)

            timer.Create(« calmeTonSpamProps »,5,math.floor(timeToJail/5)1,function()

                  ply:PrintMessage(HUD_PRINTCENTER,messageToDisplay)

            end)

      end

end

hook.Add(« PlayerDisconnected »,« Le_spam,_c’est_mal »,function(ply)

      if varToSpam[ply] then

            varToSpam[ply] = nil

      end

end)

hook.Add(« PlayerSpawnVehicle »,« Le_spam,_c’est_mal », checkSpam)

hook.Add(« PlayerSpawnRagdoll »,« Le_spam,_c’est_mal », checkSpam)

hook.Add(« PlayerSpawnProp »,« Le_spam,_c’est_mal », checkSpam)

hook.Add(« PlayerSpawnObject »,« Le_spam,_c’est_mal », checkSpam)

hook.Add(« PlayerSpawnEffect »,« Le_spam,_c’est_mal », checkSpam)

 

Code très intéressant pour encore une fois mettre à mal les petit malins qui s’amusent à embêter les propriétaires de logement ou magasin , il permet grossièrement d’empêcher un joueur de cliquer très rapidement sur une porte pour que celle ci ne soit jamais possible à refermer (à moins que le résident se lasse ou ne tue le joueur) .

Ce code fonctionne parfaitement pour du roleplay qui se veut un minimum sérieux et a la particularité d’être très aisément réglable !

Merci à swag.exe pour le partage de la version du code valide !

Installation: lua/autorun/server/no_doors_abuse.lua

hook.Add( « PlayerUse », « NoDoorSpam », function( ply, ent )

 

    if ent:GetClass() == « prop_door_rotating » || ent:GetClass() == « func_door_rotating » || ent:GetClass() == « func_door » then

 

        if !ent.LastDoorUse or CurTime() ent.LastDoorUse > 2 then

 

            ent.LastDoorUse = CurTime()

            // don‘t return true here because it will break other things like DarkRP ownership stuff

 

        else

            return false

        end

 

    end

 

end )

 

Les animations possibles via certains mots-clef sont très sympathique (bien que peu nombreuses) mais sont plutôt hors contexte dans certains thème abordés sur un serveur différent..voilà donc un minuscule code permettant simplement de ne pas lancer un act command.

Merci à  bayrock !

Installation: lua/autorun/autorun/no_act_commands.lua

hook.Add(« PlayerShouldTaunt », « DisableActs », function()

  return false

end)

 

Le réalisme en DarkRP est un élément essentiel pour l’immersion dans un mode persistant mais le problème avec les maps roleplay c’est que trop souvent les murs ou portes ne sont pas bien insonorisées…

Le code va permettre à vos joueurs de pouvoir vivre une réel intimitée dans les divers lieux qu’il occupe 🙂

Installation: lua/autorun/server/no_meta_wall.lua

local function NewSpeakerSky(listener, talker)

    if listener:GetPos():Distance( talker:GetPos() ) > 750 then return false end

    local tr = util.TraceLine( {

    start = talker:GetPos() + Vector(0,0,50),

    endpos = listener:GetPos() + Vector(0,0,50),

    mask = 131083,

    } )

    if tr.HitWorld then

        return false

    else

        return true

    end

end

hook.Add( « PlayerCanHearPlayersVoice », « NewSpeakerSky », NewSpeakerSky)