Prop limit différente par rapport au job

  • Initiateur de la discussion
Firyo89

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)
 
Garry's French

Garry's French

Geek
Messages
113
Score réaction
20
Points
55
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)
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/ <-
 
Dernière édition:
  • J'aime
Réactions: Firyo89
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Garry'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/ <-
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)
 
  • J'aime
Réactions: Garry's French
Garry's French

Garry's French

Geek
Messages
113
Score réaction
20
Points
55
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)
;) 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é...
 
  • J'aime
Réactions: NoaGamingFR
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
Garry'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/ <-
Le code ne fonctionnera pas puisque il y’a une erreur

Garry'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é...
lua/autorun/server/lefichierquetuveux.lua
 
  • J'aime
Réactions: Garry's French
Garry's French

Garry's French

Geek
Messages
113
Score réaction
20
Points
55
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
  • J'aime
Réactions: NoaGamingFR et Garry's French
Garry's French

Garry's French

Geek
Messages
113
Score réaction
20
Points
55
thepsyca à dit:
hook.Add il manque la ) de fin
Et merde ... Bon je le remet... J'avais pas vu merci à toi !
 
  • J'aime
Réactions: NoaGamingFR
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
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.
 
  • J'aime
Réactions: Garry's French
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
While 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.
Donc comment faire ? :x
 
  • J'aime
Réactions: Garry's French
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
  • J'aime
Réactions: Garry's French et NoaGamingFR
Garry's French

Garry's French

Geek
Messages
113
Score réaction
20
Points
55
Capture.PNG
Normalement le code c'est ça
@thepsyca @NoaGamingFR
 
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Garry's French à dit:
Regarde la pièce jointe 8517Normalement le code c'est ça
@thepsyca @NoaGamingFR
Je go test desuite.
 
Garry's French

Garry's French

Geek
Messages
113
Score réaction
20
Points
55
  • J'aime
Réactions: NoaGamingFR
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Garry's French à dit:
Regarde la pièce jointe 8517Normalement le code c'est ça
@thepsyca @NoaGamingFR
Donc si je veut 10props max pour les taxi?
 
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
thepsyca à dit:
Uniquement renvoyer des false j’imagine
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 GM: PlayerSpawnProps (celle qui vérifie la limite).
Cela donnerait là à peu près :
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)
La deuxième façon serait de modifier GM: PlayerSpawnProp directement pour inclure tes vérifications, mais dans ce cas il faut savoir ce que tu fais.
 
  • J'aime
Réactions: thepsyca
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
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 GM:playerSpawnProps (celle qui vérifie la limite).
Cela donnerait là à peu près :
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)
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.
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
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
NoaGamingFR à 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
props_limit = 10, dans la création du métiers team_x jobs.lua
 
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
thepsyca à dit:
props_limit = 10, dans la création du métiers team_x jobs.lua
J'ai pas compris :x
 
thepsyca

thepsyca

Psychopathe
Messages
2 164
Score réaction
648
Points
365
NoaGamingFR à dit:
J'ai pas compris :x
Dans ton jobs.lua pour chaque jobs tu rajoute : props_limit = 10,
 
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
thepsyca à dit:
Dans ton jobs.lua pour chaque jobs tu rajoute : props_limit = 10,
:eek: j'essai ça, merci :eek:
 
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Don't work :(
 
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
Laisse moi deviner t'as testé via le stacker ou un autre tool ? (il faut utiliser un autre hook si on veut que ça marche avec les tools)
 
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
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
 
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
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
Comment réstreindre à certains jobs..
 
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
Comme avant, dans jobs.lua, tu ajoute pour chaque métier que tu veux limiter (ou délimiter)
Code:
props_limit = 5,
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_maxprops

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

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
While True à dit:
Comme avant, dans jobs.lua, tu ajoute pour chaque métier que tu veux limiter (ou délimiter)
Code:
props_limit = 5,
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_maxprops

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.
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..
Aucune erreur, le job fonctionne!
 
Discord d'entraide
Rejoignz-nous sur Discord