- Initiateur de la discussion
Firyo89
Geek suprême
- Messages
- 572
- Score réaction
- 123
- Points
- 170
Salut, je voudrais faire en sorte que TEAM_MONSIEUR et TEAM_MADAME puisse avoir une prop limit plus élever que les autres jobs (DarkRP)
Firyo89 à dit:Salut, je voudrais faire en sorte que TEAM_MONSIEUR et TEAM_MADAME puisse avoir une prop limit plus élever que les autres jobs (DarkRP)
Wow, intèrèssant, j'èspère avoir une réponse positive sur ce codeGarry's French à dit:Bon je suis pas trop sur de moi, mais bon autant essayer, j'ai trouver ceci sur un forum anglais :
local function propGroups( ply, mdl )
if ply:Team() == Users then
return ply:GetCount("props") < 200
elseif ply:Team() == Moderators then
return ply:GetCount("props") < 300
else return false
end
end
hook.Add( "PlayerSpawnProp", "propgrewps",propGroups
Alors entre les parenthèses de if ply:Team()(sur l'exemple au dessus) tu met le nom enfin le TEAM_MONSIEUR ou autre et puis tu change le nombre maximal de props avec return ply:GetCount("props") < 200 (sur l'exemple au dessus)à la place du 200, elseif ply:Team() == Moderators then
return ply:GetCount("props") < 300
ce code tu va le changer pour dire en gros, si le joueur est genre policier, max de props 300 (ou autre) à changer comme l'autre
Bon j'éspère que j'ai bien expliquer au pire tu me dit ce que tu as pas compris que je réexplique, bon courage à toi !
PS: tu trouvera d'autres infos et le positionement des code ici -> https://gmod.facepunch.com/f/gmoddev/mmym/Prop-limits/1/ <-
NoaGamingFR à dit:Wow, intèrèssant, j'èspère avoir une réponse positive sur ce code
Merci @Garry's French j'attend de voir s'il fonctionne (flemme de tester)
Le code ne fonctionnera pas puisque il y’a une erreurGarry's French à dit:Bon je suis pas trop sur de moi, mais bon autant essayer, j'ai trouver ceci sur un forum anglais :
local function propGroups( ply, mdl )
if ply:Team() == Users then
return ply:GetCount("props") < 200
elseif ply:Team() == Moderators then
return ply:GetCount("props") < 300
else return false
end
end
hook.Add( "PlayerSpawnProp", "propgrewps",propGroups
Alors entre les parenthèses de if ply:Team()(sur l'exemple au dessus) tu met le nom enfin le TEAM_MONSIEUR ou autre et puis tu change le nombre maximal de props avec return ply:GetCount("props") < 200 (sur l'exemple au dessus)à la place du 200, elseif ply:Team() == Moderators then
return ply:GetCount("props") < 300
ce code tu va le changer pour dire en gros, si le joueur est genre policier, max de props 300 (ou autre) à changer comme l'autre
Bon j'éspère que j'ai bien expliquer au pire tu me dit ce que tu as pas compris que je réexplique, bon courage à toi !
PS: tu trouvera d'autres infos et le positionement des code ici -> https://gmod.facepunch.com/f/gmoddev/mmym/Prop-limits/1/ <-
lua/autorun/server/lefichierquetuveux.luaGarry's French à dit:tkt pas moi aussi mdrr mais normalement le code dit les bonnes choses c'est censé marcher, il faux que je trouve ou le placé...
laquelle ?thepsyca à dit:Le code ne fonctionnera pas puisque il y’a une erreur
hook.Add il manque la ) de finGarry's French à dit:laquelle ?
Et merde ... Bon je le remet... J'avais pas vu merci à toi !thepsyca à dit:hook.Add il manque la ) de fin
Donc comment faire ? :xWhile True à dit:Et renvoyer "vrai" dans ce hook est une très mauvaise idée car contourne tous les autres hooks de cet événement, donc possiblement supprime la vérification du model, et autres. En gros un gars pourrait spam des models blacklistés par FAdmin par exemple.
Uniquement renvoyer des false j’imagineNoaGamingFR à dit:Donc comment faire ? :x
Je go test desuite.Garry's French à dit:Regarde la pièce jointe 8517Normalement le code c'est ça
@thepsyca @NoaGamingFR
NoaGamingFR à dit:Je go test desuite.
Donc si je veut 10props max pour les taxi?Garry's French à dit:Regarde la pièce jointe 8517Normalement le code c'est ça
@thepsyca @NoaGamingFR
Ca ne fonctionnera pas.thepsyca à dit:Uniquement renvoyer des false j’imagine
local function checkPropLimit( ply, mdl ) local jobTable = ply:getJobTable() if ply:GetCount("props") < (jobTable.props_limit or 50) then -- props_limit doit etre défini dans les jobs return true end
end
hook.Add( "PlayerSpawnProp", "JobSpawnProp", checkPropLimit, HOOK_LOW)
Nice ducoup si je prend ton premier code, comment je limite par exemple un job : team_x à 10props et team_xx à 25props ?While True à dit:Ca ne fonctionnera pas.
T'as deux façons possibles :
Si tu as ULX (ULib), utiliser le système de hooking de ULX et leur principe de priorité (ici HOOK_LOW) le principe étant d'être exécuté après toutes les vérifications des autres addons, mais juste avant la fonction GMlayerSpawnProps (celle qui vérifie la limite).
Cela donnerait là à peu près :
La deuxième façon serait de modifier directement pour inclure tes vérifications, mais dans ce cas il faut savoir ce que tu fais.Code:local function checkPropLimit( ply, mdl ) local jobTable = ply:getJobTable() if ply:GetCount("props") < (jobTable.props_limit or 50) then -- props_limit doit etre défini dans les jobs return true end end hook.Add( "PlayerSpawnProp", "JobSpawnProp", checkPropLimit, HOOK_LOW)
props_limit = 10, dans la création du métiers team_x jobs.luaNoaGamingFR à dit:Nice ducoup si je prend ton premier code, comment je limite par exemple un job : team_x à 10props et team_xx à 25props ?
EDIT: lua/autorun/server
J'ai pas compris :xthepsyca à dit:props_limit = 10, dans la création du métiers team_x jobs.lua
Dans ton jobs.lua pour chaque jobs tu rajoute : props_limit = 10,NoaGamingFR à dit:J'ai pas compris :x
j'essai ça, mercithepsyca à dit:Dans ton jobs.lua pour chaque jobs tu rajoute : props_limit = 10,
-- https://github.com/Facepunch/garrysmod/blob/5b0c1fb660d7d169e4ff8d128691d0620a6307c7/garrysmod/gamemodes/sandbox/gamemode/player_extension.lua#L9-L24
local meta = FindMetaTable( "Player" )
function meta:CheckLimit( str ) -- No limits in single player if ( game.SinglePlayer() ) then return true end local c = cvars.Number( "sbox_max" .. str, 0 ) -- Custom props limit based on jobs (DARKRP ONLY) if str == "props" then c = self:getJobTable().props_limit or c end if ( c < 0 ) then return true end if ( self:GetCount( str ) > c - 1 ) then if ( SERVER ) then self:LimitHit( str ) end return false end return true
end
Comment réstreindre à certains jobs..While True à dit:Petit update, en cherchant un peu je suis tombé sur ça :
https://github.com/Mista-Tea/improv...ns/gmod_tool/stools/stacker_improved.lua#L680
Il est donc impossible de contourner la limite sans modifier la fonction PLAYER:CheckLimit
Voici donc le code :
Code:-- https://github.com/Facepunch/garrysmod/blob/5b0c1fb660d7d169e4ff8d128691d0620a6307c7/garrysmod/gamemodes/sandbox/gamemode/player_extension.lua#L9-L24 local meta = FindMetaTable( "Player" ) function meta:CheckLimit( str ) -- No limits in single player if ( game.SinglePlayer() ) then return true end local c = cvars.Number( "sbox_max" .. str, 0 ) -- Custom props limit based on jobs (DARKRP ONLY) if str == "props" then c = self:getJobTable().props_limit or c end if ( c < 0 ) then return true end if ( self:GetCount( str ) > c - 1 ) then if ( SERVER ) then self:LimitHit( str ) end return false end return true end
props_limit = 5,
Bah dans mon darkmodification, j'ai modifié le jobs.lua j'ai rajouté le props_limit, mais j'en pose plus que 5 que j'avais mit pour tester..While True à dit:Comme avant, dans jobs.lua, tu ajoute pour chaque métier que tu veux limiter (ou délimiter)
Pas obligé de le mettre pour chaque métier, si tu ne définis pas la valeur, il prendra la valeur par défaut sbox_maxpropsCode:props_limit = 5,
Il faut que le snippet ci-dessus soit exécuté en 'shared', donc dans /lua/autorun/fichier.lua ou alors envoyé au client par AddCSLua etc.