" Mode Maintenance "

  • Initiateur de la discussion
Nono4iOS

Nono4iOS

Geek
Messages
141
Score réaction
9
Points
85
Bonjour,
étant donné que j'ai actuellement un serveur en développement, j'aimerais avoir si possible un mode maintenance.

Je m'explique, quand je tape une certaine commande dans le tchat, bah que le serveur ne sois plus joignable a part pour les superadmin.

et que le joueur qui souhaite rejoindre le serveur aient un message du genre : " Une maintenance est en cours merci de passer plus tard. "

Merci d'avance !
 
ALTA

ALTA

Geek suprême
Messages
449
Score réaction
212
Points
150
-snip- trouvé une solution


je te fait ça en 5min.
 
  • J'aime
Réactions: Yoh Sambre ♪
  • Initiateur de la discussion
Nono4iOS

Nono4iOS

Geek
Messages
141
Score réaction
9
Points
85
ALTA à dit:
-snip- trouvé une solution


je te fait ça en 5min.
Bah je veux bien
et si possible que en refaisant la commande, sa le désactive sans a avoir reeboot
 
AyZenSantos

AyZenSantos

Psychopathe
Messages
3 361
Score réaction
753
Points
300
ALTA à dit:
-snip- trouvé une solution


je te fait ça en 5min.
c'est dure à faire nan ?
 
ALTA

ALTA

Geek suprême
Messages
449
Score réaction
212
Points
150
Code:
function modeMaintenance(ply,args) if not table.HasValue({"superadmin"},ply:GetUserGroup()) then return "" end if GetGlobalBool("maintenance") then SetGlobalBool("maintenance",false) PrintMessage(HUD_PRINTTALK,"Le superadministrateur "..ply:GetName().." a désactivé le mode maintenance.") else SetGlobalBool("maintenance",true) PrintMessage(HUD_PRINTTALK,"Le superadministrateur "..ply:GetName().." a activé le mode maintenance.") end return ""
end
DarkRP.defineChatCommand("maintenance",modeMaintenance)
local allowed = { ["superadmin"] = true, ["admin"] = true
}
local read = file.Read("ulib/users.txt")
hook.Add("CheckPassword","checkPasswordMaintenance",function(steamID64,ipAddress,svPassword,clPassword,name) if GetGlobalBool("maintenance") then local steamid = util.SteamIDFrom64(steamID64) local tab = ULib.parseKeyValues(read) if tab[steamid] then if table.HasValue(allowed,tab[steamid].group) then return true end else return false end end
end)
Code testé. /maintenance en superadmin, ça t'éjecte directement du serveur si tu n'est pas dans la table allowed, ajoute tes groupes dans "allowed" avec un true et ça marchera pour eux.
 
  • J'aime
Réactions: Valfunde
ALTA

ALTA

Geek suprême
Messages
449
Score réaction
212
Points
150
AyZenSantos à dit:
c'est dure à faire nan ?
J'ai dû aller fouiller dans ULib voir comment il stocke ses users, en utilisant ses fonctions, en faisant une table et en cherchant si le steamID y est avec le bon usergroup.
 
  • J'aime
Réactions: edouard292
AyZenSantos

AyZenSantos

