Crée une barre progressive lors de la fouille

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

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Bonjour j'aurais aimez savoir si il était possible de crée une 'Barre qui montre la progression' je m'explique.J'ai un addons on l'ont doit fouillez des poubelle pour obtenir des bouts de ferraille j'aimerais faire en sorte que lorsqu'on fouille on doit d'abord maintenir la touche E (Utiliser) et une barre s'affiche montrant la progression de la fouille qui se remplit arrivé a la fin on reçoit ou non l'objet en question.Comme le système du lockpick. Sauf que c'est avec la touche utiliser pas avec une arme ^^'
 
Gladiateur45

Gladiateur45

Geek suprême
Messages
472
Score réaction
39
Points
140
Lyko5102 à dit:
Bonjour j'aurais aimez savoir si il était possible de crée une 'Barre qui montre la progression' je m'explique.J'ai un addons on l'ont doit fouillez des poubelle pour obtenir des bouts de ferraille j'aimerais faire en sorte que lorsqu'on fouille on doit d'abord maintenir la touche E (Utiliser) et une barre s'affiche montrant la progression de la fouille qui se remplit arrivé a la fin on reçoit ou non l'objet en question.Comme le système du lockpick. Sauf que c'est avec la touche utiliser pas avec une arme ^^'
Voila : https://wiki.garrysmod.com/page/Category:DProgress
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Gladiateur45 à dit:
Voila : https://wiki.garrysmod.com/page/Category:DProgress
attempt to index global 'vgui' (a nil value)
 
Gladiateur45

Gladiateur45

Geek suprême
Messages
472
Score réaction
39
Points
140
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Gladiateur45 à dit:
Tu a du faire une erreure
J'ai copier coller ce qu'il y avait sur le site pour voir déjà ce que cela fessait j'obtiens l'erreur que j'ai copier coller au-dessus.

local DProgress = vgui.Create( "DProgress" )
DProgress:SetPos( 10, 30 )
DProgress:SetSize( 200, 20 )
DProgress:SetFraction( 0.75 )
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
J'ai copier coller ce qu'il y avait sur le site pour voir déjà ce que cela fessait j'obtiens l'erreur que j'ai copier coller au-dessus.

local DProgress = vgui.Create( "DProgress" )
DProgress:SetPos( 10, 30 )
DProgress:SetSize( 200, 20 )
DProgress:SetFraction( 0.75 )
T'a pas de parent ?
 
  • J'aime
Réactions: AyZenSantos
AyZenSantos

AyZenSantos

Psychopathe
Messages
3 361
Score réaction
753
Points
300
  • J'aime
Réactions: Feytone
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
hm?Non je devrait le parenté a l’entité?
Beh non... C'est à des panels/frame généralement...
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
Beh non... C'est à des panels/frame généralement...
Quoi que je fasse le Vgui ne se crée pas du tout panel au Dprogress.
 
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Code:
local frame = vgui.Create("DFrame")
frame:SetSize(300,30)
frame:Center()
frame:MakePopup()
local DProgress = vgui.Create( "DProgress" , frame )
DProgress:SetPos( 10, 30 )
DProgress:SetSize( 200, 20 )
DProgress:SetFraction( 0.75 )
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
EglyKozz à dit:
Code:
local frame = vgui.Create("DFrame")
frame:SetSize(300,30)
frame:Center()
frame:MakePopup()
local DProgress = vgui.Create( "DProgress" , frame )
DProgress:SetPos( 10, 30 )
DProgress:SetSize( 200, 20 )
DProgress:SetFraction( 0.75 )
Meme error je demanderais a un codeur au pire merci quand même :)
 
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Lyko5102 à dit:
Meme error je demanderais a un codeur au pire merci quand même :)
Je vais essayer de mon côté sa devrait fonctionner o_O
 
EglyKozz

EglyKozz

Psychopathe
Messages
1 627
Score réaction
359
Points
310
Lyko5102 à dit:
Meme error je demanderais a un codeur au pire merci quand même :)
Fonctionne très bien pour moi ^^
Code:
local frame = vgui.Create("DFrame")
frame:SetSize(300,300)
frame:Center()
frame:MakePopup()
local DProgress = vgui.Create( "DProgress" , frame )
DProgress:SetSize( 200, 20 )
DProgress:SetPos( 10, 30 )
DProgress:SetFraction( 0.75 )
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Je le met la :

