Questions glua (très simple pour un "dev" normal)

  • Initiateur de la discussion NoaGamingFR
  • Date de début
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Salut, je ne vais pas écrire 5 lignes pour vous expliquer, j'ai juste quelques petites question :

- Comment savoir quel dégat à été infligé à un joueur afin de lui remettre sa vie à (sa vie + les dégats éffectués)
- BanJob avec une raison (et garder son banjob au restart..) correctement un joueur (ban job darkrp) avec du temps (+ raison, je ne sait pas si c'est possible, mais normalement si !)
- SetJob correctement un joueur (set team darkrp) pour que ce soit comme s'il avait été set par le tab ou alors changé lui même.
- Comment (créer une fonction?) pour envoyer un message ? (chat.addtext) (car je pense qu'il faut le mettre côté client, mais comment l'appeller du côté serveur ? j'ai essayé avec une fonction, je n'ai pas réussi.
- J'apprend très vite depuis quelques heures, j'ai donc réussi à faire un compteur de "freekill", j'aurais une question: avec un NwInt/String, ils se "deletent" au reset ? Si oui, comment sauvegarder le text ?

Je rajouterais d'autres question si j'en ai ^^'

Merci d'avance.​
 
Dernière édition:
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
NoaGamingFR à dit:
Comment savoir quel dégat à été infligé à un joueur afin de lui remettre sa vie à (sa vie + les dégats éffectués)
- Le plus simple selon moi ça serait de faire une sorte de compteur avec cette fonction (je pense)

-
NoaGamingFR à dit:
SetJob correctement un joueur (set team darkrp) pour que ce soit comme s'il avait été set par le tab ou alors changé lui même.
Code:
for k,v in SortedPairsByMemberValue(team.GetAllTeams(), "Name") do local uid = ply:UserID()
menu:AddOption(v.Name, function() RunConsoleCommand("_FAdmin", "setteam", uid, k) end)

-
NoaGamingFR à dit:
J'apprend très vite depuis quelques heures, j'ai donc réussi à faire un compteur de "freekill", j'aurais une question: avec un NwInt/String, ils se "deletent" au reset ? Si oui, comment sauvegarder le text ?
Oui ils se reset au reboot il me semble, tu peux les stocker dans un fichier texte (la seule technique que je sait faire) ou dans le fichier serveur dont je rappelle plus le nom mais où il faut un logiciel spécial pour l'ouvrir

PS: Pour écrire un fichier texte;
















Edit: Pour le ban job, tu devrais créer une variable du nom du joueur (ou son steamid64) pour le "bloquer" quand il change de job
 
  • Love
Réactions: NoaGamingFR
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Deadman69330 à dit:
- Le plus simple selon moi ça serait de faire une sorte de compteur avec cette fonction (je pense)

-
Code:
for k,v in SortedPairsByMemberValue(team.GetAllTeams(), "Name") do local uid = ply:UserID()
menu:AddOption(v.Name, function() RunConsoleCommand("_FAdmin", "setteam", uid, k) end)

-

Oui ils se reset au reboot il me semble, tu peux les stocker dans un fichier texte (la seule technique que je sait faire) ou dans le fichier serveur dont je rappelle plus le nom mais où il faut un logiciel spécial pour l'ouvrir

PS: Pour écrire un fichier texte;
















Edit: Pour le ban job, tu devrais créer une variable du nom du joueur (ou son steamid64) pour le "bloquer" quand il change de job
Merci pour toutes ces réponses, je vais regarde de suite :p
Concernant le banjob, tu pourrais me donner quelques pistes/m'aider ? (vu que je débute ^^')
Concernant le setteam, j'avais cherché justement dans le code pour le banjob vite fait.

Pour envoyer un message chat au client avec des couleurs/ une notif ?
 
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
NoaGamingFR à dit:
Pour envoyer un message chat au client avec des couleurs/ une notif ?


NoaGamingFR à dit:
Concernant le banjob, tu pourrais me donner quelques pistes/m'aider ? (vu que je débute ^^')
Un truc dans le genre
Code:
if plyisbanned then -- plyisbanned est une variable bool (true/false) donc on lui dit que si plyisbanned=1 alors timer.Simple( 3600, function() -- On créer un timer de 3600 sec et on lance la fonction plyisbanned = false end)
else RunConsoleCommand("_FAdmin", "setteam", ply:UserID(), TEAM_SWAT)
end

Même si je pense pas que ça marche parceque je suis vraiment rouillé en glua
 
  • Love
Réactions: NoaGamingFR
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Deadman69330 à dit:



Un truc dans le genre
Code:
if plyisbanned then -- plyisbanned est une variable bool (true/false) donc on lui dit que si plyisbanned=1 alors timer.Simple( 3600, function() -- On créer un timer de 3600 sec et on lance la fonction plyisbanned = false end)
else RunConsoleCommand("_FAdmin", "setteam", ply:UserID(), TEAM_SWAT)
end

