que je fais un jeu en utilisant ROBLOX sur le système de combat de chars de héros Dragon Quest Rocket Slime (mais pas à l'aide de l'interface graphique 100%)problèmes d'événements à distance
Comme je ne savais pas comment faire des munitions devenir verrouillé sur un chemin dans ROBLOX normal, je décide d'utiliser une interface utilisateur graphique pour montrer les munitions « tir »
pour ce faire, j'ai un événement à distance qui déclenche une fonction dans le script principal du système GUI lorsque des munitions est chargé
cannon.Touched:connect(function(v)
if fireable[v.Name] and v.Parent == workspace then
event:FireAllClients("Left",v.Name)
v:Destroy()
end
end)
Ensuite, l'interface graphique obtient l'image-objet correct pour les munitions chargé une nd le tire du bon réservoir (le premier argument dans la partie FireAllClients)
Ceci est l'une des deux instructions if pour tirer des munitions (l'autre est littéralement la même sauf que c'est pour le tank du côté droit)
local tank = tankFiring == "Left" and tank1 or tankFiring == "Right" and tank2
if tank == tank1 then
print("yo!")
script.Fire:Play()
local ammoFrame = sp.Ammo:Clone()
ammoFrame.Parent = tank
ammoFrame.Visible = true
ammoFrame.Position = UDim2.new(0,120,0,68)
playAnimation("Cannon Fire",UDim2.new(0,120,0,68-25),tank.Frame)
ammoFrame.Image = ammoTypes[type]["img"]
ammoFrame.Size = ammoTypes[type]["Size"]
repeat
wait(.1)
ammoFrame.Rotation = ammoTypes[type]["Rotatable"] == true and ammoFrame.Rotation + 15 or 0
ammoFrame.Position = ammoFrame.Position + UDim2.new(0,1,0,0)
until
tank2:FindFirstChild("Ammo") and isTouching(ammoFrame,tank2:GetChildren()[3]) or isTouching(ammoFrame,tank2) or ammoFrame == nil
if tank2:FindFirstChild("Ammo") and isTouching(ammoFrame,tank2:GetChildren()[3]) then
script.Collision:Play()
local lastAmmoPos = ammoFrame.Position
playAnimation("Explosion",lastAmmoPos-UDim2.new(0,15,0,25),tank.Frame)
ammoFrame:Destroy()
tank2:GetChildren()[3]:Destroy()
end
if isTouching(ammoFrame,tank2) then
script.Collision:Play()
ammoFrame:Destroy()
workspace["Tank2"].Health.Value = workspace["Tank2"].Health.Value - ammoTypes[type]["dmg"]
end
end
le problème avec cela, est que si un joueur se joint APRÈS les munitions a été abattu, ils ne voient pas les munitions sur l'interface graphique
y at-il de toute façon de résoudre ce problème? Je ne peux plus me contenter de FireAllClients, car ça ne fera que tirer un autre morceau de munitions pour tous les joueurs.