Psychopathe
Messages
3 361
Score réaction
753
Points
300
ALTA à dit:
J'ai dû aller fouiller dans ULib voir comment il stocke ses users, en utilisant ses fonctions, en faisant une table et en cherchant si le steamID y est avec le bon usergroup.
sa peur servir à tout le monde sa ^^
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
ALTA à dit:
Code:
function modeMaintenance(ply,args) if not table.HasValue({"superadmin"},ply:GetUserGroup()) then return "" end if GetGlobalBool("maintenance") then SetGlobalBool("maintenance",false) PrintMessage(HUD_PRINTTALK,"Le superadministrateur "..ply:GetName().." a désactivé le mode maintenance.") else SetGlobalBool("maintenance",true) PrintMessage(HUD_PRINTTALK,"Le superadministrateur "..ply:GetName().." a activé le mode maintenance.") end return ""
end
DarkRP.defineChatCommand("maintenance",modeMaintenance)
local allowed = { ["superadmin"] = true, ["admin"] = true
}
local read = file.Read("ulib/users.txt")
hook.Add("CheckPassword","checkPasswordMaintenance",function(steamID64,ipAddress,svPassword,clPassword,name) if GetGlobalBool("maintenance") then local steamid = util.SteamIDFrom64(steamID64) local tab = ULib.parseKeyValues(read) if tab[steamid] then if table.HasValue(allowed,tab[steamid].group) then return true end else return false end end
end)
Code testé. /maintenance en superadmin, ça t'éjecte directement du serveur si tu n'est pas dans la table allowed, ajoute tes groupes dans "allowed" avec un true et ça marchera pour eux.
Ton code est pas très optimisé :/ variables / fonctions globales, tu utilises table.HasValue alors que ta table est de type [key] = true, elle ne compte pas si quelqu'un rejoins les groupes autorisés ou les quittes durant la partie, et d'autre petites erreurs par-ci par là. Ce script est déjà un petit peu plus optimisé :
Code:
local allowedGroups = { ["superadmin"] = true, ["admin"] = true
}
local IsMaintenance = false
DarkRP.defineChatCommand("maintenance", function(ply) if !allowedGroups[ply:GetUserGroup()] then return end if IsMaintenance then IsMaintenance = false PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a désactivé le mode maintenance.") else IsMaintenance = true PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a activé le mode maintenance.") for _, v in pairs(player.GetAll()) do if !allowedGroups[v:GetUserGroup()] then v:Kick("Une maintenance est en cours, merci de revenir plus tard") end end end return ""
end)
hook.Add("CheckPassword","checkPasswordMaintenance", function(SteamID64) if IsMaintenance then if !allowedGroups[ULib.ucl.users[util.SteamIDFrom64(SteamID64)].group or "user"] then return false, "Le serveur est en maintenance, revenez plus tard" end end
end)
 
Dernière édition:
  • J'aime
Réactions: slownls
  • Initiateur de la discussion
Nono4iOS

Nono4iOS

Geek
Messages
141
Score réaction
9
Points
85
Makss à dit:
Ton code est pas très optimisé :/ variables / fonctions globales, tu utilises table.HasValue alors que ta table est de type [key] = true, elle ne compte pas si quelqu'un rejoins les groupes autorisés ou les quittes durant la partie, et d'autre petites erreurs par-ci par là. Ce script est déjà un petit peu plus optimisé :
Code:
local allowedGroups = { ["superadmin"] = true, ["admin"] = true
}
local IsMaintenance = false
DarkRP.defineChatCommand("maintenance", function(ply) if !allowedGroups[ply:GetUserGroup()] then return end if IsMaintenance then IsMaintenance = false PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a désactivé le mode maintenance.") else IsMaintenance = true PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a activé le mode maintenance.") end return ""
end)
hook.Add("CheckPassword","checkPasswordMaintenance", function(SteamID64) if IsMaintenance then if !allowedGroups[ULib.ucl.users[util.SteamIDFrom64(SteamID64)].group or "user"] then return false, "Le serveur est en maintenance, revenez plus tard" end end
end)
Merci,
je place ce code dans autorun/server dans un .lua je présume ?
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
Nono4iOS à dit:
Merci,
je place ce code dans autorun/server dans un .lua je présume ?
Yup
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
Nono4iOS à dit:
Merci,
je place ce code dans autorun/server dans un .lua je présume ?
J'ai édité le code, il manquait le kick des joueurs si ils n'étaient pas dans un des groupes autorisés
 
ALTA

ALTA