Même si je pense pas que ça marche parceque je suis vraiment rouillé en glua
Non, je prend tout pas de soucis, ça me donne des pistes.
Parcontre, pour le chat.addtext, j'avais déjà trouvé cette piste mais vu que tout mon code est côté serveur je n'arrive pas à intégrer ca :x
Je rajoute aussi ici, j'ai un autre problème :

- Je lui envoie une notif DarkRP quand il se fait banjob, saufff que... je voudrais avoir une raison custom du genre:
"Vous avez été banni de votre métier pour : " + banreason
Sauf que je n'arrive pas à faire cela.. (j'ai uniquement le premier truc, mais pas la reason, ce n'est pas la variable locale qui n'est pas correcte, vu que quand je la print elle fonctionne entièrement)

J'ai essayé:
Code:
local banreason = "Vous avez été banni de votre métier pour : " + fkjob
Code:
local banreason = "Vous avez été banni de votre métier pour : ", fkjob
Code:
DarkRP.notify( attacker, 1, 5, "Vous avez été banni de votre métier pour : ", banreason )
Pour la notif (dernier test) je n'ai rien après les deux petits points.
J'ai aucune erreur dans les 3 tests, sauf pour le + !

Pour le SetTeam, j'ai exactement pareil qu'avec le code setteam, il faut que je me kill pour changer la couleur & le nom du métier dans le tab :x
(Une idée ?) FIX
 
Dernière édition:
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
NoaGamingFR à dit:
Parcontre, pour le chat.addtext, j'avais déjà trouvé cette piste mais vu que tout mon code est côté serveur je n'arrive pas à intégrer ca :x
Tu créer un fichier client qui reçoit un message NET comme ca:


Server:
Code:
util.AddNetworkString( "nom_de_ta_variable_UNIQUE" )
net.Start( "nom_de_ta_variable_UNIQUE", false )
net.WriteBool( true )
net.Send( ply )

Client (tu peux utiliser un Receive du coté serveur aussi)
Code:
net.Receive( "nom_de_ta_variable_UNIQUE", function( pl ) print_chat = net.ReadBool() if print_chat then chat.AddText() end
end )
Je vais t'expliquer les lignes (au début j'y comprenais rien)

Serveur:
- On crée la variable NET
- On dit au serveur qu'on veut la lancer
- On écrit dans la variable NETbool "true"
- On l'envoie au joueur


Client:
- On demande a recevoir la variable NET
- On met dans une variable la NETBool (ATTENTION, Les variables sont lues dans l'ordre où tu les écrits, donc si tu met une Bool, un Int, et du text, elles seront lues dans l'ordre) et on lance une fonction
- Du code classique
 
  • Love
Réactions: NoaGamingFR
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
NoaGamingFR à dit:
Je lui envoie une notif DarkRP quand il se fait banjob, saufff que... je voudrais avoir une raison custom du genre:
"Vous avez été banni de votre métier pour : " + banreason
Sauf que je n'arrive pas à faire cela.. (j'ai uniquement le premier truc, mais pas la reason, ce n'est pas la variable locale qui n'est pas correcte, vu que quand je la print elle fonctionne entièrement)
Déjà pourquoi

Code:
local banreason = "Vous avez été banni de votre métier pour : ", fkjob
C'est beaucoup plus simple de juste enregistrer la raison et de l'afficher dans du texte après.
De plus, il faut écrire:

Code:
local banreason = "Vous avez été banni de votre métier pour : "..fkjob
Avec deux points, c'est pas un "+" ou juste une virgule
 
  • Love
Réactions: NoaGamingFR
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Deadman69330 à dit:
Déjà pourquoi

Code:
local banreason = "Vous avez été banni de votre métier pour : ", fkjob
C'est beaucoup plus simple de juste enregistrer la raison et de l'afficher dans du texte après.
De plus, il faut écrire:

Code:
local banreason = "Vous avez été banni de votre métier pour : "..fkjob
Avec deux points, c'est pas un "+" ou juste une virgule
Désolé ca fait - de 2 jours et je trouve que j'ai déjà bien appris (avec la doc) mais c'est quand même ça !
Donc l'enregistrer, comment ça et pourquoi c'est mieux ?

Et merci d'avoir répondu, j'essaie cela après !
Merci aussi pour le premier post, je vais regarder pour les nets après en même temps que toutes les solutions et aide que tu m'as apporté sur ce sujet!



EDIT: Le chat.AddText as été résolu avec les NETS.
J'aimerais avoir une piste concernant le ban job (avec raison+durée (qui reste après le reboot)
 
Dernière édition:
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
NoaGamingFR à dit:
Donc l'enregistrer, comment ça et pourquoi c'est mieux ?
C’est mieux de l’enregistrer comme ça car il faut essayer de laisser tes variable le plus court possible, bien sûr tu peux mettre des grandes phrases dedans (pour les fichiers de config de langues par exemple) mais pour un message de ban dans ton cas c’est plus simple de faire

