[addcsluafile/include] question

  • 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, j'ai un F4 qui contient : local function openF4MenuToggle() (UI_F4\lua\essential_darkrp_f4_menu\client\cl_f4_menu.lua) dans un fichier client.
Je voudrais donc appeller cette fonction, dans un autre dossier, le dossier lua de base (lua/autorun/server/test.lua) je voudrais donc ajouter le fichier pour que je pense avoir l'accès à cette fonction, sauf que je n'y arrive pas, ca me dit :
Code:
 Couldn't find 'ui_f4/lua/essential_darkrp_f4_menu/client/cl_f4_menu.lua'
Je sait pas si je fais les bonne manipulations mais je reste bloqué x)

Merci d'avance à tous ceux qui posteront et qui m'aideront (ou essaieront)

PS: Pourtant lorsque je fait un file.exist pour voir si le fichier existe ça fonctionne bien donc je doit mal le faire..


Code:
 print( file.Exists( "autorun/server/test.lua", "LUA" ) ) -> true
 
Dernière édition:
Guthen

Guthen

è_é
Messages
233
Score réaction
84
Points
150
Tu ne peux, tout simplement, pas appeler une fonction déclarée en local.
 
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Guthen à dit:
Tu ne peux, tout simplement, pas appeler une fonction déclarée en local.
bruh, comment je suis censé faire alors x)
 
Guthen

Guthen

è_é
Messages
233
Score réaction
84
Points
150
Tu enlève le local de la fonction et tu peux l’appeler côté client (serveur ~= client, donc le serveur ne peut pas avoir les fonctions du client).
 
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Guthen à dit:
Tu enlève le local de la fonction et tu peux l’appeler côté client (serveur ~= client, donc le serveur ne peut pas avoir les fonctions du client).
Ah oui merde ;/
Effectivement je viens de voir pour le local, sinon aurais-tu une idée, pour vérifier si un joueur est dans une "zone" entre x et x coordonnées, j'avais vu findinbox je crois mais j'ai vraiment rien compris (car ducoup vu que aucun truc ne marche bah j'vais créer une concommand et l'appeller, mais vérifier si le joueur est bien dans la zone.)
 
Marvyn38

Marvyn38

Geek suprême
Messages
54
Score réaction
18
Points
105
Pour savoir si le joueur est dans une zone tu prend juste les deux point opposés de ta zone et tu vérifi si la valeur de la position x de ton joueur est supérieur a la position x minimum de ta zone de même pour la position y après tu fait pareil avec le maximum en vérifiant si la position du joueur est inférieur à cette valeur tient une fonction comme exemple:

Code:
function in_zone(player, z_x_min, z_y_min, z_x_max, z_y_max) local ply_pos = player:GetPos(); if ply_pos.x > z_x_min and ply_pos.y > z_y_min and ply_pos.x < z_x_max and ply_pos.y < z_y_max then return true else return false end
end
(j’avoue moi même pas trop comprendre ce que j'ai écrit donc si tu as compris quelque chose c'est cool x) )
 
  • J'aime
Réactions: NoaGamingFR
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Marvyn38 à dit:
Pour savoir si le joueur est dans une zone tu prend juste les deux point opposés de ta zone et tu vérifi si la valeur de la position x de ton joueur est supérieur a la position x minimum de ta zone de même pour la position y après tu fait pareil avec le maximum en vérifiant si la position du joueur est inférieur à cette valeur tient une fonction comme exemple:

Code:
function in_zone(player, z_x_min, z_y_min, z_x_max, z_y_max) local ply_pos = player:GetPos(); if ply_pos.x > z_x_min and ply_pos.y > z_y_min and ply_pos.x < z_x_max and ply_pos.y < z_y_max then return true else return false end
end
(j’avoue moi même pas trop comprendre ce que j'ai écrit donc si tu as compris quelque chose c'est cool x) )
Chelou ça x)
Je vais essayer ce soir ou demain & je te dit :)
Merci d'avoir répondu.
 
skrilax91

skrilax91

Geek suprême
Messages
327
Score réaction
103
Points
160
Marvyn38 à dit:
Pour savoir si le joueur est dans une zone tu prend juste les deux point opposés de ta zone et tu vérifi si la valeur de la position x de ton joueur est supérieur a la position x minimum de ta zone de même pour la position y après tu fait pareil avec le maximum en vérifiant si la position du joueur est inférieur à cette valeur tient une fonction comme exemple:

Code:
function in_zone(player, z_x_min, z_y_min, z_x_max, z_y_max) local ply_pos = player:GetPos(); if ply_pos.x > z_x_min and ply_pos.y > z_y_min and ply_pos.x < z_x_max and ply_pos.y < z_y_max then return true else return false end
end
(j’avoue moi même pas trop comprendre ce que j'ai écrit donc si tu as compris quelque chose c'est cool x) )
findinbox quoi, surtout que la il te manque le z
 
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
skrilax91

skrilax91

Geek suprême
Messages
327
Score réaction
103
Points
160
J'ai expliqué comment fonctionne le findinbox
 
While True

While True

Geek suprême
Messages
445
Score réaction
395
Points
190
skrilax91 à dit:
findinbox quoi, surtout que la il te manque le z
Comme constaté dans un autre poste (merci @Mouloud Hooden), pour trouver (find) un joueur dans une zone, il vaut mieux travailler avec player.GetAll et vector:WithinAABox que FindInBox.

Si on a déjà le joueur, on ne veut pas trouver le joueur, on veut seulement vérifier qu'il est bien dans une zone définie :
Code:
local function isInZone(ply, corner1, corner2) return ply:GetPos():WithinAABox(corner1, corner2)
end
Code:
-- Renvoie un tableau de joueurs trouvés dans la zone et le nombre de joueurs trouvés
function player.FindInBox( vCorner1, vCorner2 ) local tPlayersGetAll = player.GetAll() local tPlayers = {} local iPlayers = 0 for i = 1, #tPlayersGetAll do local testPos = tPlayersGetAll[i]:GetPos() if (testPos:WithinAABox(vCorner1,vCorner2)) then iPlayers = iPlayers + 1 tPlayers[ iPlayers ] = tPlayersGetAll[ i ] end end return tPlayers, iPlayers
end
 
  • J'aime
Réactions: Mouloud Hooden et NoaGamingFR
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
While True à dit:
Comme constaté dans un autre poste (merci @Mouloud Hooden), pour trouver (find) un joueur dans une zone, il vaut mieux travailler avec player.GetAll et vector:WithinAABox que FindInBox.

Si on a déjà le joueur, on ne veut pas trouver le joueur, on veut seulement vérifier qu'il est bien dans une zone définie :
Code:
local function isInZone(ply, corner1, corner2) return ply:GetPos():WithinAABox(corner1, corner2)
end
Code:
function player.FindInBox( vCorner1, vCorner2 ) local tPlayersGetAll = player.GetAll() local tPlayers = {} local iPlayers = 0 for i = 1, #tPlayersGetAll do local testPos = tPlayersGetAll[i]:GetPos() if (testPos:WithinAABox(vCorner1,vCorner2)) then iPlayers = iPlayers + 1 tPlayers[ iPlayers ] = tPlayersGetAll[ i ] end end
Héhé, merci je te donnerais des nouvelles demain normalement ! <3
 
Deadman69330

Deadman69330

Psychopathe
Messages
2 289
Score réaction
309
Points
290
NoaGamingFR à dit:
Héhé, merci je te donnerais des nouvelles demain normalement ! <3
Tient c'est cado

Code:
local pos1 = Vector(-4941.75, 4650.2813, 1066.625)
local pos2 = Vector(5110.875, -3471.8438, 1636.0938)
timer.Create("timer_surface_mask", 5, 0, function() for k, p in pairs(player.GetAll()) do if IsValid(p) and p:IsPlayer() and p:Alive() then local testPos = p:GetPos() if (testPos:WithinAABox( pos1, pos2)) then print("Coucou mon petit bonhomme, t'est dans ma zone") end end end
end)
J'avais besoin du même code y a quelques jours ;)
 
  • Initiateur de la discussion
NoaGamingFR

NoaGamingFR

Wait :)
Messages
3 650
Score réaction
625
Points
340
Deadman69330 à dit:
Tient c'est cado

Code:
local pos1 = Vector(-4941.75, 4650.2813, 1066.625)
local pos2 = Vector(5110.875, -3471.8438, 1636.0938)
timer.Create("timer_surface_mask", 5, 0, function() for k, p in pairs(player.GetAll()) do if IsValid(p) and p:IsPlayer() and p:Alive() then local testPos = p:GetPos() if (testPos:WithinAABox( pos1, pos2)) then print("Coucou mon petit bonhomme, t'est dans ma zone") end end end
end)
J'avais besoin du même code y a quelques jours ;)
Merci mais je vais effectuer un check avec un joueur déjà défini donc pas besoin de timer ni de GetAll :D
 
  • J'aime
Réactions: Deadman69330
Discord d'entraide
Rejoignz-nous sur Discord