function ENT:Use( len, ply )
if #scrapjobs1 == 0 or table.HasValue(scrapjobs1, team.GetName(ply:Team())) then
if timer.Exists( tostring(self:GetPos()).."CanSpawnScrap" ) then DarkRP.notify( ply, 1, 5, "Il n'y a rien a récupéré pour le moment.") return end
if math.random(1,chance1) == chance1 then ply:Give(random_weapons1[math.random(1,#random_weapons1)])
DarkRP.notify( ply, 0, 5, "Vous avez trouvé une arme !")
timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end )
else
local frame = vgui.Create("DFrame")
frame:SetSize(300,30)
frame:Center()
frame:MakePopup()

local DProgress = vgui.Create( "DProgress" , frame )
DProgress:SetPos( 10, 30 )
DProgress:SetSize( 200, 20 )
DProgress:SetFraction( 0.75 )
local scrap_count = ply:GetNWInt( "scrap_count" )
ply:SetNWInt( "scrap_count", scrap_count+scrap_amount1 )
scrap_count = ply:GetNWInt("scrap_count")
DarkRP.notify( ply, 0, 5, "Vous avez trouvé des morceaux de ferraille !")


timer.Create( "FoundDatScrapDoe", 1, 1, function()
DarkRP.notify( ply, 0, 5, "Vous avez "..scrap_count.." morceaux de ferraille !")
end)

timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function()

end )
end
else
DarkRP.notify( ply, 1, 5, "Votre rang ne vous permet pas de vous salir les mains!")


end
end

Et cela me retourne l'erreur attempt to index global 'vgui' (a nil value)
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
Je le met la :

function ENT:Use( len, ply )
if #scrapjobs1 == 0 or table.HasValue(scrapjobs1, team.GetName(ply:Team())) then
if timer.Exists( tostring(self:GetPos()).."CanSpawnScrap" ) then DarkRP.notify( ply, 1, 5, "Il n'y a rien a récupéré pour le moment.") return end
if math.random(1,chance1) == chance1 then ply:Give(random_weapons1[math.random(1,#random_weapons1)])
DarkRP.notify( ply, 0, 5, "Vous avez trouvé une arme !")
timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end )
else
local frame = vgui.Create("DFrame")
frame:SetSize(300,30)
frame:Center()
frame:MakePopup()

local DProgress = vgui.Create( "DProgress" , frame )
DProgress:SetPos( 10, 30 )
DProgress:SetSize( 200, 20 )
DProgress:SetFraction( 0.75 )
local scrap_count = ply:GetNWInt( "scrap_count" )
ply:SetNWInt( "scrap_count", scrap_count+scrap_amount1 )
scrap_count = ply:GetNWInt("scrap_count")
DarkRP.notify( ply, 0, 5, "Vous avez trouvé des morceaux de ferraille !")


timer.Create( "FoundDatScrapDoe", 1, 1, function()
DarkRP.notify( ply, 0, 5, "Vous avez "..scrap_count.." morceaux de ferraille !")
end)

timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function()

end )
end
else
DarkRP.notify( ply, 1, 5, "Votre rang ne vous permet pas de vous salir les mains!")


end
end

Et cela me retourne l'erreur attempt to index global 'vgui' (a nil value)
WOOOOW : Mets dans des balises [ CODE][ /CODE] stp

Edit : Mama.... Tu peux aller regarder les tutos de Code Blue : tu comprendras déjà la base d'un langage de programmation parce que là t'a fait une erreur très extrêmement basique.

Bref, t'a mis du client côté serveur.
 
  • J'aime
Réactions: zoukilama
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Oui mais c'est a cette endroit précis que je veux la barre de progression donc va falloir faire un Hook .call donc?
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
Oui mais c'est a cette endroit précis que je veux la barre de progression donc va falloir faire un Hook .call donc?
Y'a pas de Hook call.. De quoi tu me parles... Déjà il faut utiliser des nets je pense ici de préférence....

Code:
ENT:Use
Bla bla bla
else
net
En gros et côté client tu mets tout ce qui concerne le client... Les dermas principalement.
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Le net sa dit que c'est pour envoyer un message mais la j'ai besoin d'apeller un Hook puisque mon derma est dans un hook :
coté cl_init.lua
hook.Add( "FouilleStart", "E_fouilleStart", function()
if LocalPlayer:KeyDown( IN_USE ) then
local DProgress = vgui.Create( "DProgress")
DProgress:SetSize( 200, 40 )
DProgress:SetPos( 620, 550 )
DProgress:SetFraction( 0.75 )
util.AddNetworkString( "FouilleStart" )
end
end )
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
Le net sa dit que c'est pour envoyer un message mais la j'ai besoin d'apeller un Hook puisque mon derma est dans un hook :
coté cl_init.lua
hook.Add( "FouilleStart", "E_fouilleStart", function()
if LocalPlayer:KeyDown( IN_USE ) then
local DProgress = vgui.Create( "DProgress")
DProgress:SetSize( 200, 40 )
DProgress:SetPos( 620, 550 )
DProgress:SetFraction( 0.75 )
util.AddNetworkString( "FouilleStart" )
end
end )
Non mais mets tes codes dans des balises [ CODE][ /CODE] car c'est illisible sur une réponse... (déjà dit)
Ensuite, visiblement tu ne lis pas donc je vois pas l'intérêt...

Dans ton côté serveur tu as ta fonction ENT:Use()
ensuite un else -> Ici, juste après, tu places un net pour créer tout ton derma comme ça. Utiliser un KeyDown pour Use c'est d'après moi inutile alors que d'autres fonctions sont créées pour cela dans une entité.
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
Non mais mets tes codes dans des balises [ CODE][ /CODE] car c'est illisible sur une réponse... (déjà dit)
Ensuite, visiblement tu ne lis pas donc je vois pas l'intérêt...

Dans ton côté serveur tu as ta fonction ENT:Use()
ensuite un else -> Ici, juste après, tu places un net pour créer tout ton derma comme ça. Utiliser un KeyDown pour Use c'est d'après moi inutile alors que d'autres fonctions sont créées pour cela dans une entité.
Le soucis étant est que le net (le "receive" dois faire appelle au net du coter client (citation de la video de CODE bleue) qui lui d’ailleurs fait son derma du coter client donc au final tu me demande regarder une vidéo ce que j'ai fait je n'arrive d’ailleurs pas a comprendre comment fonctionne le net.Disons que sa vidéo montre quelque petits truc mais sa reste flou.Et de ton côté tu me demande de faire l'inverse de la vidéo de faire mon derma du coté serveur en utilisant un Net.WTF?! Comment embrouiller un débutant.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Non tu n'as pas du tout compris...

Le net est fait pour envoyer un message d'un côté à un autre. Recevoir ça se passe des deux côtés, envoyer aussi.
Donc ce que je te dis c'est d'utiliser la manière normale donc dans ton ENT:Use() tu places un message net que tu vas envoyer forcément au côté client : C'est pas pour rester côté serveur un net.

Ensuite, à la réception côté client, une fonction va s'enclencher et ainsi amener à créer ton VGui.
C'est la base de la programmation et c'est exactement ce que peuvent dire tous les tutos car c'est la base. Tu t'es embrouillé en copiant un code car je doute que tu aies trouvé seul un input.KeyDown car c'est assez compliqué à utiliser tout de même donc à l'avenir pense hyper logique et utilises uniquement tes connaissances. Si tu ne connais pas quelque chose, tu peux aller voir quelque chose dans un autre script (payant ou gratuit : j'ai encore payé un script juste pour voir son code la semaine dernière) et ainsi comprendre mais il faut le comprendre pour le réaliser et non le copier. Cela est idiot.

Donc je répète : revois ta logique -> La programmation.
Le serveur fait les calculs etc... Le client affiche et utiliser les clients POUR le serveur car il (le serveur) a déjà beaucoup de choses à calculer et encoder.
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
Non tu n'as pas du tout compris...

Le net est fait pour envoyer un message d'un côté à un autre. Recevoir ça se passe des deux côtés, envoyer aussi.
Donc ce que je te dis c'est d'utiliser la manière normale donc dans ton ENT:Use() tu places un message net que tu vas envoyer forcément au côté client : C'est pas pour rester côté serveur un net.

Ensuite, à la réception côté client, une fonction va s'enclencher et ainsi amener à créer ton VGui.
C'est la base de la programmation et c'est exactement ce que peuvent dire tous les tutos car c'est la base. Tu t'es embrouillé en copiant un code car je doute que tu aies trouvé seul un input.KeyDown car c'est assez compliqué à utiliser tout de même donc à l'avenir pense hyper logique et utilises uniquement tes connaissances. Si tu ne connais pas quelque chose, tu peux aller voir quelque chose dans un autre script (payant ou gratuit : j'ai encore payé un script juste pour voir son code la semaine dernière) et ainsi comprendre mais il faut le comprendre pour le réaliser et non le copier. Cela est idiot.

Donc je répète : revois ta logique -> La programmation.
Le serveur fait les calculs etc... Le client affiche et utiliser les clients POUR le serveur car il (le serveur) a déjà beaucoup de choses à calculer et encoder.
Sauf que non j'ai pas bêtement copier le code j'ai été sur Gmod Wiki et j'ai vu justement le code "Player:KeyDown" qui consiste justement a faire en sorte que si la personne reste appuyé le code se passe c'est exactement ce que je veux faire pour la barre de progression de fouille sur la poubelle.Tu maintiens appuyer sur E tu vois la barre se remplir (sa je ne sais pas encore le faire..) si tu relâche la barre s’élève et tu dois recommencer.
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
J'ai réussit et j'ai même appris comment faire la barre qui progresse avec un timer.Create maintenant il faut que je vois COMMENT faire en sorte que lorsque le joueur ne RESTE PAS appuyé sur sa touche E (in_use) la barre s’arrête et part.
 
DinamoPerixx

DinamoPerixx

Geek suprême
Messages
100
Score réaction
6
Points
115
J'avais la même idée ^^ -_-
 
Gladiateur45

Gladiateur45

Geek suprême
Messages
472
Score réaction
39
Points
140
Lyko5102 à dit:
J'ai réussit et j'ai même appris comment faire la barre qui progresse avec un timer.Create maintenant il faut que je vois COMMENT faire en sorte que lorsque le joueur ne RESTE PAS appuyé sur sa touche E (in_use) la barre s’arrête et part.
Tu fait que si il appuile sa creé un timer que tuute les 5 sec ben sa fait DProgres:sefration un truc comme ça et que si il n'appuille pas sa regarde si il a un timer si ou tu fait timer:Remove(Le nom de ton timer)
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Gladiateur45 à dit:
Tu fait que si il appuile sa creé un timer que tuute les 5 sec ben sa fait DProgres:sefration un truc comme ça et que si il n'appuille pas sa regarde si il a un timer si ou tu fait timer:Remove(Le nom de ton timer)
Hum coter server ou client ?
 
Gladiateur45

Gladiateur45

Geek suprême
Messages
472
Score réaction
39
Points
140
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Marche pas.

J'ai utiliser 2 Networking pour faire plus claire.

Les deux Networking dans le init :
Code:
function ENT:Use( len, ply ) if #scrapjobs1 == 0 or table.HasValue(scrapjobs1, team.GetName(ply:Team())) then if timer.Exists( tostring(self:GetPos()).."CanSpawnScrap" ) then DarkRP.notify( ply, 1, 5, "Il n'y a rien a récupéré pour le moment.") return end if math.random(1,chance1) == chance1 then ply:Give(random_weapons1[math.random(1,#random_weapons1)]) DarkRP.notify( ply, 0, 5, "Vous avez trouvé une arme !") timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end ) else timer.Create("PressFouille", 1, 0, function() if ply:KeyDown( IN_USE ) then util.AddNetworkString("Fouille") net.Start("Fouille") net.Send(ply) elseif ply:KeyReleased(IN_USE) then timer.Create("PressStopFouille", 0, 0, function() util.AddNetworkString("StopFouille") net.Start("StopFouille") net.Send(ply) end) local scrap_count = ply:GetNWInt( "scrap_count" ) ply:SetNWInt( "scrap_count", scrap_count+scrap_amount1 ) scrap_count = ply:GetNWInt("scrap_count") DarkRP.notify( ply, 0, 5, "Vous avez trouvé des morceaux de ferraille !") timer.Create( "FoundDatScrapDoe", 1, 1, function() DarkRP.notify( ply, 0, 5, "Vous avez "..scrap_count.." morceaux de ferraille !") end) timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end ) end end) end else DarkRP.notify( ply, 1, 5, "Votre rang ne vous permet pas de vous salir les mains!") end
end
Dans le cl_init:
Code:
net.Receive("Fouille",function ()
timer.Create("fouillebarre01", 0, 1, function() local DProgress = vgui.Create( "DProgress", frame ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.10 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre02", 1, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.20 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre03", 2, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.30 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre04", 3, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.40 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre05", 4, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.50 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre06", 5, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.60 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre07", 6, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.70 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre08", 7, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.80 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre09", 8, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 0.90 ) DProgress:GetFraction() DProgress:Center() end) timer.Create("fouillebarre10", 9, 1, function() local DProgress = vgui.Create( "DProgress" ) DProgress:SetPos( 10, 30 ) DProgress:SetSize( 200, 20 ) DProgress:SetFraction( 1 ) DProgress:GetFraction() DProgress:Center() end)
end)
net.Receive("StopFouille" , function()
timer.Remove("fouillebarre01")
timer.Remove("fouillebarre02")
timer.Remove("fouillebarre03")
timer.Remove("fouillebarre04")
timer.Remove("fouillebarre05")
timer.Remove("fouillebarre06")
timer.Remove("fouillebarre07")
timer.Remove("fouillebarre08")
timer.Remove("fouillebarre09")
timer.Remove("fouillebarre10")
end)
 
Dernière édition:
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
J'ai l'impression que Gmod en faite se fiche des commande Keydown Keypressed car il fait comme si il n'existait pas...
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Si mais comme je t'ai dit, c'est bien plus dur à utiliser que tu en as l'impression.

Déjà, je t'ai dit, pense à la logique : function ENT:Use() ça veut dire en "Quand l'entité est utilisée"

Et juste après tu mets "Si le joueur à la key enfoncée"
Donc ça se contredis...
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Aussi parce que la Key : IN_USE n'existe tout simplement pas.
http://wiki.garrysmod.com/page/Enums/KEY
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
Aussi parce que la Key : IN_USE n'existe tout simplement pas.
http://wiki.garrysmod.com/page/Enums/KEY
Alors pourquoi il mettent des page wiki si c'est pas à jour...tss...
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
Alors pourquoi il mettent des page wiki si c'est pas à jour...tss...
Autant pour moi, t'utilises un autre truc : ent:KeyPressed mais bon cela reste quand même pareil : ce que tu en fais n'est pas logique.
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
Autant pour moi, t'utilises un autre truc : ent:KeyPressed mais bon cela reste quand même pareil : ce que tu en fais n'est pas logique.
Ce n'est pas logique hum hum...Dit moi alors comment procède tu pour faire dire au server que quand le joueur RESTE appuyez sur sa touche Utiliser qui est E en grande généralité sa lance le code mais que si il stop d'appuyé sa stop la barre de progression et l'enlève.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
Ce n'est pas logique hum hum...Dit moi alors comment procède tu pour faire dire au server que quand le joueur RESTE appuyez sur sa touche Utiliser qui est E en grande généralité sa lance le code mais que si il stop d'appuyé sa stop la barre de progression et l'enlève.
A toi de réfléchir sur le papier puis d'utiliser tout le wiki ;) C'est pas mal compliqué quand même. Après quand tu dis que ça l'enlève : elle s'enlève lentement ou d'un coup ?
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
A toi de réfléchir sur le papier puis d'utiliser tout le wiki ;) C'est pas mal compliqué quand même. Après quand tu dis que ça l'enlève : elle s'enlève lentement ou d'un coup ?
Et bien en faite temps que tu reste appuyez sur la touche E tu vois la barre progresser une fois arriver a 100% tu obtiens ce qu'elle contiens.Si tu relâche la touche sa s'enlève directement.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
Et bien en faite temps que tu reste appuyez sur la touche E tu vois la barre progresser une fois arriver a 100% tu obtiens ce qu'elle contiens.Si tu relâche la touche sa s'enlève directement.
Si ça enlève comme ça directement, sans redescendre, dans ce cas, ce sera bien plus simple que ce à quoi je pensais ;) Aller courage, c'est comme cela qu'on apprend
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
Si ça enlève comme ça directement, sans redescendre, dans ce cas, ce sera bien plus simple que ce à quoi je pensais ;) Aller courage, c'est comme cela qu'on apprend
NOn mais sauf que la on me dit 36 truc en même temps je suis un tuto il me dit de faire comme ça toi tu le dis autrement et une autre personne autrement ...Au final mon code et bien il marche tu fais utiliser sur la poubelle tu la voit mais sa ne prend pas en compte que tu reste appuyer.Donc la barre charge complètement et elle ne disparaît pas.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
NOn mais sauf que la on me dit 36 truc en même temps je suis un tuto il me dit de faire comme ça toi tu le dis autrement et une autre personne autrement ...Au final mon code et bien il marche tu fais utiliser sur la poubelle tu la voit mais sa ne prend pas en compte que tu reste appuyer.Donc la barre charge complètement et elle ne disparaît pas.
Là c'est la logique (illogique) que tu as utilisée qui n'est pas bonne. Il y a des tas de façons de faire ce que tu veux, réellement des tas...
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
J'en connais qu'une donc...
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Mouais bon je pense que je vais plutôt rechercher un 'Codeur Lua" qui lui s'y connaîtras mieux que moi car il auras eu le temps nécessaire chose que je n'est pas :)
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Alors,

Coté server:
Code:
hook.Add("KeyPress", "CoolTimeFouille", function(ply) for _, ent in pairs(ents.FindByClass("mon_entities_qui_tue")) do if (ent:GetEyeTrace().Entity == ent) then if ent:KeyDown(IN_USE) then timer.Create("CoolTimeFouille "..ply:Nick(),1,0,function() if (ent:GetNWInt("CoolTimeFouille") == 10  ) then timer.Destroy("CoolTimeFouille "..ply:Nick()) ent:SetNWInt("CoolTimeFouille", 0) else ent:SetNWInt("CoolTimeFouille", ent:GetNWInt("CoolTimeFouille")+1) end end) end end end
end)
Et puis coté client :
Code:
hook.Add("PostDrawOpaqueRenderables", "CoolTimeFouille", function() for _, ent in pairs (ents.FindByClass("mon_entities_qui_tue")) do if ent:GetPos():Distance(LocalPlayer():GetPos()) < 50 then local Ang = ent:GetAngles() Ang:RotateAroundAxis( Ang:Forward(), 90) Ang:RotateAroundAxis( Ang:Right(), -90) cam.Start3D2D(ent:GetPos()+ent:GetUp()*50 + ent:GetForward()*50 + ent:GetRight()*130, Ang, 0.20) // Position de ma barre de chargement. surface.SetDrawColor(Color(10, 10, 10, 200)); surface.DrawRect(75, -200, 310  , 50) surface.SetDrawColor(Color(230, 92, 78)); surface.DrawRect(80, -194,ent:GetNWInt("CoolTimeFouille") * 310  / 10 , 40) cam.End3D2D() end end
end)
Je ne suis pas sur du code, essaye le et dit moi le résultat ;)

Le code n'est pas le plus optimisé mais je pense qu'il est fonctionnel :)

EDIT :

Tu peut même essayer de rajouté sa si il relâche la touche :) ( coté server )
Code:
hook.Add("KeyRelease", "CoolTimeFouille", function(ply,key) if ( key == IN_USE ) then for _, ent in pairs(ents.FindByClass("mon_entities_qui_tue")) do if ( timer.Exists( "CoolTimeFouille "..ply:Nick() ) ) then ent:SetNWInt("CoolTimeFouille", 0) timer.Destroy("CoolTimeFouille "..ply:Nick()) end end end
end)
 