Code:
Print(« Vous êtes bannis pour « ..ban_reason
Que de tout stocker dans la variable, en plus si t’a Une erreur et que tu a besoin de print ta variable ça va être chiant d’afficher autant de texte alors que tu veux juste savoir ce qui a dedans



Après pour la stocker, à part avec un panel je sait pas faire, sauf si t’est vraiment chaud et que tu rajoute un module ulx



Et pour que ça reste après le reboot faut l’enregistrer dans un fichier texte comme je t’avait Dit avant
 
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Deadman69330 à dit:
C’est mieux de l’enregistrer comme ça car il faut essayer de laisser tes variable le plus court possible, bien sûr tu peux mettre des grandes phrases dedans (pour les fichiers de config de langues par exemple) mais pour un message de ban dans ton cas c’est plus simple de faire

Code:
Print(« Vous êtes bannis pour « ..ban_reason
Que de tout stocker dans la variable, en plus si t’a Une erreur et que tu a besoin de print ta variable ça va être chiant d’afficher autant de texte alors que tu veux juste savoir ce qui a dedans



Après pour la stocker, à part avec un panel je sait pas faire, sauf si t’est vraiment chaud et que tu rajoute un module ulx



Et pour que ça reste après le reboot faut l’enregistrer dans un fichier texte comme je t’avait Dit avant
Yes, mais tu fait un "wait" sauf que si le serveur crash etc ca va réellement bugguer et j'suis pas confiant xD
Pour le print je comprend pas car print c'est pour envoyer un message oo
 
Caesarovich

Caesarovich

Geek
Messages
182
Score réaction
31
Points
85
En me plongeant dedans je pensais que ce serait simple mais bordel les dégâts dans ce jeu c'est n'importe quoi. Bref je vais essayer de t'expliquer:
Code:
hook.Add("EntityTakeDamage", "NoDamageHook", function(target, dmginfo)
if target:IsValid() and target:IsPlayer() then target:SetHP( target:Health() + dmginfo )
end:GetDamage()
En gros là à chaque fois que une entité prend des dégâts, on check si c'est un joueur valide et on lui set sa vie à celle qu'il a plus les dégâts qu'il a déjà pris.
Après faut que le hook EntityTakeDamage soit set dans le gamemode et je l'ai encore jamais dans un gamemode. Ce truc est un sacré bordel. On pourrait très bien aussi faire un target:SetHP(100) a chaque fois qu'un joueur prend des dégâts mais ta requête était spécifique alors ....
Édit: on peut aussi simplement empêcher le joueur de prendre ses dégâts avec un booléen mais j'ai pas vu où. C'est un bordel il faut mettre dmginfo:GetDamage() car les dégâts sont pas en valeur numérique mais par contre on peut les set que par une valeur numérique donc is on fait dmginfo:SetDamage( dmginfo ) ça va créer des erreurs. Wtf tout ceci n'a aucun foutu sens
 
Dernière édition:
  • J'aime
Réactions: NoaGamingFR
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Caesarovich à dit:
En me plongeant dedans je pensais que ce serait simple mais bordel les dégâts dans ce jeu c'est n'importe quoi. Bref je vais essayer de t'expliquer:
Code:
hook.Add("EntityTakeDamage", "NoDamageHook", function(target, dmginfo)
if target:IsValid() and target:IsPlayer() then target:SetHP( target:Health() + dmginfo )
end
En gros là à chaque fois que une entité prend des dégâts, on check si c'est un joueur valide et on lui set sa vie à celle qu'il a plus les dégâts qu'il a déjà pris.
Après faut que le hook EntityTakeDamage soit set dans le gamemode et je l'ai encore jamais dans un gamemode. Ce truc est un sacré bordel. On pourrait très bien aussi faire un target:SetHP(100) a chaque fois qu'un joueur prend des dégâts mais ta requête était spécifique alors ....
Je ne m'était pas encore penché sur ça ^^'
Je vais voir, merci bien (cet aprem/soir)
 
Caesarovich

Caesarovich

Geek
Messages
182
Score réaction
31
Points
85
NoaGamingFR à dit:
Je ne m'était pas encore penché sur ça ^^'
Je vais voir, merci bien (cet aprem/soir)
J'ai édit fais attention
 
  • J'aime
Réactions: NoaGamingFR
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Caesarovich à dit:
J'ai édit fais attention
SetHP n'existe même pas c'est sethealth xD
Je verrais cette apprem.
 
Caesarovich

Caesarovich

Geek
Messages
182
Score réaction
31
Points
85
oups sorry, j'ai pas touché à celui là depuis longtemps x)
 
  • J'aime
Réactions: NoaGamingFR
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
NoaGamingFR à dit:
Yes, mais tu fait un "wait" sauf que si le serveur crash etc ca va réellement bugguer et j'suis pas confiant xD
Pour le print je comprend pas car print c'est pour envoyer un message oo
Le printc’est surtout pour le debug
 
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Discord d'entraide
Rejoignz-nous sur Discord