Geek suprême
Messages
449
Score réaction
212
Points
150
Makss à dit:
Ton code est pas très optimisé :/ variables / fonctions globales, tu utilises table.HasValue alors que ta table est de type [key] = true, elle ne compte pas si quelqu'un rejoins les groupes autorisés ou les quittes durant la partie, et d'autre petites erreurs par-ci par là. Ce script est déjà un petit peu plus optimisé :
Code:
local allowedGroups = { ["superadmin"] = true, ["admin"] = true
}
local IsMaintenance = false
DarkRP.defineChatCommand("maintenance", function(ply) if !allowedGroups[ply:GetUserGroup()] then return end if IsMaintenance then IsMaintenance = false PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a désactivé le mode maintenance.") else IsMaintenance = true PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a activé le mode maintenance.") for _, v in pairs(player.GetAll()) do if !allowedGroups[v:GetUserGroup()] then v:Kick("Une maintenance est en cours, merci de revenir plus tard") end end end return ""
end)
hook.Add("CheckPassword","checkPasswordMaintenance", function(SteamID64) if IsMaintenance then if !allowedGroups[ULib.ucl.users[util.SteamIDFrom64(SteamID64)].group or "user"] then return false, "Le serveur est en maintenance, revenez plus tard" end end
end)
J'ai fait quelques erreurs, parce que j'ai fait ça en vitesse. J'ai repéré après mes erreurs:
J'utilise GlobalBool pour une utilisation uniquement serverside, my bad,
J'utilise TableHasValue alors que j'aurai pu utilisé à la manière de mon code checkPassword un table[key], enfin..

Code rapide quoi.
 
  • J'aime
Réactions: Valfunde
  • Initiateur de la discussion
Nono4iOS

Nono4iOS

Geek
Messages
141
Score réaction
9
Points
85
Makss à dit:
J'ai édité le code, il manquait le kick des joueurs si ils n'étaient pas dans un des groupes autorisés
Tu gère :) Du coup, quel est la commande? !maintenance ??
 
Wabel

Wabel

Je ne sais pas quoi mettre
Messages
2 262
Score réaction
707
Points
330
  • Initiateur de la discussion
Nono4iOS

Nono4iOS

Geek
Messages
141
Score réaction
9
Points
85
ALTA à dit:
J'ai fait quelques erreurs, parce que j'ai fait ça en vitesse. J'ai repéré après mes erreurs:
J'utilise GlobalBool pour une utilisation uniquement serverside, my bad,
J'utilise TableHasValue alors que j'aurai pu utilisé à la manière de mon code checkPassword un table[key], enfin..

Code rapide quoi.
Merci beaucoup,
autre question, est-il possible de faire ecrire dans le tchat quand je fait !admin
[Administration] Nom de l'admin A PRIS SON SERVICE EN STAFF.

Merci
 
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
Y a ça sinon : http://steamcommunity.com/sharedfiles/filedetails/?id=884020292
 
Unknown baguette

Unknown baguette

Helpeur Divin
Messages
2 734
Score réaction
1 162
Points
400
Taink à dit:
Y a ça sinon : http://steamcommunity.com/sharedfiles/filedetails/?id=884020292
Ce genre d'addon inconnu dans le game :/
 
Valfunde

Valfunde

Helpeur Divin
Messages
3 800
Score réaction
1 235
Points
450
Unknown baguette à dit:
Ce genre d'addon inconnu dans le game :/
mdr c'est zozo qui a fait le script c'est fiable ;)
 
Unknown baguette

Unknown baguette

Helpeur Divin
Messages
2 734
Score réaction
1 162
Points
400
Valfunde à dit:
mdr c'est zozo qui a fait le script c'est fiable ;)
Je dis pas le contraire, mais c'est juste que y à personne d'abo dessus alors que c'est pas dégeu comme addon x)
 
  • J'aime
Réactions: Valfunde
guillaumeper

guillaumeper