Dernière édition:
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Le problème étant que c'est comme du gros pater de code que je dois mettre dans ceci :
Code:
function ENT:Use( len, ply ) if #scrapjobs1 == 0 or table.HasValue(scrapjobs1, team.GetName(ply:Team())) then if timer.Exists( tostring(self:GetPos()).."CanSpawnScrap" ) then DarkRP.notify( ply, 1, 5, "Il n'y a rien a récupéré pour le moment.") return end if math.random(1,chance1) == chance1 then ply:Give(random_weapons1[math.random(1,#random_weapons1)]) DarkRP.notify( ply, 0, 5, "Vous avez trouvé une arme !") timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end ) else local scrap_count = ply:GetNWInt( "scrap_count" ) ply:SetNWInt( "scrap_count", scrap_count+scrap_amount1 ) scrap_count = ply:GetNWInt("scrap_count") DarkRP.notify( ply, 0, 5, "Vous avez trouvé des morceaux de ferraille !") timer.Create( "FoundDatScrapDoe", 1, 1, function() DarkRP.notify( ply, 0, 5, "Vous avez "..scrap_count.." morceaux de ferraille !") end) timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end ) end else DarkRP.notify( ply, 1, 5, "Votre rang ne vous permet pas de vous salir les mains!") end
end
 
slownls

slownls

Helpeur Divin
Messages
1 853
Score réaction
1 079
Points
465
Tu doit le mettre dans autorun/client (coté client) et autorun/server (coté server) ^^. Aucun rapport avec l'entities
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
ET bien je ne vois pas comment tu fais pour que cela fonctionne si cela n'as rien avoir avec l’entité ^^' ce que je cherche a faire c'est que quand je fais E sur l'entité une barre de progression s'affiche et arriver a 100% il obtiens l'objet si il bouge ou si i relâche la touche E la barre s’arrête et s'en va et le joueur dois recommencer.La chose que je ne comprend pas dans ton code c'est ça ==>for _, ent in pairs(ents.FindByClass("mon_entities_qui_tue")) do mon entitité c'est une poubelle crée par l'addons.J'ai donc mis 'Poubelle" puisque c'est comme ça qu'elle s'appelle mais il ne se passe rien.
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
J'avance petit à petit mais je coince toujours avec cette foutu touche je ne trouve rien de logique dans la programmation qui me permettra de faire ça..J'ai déjà réussit a faire en sorte que la barre soit caller avec un timer de 10 seconde qui permet de donner la récompense mais de la je coince.Je veux delete le timer avec un Timer.remove("FouilleStart") mais comme d'hab il fait comme si i n'était pas la..