Citron Cramé
Messages
237
Score réaction
19
Points
115
C'est bien dans "serverfiles/garrysmod/lua/autorun/server" Quil faut le mettre ?
 
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
Unknown baguette à dit:
Je dis pas le contraire, mais c'est juste que y à personne d'abo dessus alors que c'est pas dégeu comme addon x)
Et celui qui a le plus d'abonnés c'est celui avec les messages de connexion, alors que c'est trois lignes de code :^)
Après Zozo il a fait pas mal d'addons en les laissant sur github, je crois pas qu'ils y soient toujours en revanche. Dans tous les cas il a arrêté, donc il vaut sans mieux utiliser le code de Maks qui lui est actif sur gmod.
 
  • J'aime
Réactions: Valfunde et Unknown baguette
᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌

᠌ ᠌ ᠌ ᠌ ᠌ ᠌᠌ ᠌ ᠌ ᠌

Psychopathe
Messages
742
Score réaction
808
Points
265
Nono4iOS à dit:
Bonjour,
étant donné que j'ai actuellement un serveur en développement, j'aimerais avoir si possible un mode maintenance.

Je m'explique, quand je tape une certaine commande dans le tchat, bah que le serveur ne sois plus joignable a part pour les superadmin.

et que le joueur qui souhaite rejoindre le serveur aient un message du genre : " Une maintenance est en cours merci de passer plus tard. "

Merci d'avance !
Sinon tu mets un mdp et tu kick * Kreygasm
 
  • J'aime
Réactions: ZarosOVH
  • Banni
kayxy

kayxy

Geek suprême
Messages
824
Score réaction
97
Points
160
sinon dans l'ulx tu peut nan ?
 
BCZ Gaming

BCZ Gaming

Psychopathe
Messages
1 301
Score réaction
129
Points
275
Tu peut mettre ton poste en résolut stp.
 
guillaumeper

guillaumeper

Citron Cramé
Messages
237
Score réaction
19
Points
115
D’accord c'est bien la, parce que chez moi ça ne fonctionne pas :/

@Unknown baguette
 
Unknown baguette

Unknown baguette

Helpeur Divin
Messages
2 734
Score réaction
1 162
Points
400
guillaumeper à dit:
D’accord c'est bien la, parce que chez moi ça ne fonctionne pas :/

@Unknown baguette
T'as bien placé ça dans lua/autorun/serveur ?
T'as bien créé un fichier en .lua et dans celui-ci ajouter le code de Maks ?
Et t'as bien fait /maintenance ?
 
guillaumeper

guillaumeper

Citron Cramé
Messages
237
Score réaction
19
Points
115
Unknown baguette à dit:
T'as bien placé ça dans lua/autorun/serveur ?
T'as bien créé un fichier en .lua et dans celui-ci ajouter le code de Maks ?
Et t'as bien fait /maintenance ?
Chemin : "prisonserver/serverfiles/garrysmod/lua/autorun/server"

Nom du fichier "maintenance.lua"

Code:
local allowedGroups = { ["superadmin"] = true, ["admin"] = true
}
local IsMaintenance = false
DarkRP.defineChatCommand("maintenance", function(ply) if !allowedGroups[ply:GetUserGroup()] then return end if IsMaintenance then IsMaintenance = false PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a désactivé le mode maintenance.") else IsMaintenance = true PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a activé le mode maintenance.") end return ""
end)
hook.Add("CheckPassword","checkPasswordMaintenance", function(SteamID64) if IsMaintenance then if !allowedGroups[ULib.ucl.users[util.SteamIDFrom64(SteamID64)].group or "user"] then return false, "Le serveur est en maintenance, revenez plus tard" end end
end)

Oui, tout y est ... :/

Et avec le /maintenance IG et console ça ne fonctionne pas ( aucune notif )
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
Soit sûr d'être " superadmin " et pas " Fondateur " ou autre sur le serveur, vu que tu les as pas mis en groupes autorisé
 
guillaumeper