Code:
function ENT:Use( len, ply) if (ply:KeyDown(32)) then if (ply:KeyDown(32)) then timer.Remove("FouilleStart") umsg.End() end umsg.Start("FouilleST", ply) umsg.End( ) if #scrapjobs1 == 0 or table.HasValue(scrapjobs1, team.GetName(ply:Team())) then if timer.Exists( tostring(self:GetPos()).."CanSpawnScrap" ) then DarkRP.notify( ply, 1, 5, "Il n'y a rien a récupéré pour le moment.") return end if math.random(1,chance1) == chance1 then ply:Give(random_weapons1[math.random(1,#random_weapons1)]) DarkRP.notify( ply, 0, 5, "Vous avez trouvé une arme !") timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end ) else timer.Create("FouilleStart", 10,1, function () local scrap_count = ply:GetNWInt( "scrap_count" ) ply:SetNWInt( "scrap_count", scrap_count+scrap_amount1 ) scrap_count = ply:GetNWInt("scrap_count") DarkRP.notify( ply, 0, 5, "Vous avez trouvé des morceaux de ferraille !") timer.Create( "FoundDatScrapDoe", 1, 1, function() DarkRP.notify( ply, 0, 5, "Vous avez "..scrap_count.." morceaux de ferraille !") end) timer.Create( tostring(self:GetPos()).."CanSpawnScrap", timer1, 1, function() end ) end) end else DarkRP.notify( ply, 1, 5, "Votre rang ne vous permet pas de vous salir les mains!") end end
end
Alors je sais le umsg n'est pas a utiliser mais j'arrive mieux avec sa que le .net...de plus la personne qui a rée se 'Script | Addons' la utiliser.
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Utilise quand même des nets, c'est bien plus fonctionnel et puis y'a bien plus de possibilités.
 
  • Initiateur de la discussion
Lyko5102

Lyko5102

Geek suprême
Messages
88
Score réaction
4
Points
115
Feytone à dit:
Utilise quand même des nets, c'est bien plus fonctionnel et puis y'a bien plus de possibilités.
Sauf que je ne comprend rien au net...
 
Feytone

Feytone

Chuck Norris
Messages
4 741
Score réaction
1 301
Points
600
Lyko5102 à dit:
Sauf que je ne comprend rien au net...
Revois les tutos de CodeBlue là dessus mais y'a rien d'extrêmement compliqué.
 
Discord d'entraide
Rejoignz-nous sur Discord