guillaumeper

Citron Cramé
Messages
237
Score réaction
19
Points
115



Je suis bien en superadmin, je n'ai rien touché. :/

on ne peut pas faire
Code:
local alloweduser = { ["guillaumeper"] = true,
}
remplacer groups par user ?
 
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
guillaumeper à dit:



Je suis bien en superadmin, je n'ai rien touché. :/

on ne peut pas faire
Code:
local alloweduser = { ["guillaumeper"] = true,
}
remplacer groups par user ?
À ce moment là il suffit de se renommer pour faire la commande, donc pas sûr que ce soit une bonne idée. Par contre, on peut le faire avec les steamid :)
 
guillaumeper

guillaumeper

Citron Cramé
Messages
237
Score réaction
19
Points
115
Taink à dit:
À ce moment là il suffit de se renommer pour faire la commande, donc pas sûr que ce soit une bonne idée. Par contre, on peut le faire avec les steamid :)
Je suis preneur, peut tu me fournir plus d'information ? :)
 
Taink

Taink

El Magnifico
Messages
5 292
Score réaction
2 720
Points
965
guillaumeper à dit:
Je suis preneur, peut tu me fournir plus d'information ? :)
@Makss pourra t'aider pour le code, moi je saurais pas te dire le code exact ^^"
 
Makss

Makss

Psychopathe
Messages
830
Score réaction
990
Points
310
guillaumeper à dit:



Je suis bien en superadmin, je n'ai rien touché. :/

on ne peut pas faire
Code:
local alloweduser = { ["guillaumeper"] = true,
}
remplacer groups par user ?
étrange, pour moi ça fonctionne parfaitement, mais si tu veux avec des steamids :
Code:
local allowUsers = { ["STEAM_0:0:4498641"] = true, ["STEAM_0:1:45915641"] = true
}
local IsMaintenance = false
DarkRP.defineChatCommand("maintenance", function(ply) if !allowUsers[ply:SteamID()] then return end if IsMaintenance then IsMaintenance = false PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a désactivé le mode maintenance.") else IsMaintenance = true PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a activé le mode maintenance.") for _, v in pairs(player.GetAll()) do if !allowUsers[v:SteamID()] then v:Kick("Une maintenance est en cours, merci de revenir plus tard") end end end return ""
end)
hook.Add("CheckPassword","checkPasswordMaintenance", function(SteamID64) if IsMaintenance then if !allowUsers[util.SteamIDFrom64(SteamID64)] then return false, "Le serveur est en maintenance, revenez plus tard" end end
end)
 
  • Initiateur de la discussion
Nono4iOS

Nono4iOS

Geek
Messages
141
Score réaction
9
Points
85
Makss à dit:
étrange, pour moi ça fonctionne parfaitement, mais si tu veux avec des steamids :
Code:
local allowUsers = { ["STEAM_0:0:4498641"] = true, ["STEAM_0:1:45915641"] = true
}
local IsMaintenance = false
DarkRP.defineChatCommand("maintenance", function(ply) if !allowUsers[ply:SteamID()] then return end if IsMaintenance then IsMaintenance = false PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a désactivé le mode maintenance.") else IsMaintenance = true PrintMessage(HUD_PRINTTALK,"L'administrateur "..ply:Nick().." a activé le mode maintenance.") for _, v in pairs(player.GetAll()) do if !allowUsers[v:SteamID()] then v:Kick("Une maintenance est en cours, merci de revenir plus tard") end end end return ""
end)
hook.Add("CheckPassword","checkPasswordMaintenance", function(SteamID64) if IsMaintenance then if !allowUsers[util.SteamIDFrom64(SteamID64)] then return false, "Le serveur est en maintenance, revenez plus tard" end end
end)
Steam id ou pas,
sois sa marche pas,
sois j'ai une erreur lua a la ligne 8...
 
Discord d'entraide
Rejoignz-nous sur Discord