Yoshi_27 Posted March 2, 2013 Share Posted March 2, 2013 Bonsoir à tous, Oui c'est encore moi, avec un petit problème.... En fait, je souhaite tout bêtement créer des blips pour chaque joueurs, mais visibles seulement par les coéquipiers (team). Les teams sont bien créées. J'ai fais un test en créant un bot à côté du joueur : local x, y, z = getElementPosition(player) x = x + 5 local pedid = createPed(0, x, y, z) Ensuite je créé le blip et l'attache sur le bot : local r, v, b = getTeamColor(getPlayerTeam(player)) local blip = createBlipAttachedTo(pedid, 0, 2, r, v, b) Jusque là, tout va bien, le blip est affiché pour tout le monde, avec la couleur de la team du joueur. Et là, j'ai testé pas mal de méthodes pour ne l'afficher que pour une team. En modifiant la création du blip : local _team = getPlayerTeam(player) local r, v, b = getTeamColor(_team) local blip = createBlipAttachedTo(pedid, 0, 2, r, v, b, 255, 0, 65535, _team) Cela n'affiche plus le blip. Et pareil avec la fonction setElementVisibleTo, et un marker au lieu d'un blip (testé pour les deux) : local x, y, z = getElementPosition(player) x = x + 5 myMarker = createMarker ( x, y, z ) setElementVisibleTo(myMarker, getRootElement(), false) setElementVisibleTo(myMarker, getPlayerTeam(player), true) Code repris du wiki, qui ne fonctionne pas pour moi Ne fonctionne pas non plus en retirant la ligne : setElementVisibleTo(myMarker, getRootElement(), false) Franchement, je ne sais plus quoi faire... Link to comment
nic062 Posted March 2, 2013 Share Posted March 2, 2013 Salut salut, Alors si j'ai bien compris tu désire attaché un blip à tout les joueurs d'une équipe et que cela soit uniquement visible par les membres de la team ? C'est bien ça ? Link to comment
nic062 Posted March 2, 2013 Share Posted March 2, 2013 ok, j'ai pas beaucoup de temps donc je te met sur la piste, si j'ai le temps je te ferai ça demain. Sinon voila comment je procederai : voila essaye de la sorte : local taTeam = createTeam("Team verte") if getPlayerTeam(source) == taTeam then local players = getPlayersInTeam(taTeam) for i, player in ipairs(players) do blip = createBlipAttachedTo(player, 0, 2, 0, 255, 0) setElementVisibleTo(blip, player, true) end end Tiens moi au jus Link to comment
Yoshi_27 Posted March 2, 2013 Author Share Posted March 2, 2013 J'y avais pensé justement, mais ça voudrait dire qu'à chaque connexion de joueur, il faudra parcourir tous les joueurs de la team et mettre à jour les blips... Enfin si les fonctions ne sont pas complètement fonctionnelles, il va bien falloir. Mais si j'ai bien compris ton code, et qu'il y'a bien une erreur sur la ligne : setElementVisibleTo(blip, player, true) et que la bonne réponse est : setElementVisibleTo(blip, source, true) Cela voudrait dire que chaque joueur a autant de blips que de joueurs dans la team ? Après, pour les détruire, j'ai déjà ce bout de code : for _, v in ipairs (getAttachedElements(source)) do destroyElement(v); end Donc oui, pourquoi pas, je testerais ça demain. Mais logiquement, la fonction setElementVisibleTo doit pouvoir prendre en paramètre un élement Team et diffuser l'effet à ses "enfants", donc les joueurs de la team... Bizarre non ? Link to comment
nic062 Posted March 3, 2013 Share Posted March 3, 2013 Salut salut, Mon bout de code était bon mais j'ai réfléchit au probleme avec un amis et on a trouvé un meilleur moyen que voici : COTE CLIENT Si tu veux que le blip soit également visible sur toi : local playerBlip = {} function displayPlayerBlip() local players = getElementsByType("player") for i, player in ipairs(players) do if getPlayerTeam(getLocalPlayer()) == getPlayerTeam(player) then if not isElement(playerBlip[player]) then playerBlip[player] = createBlipAttachedTo(player, 0, 2, 0, 255, 0) end elseif isElement(playerBlip[player]) then -- Destruction du blip si un joueur change de team destroyElement(playerBlip[player]) playerBlip[player] = nil end end for player, blip in ipairs(playerBlip) do -- Destruction des blip des joueurs qui quittent la partie if not isElement(player) then destroyElement(blip) playerBlip[player] = nil end end end addEventHandler("onClientRender", getRootElement(), displayPlayerBlip) Si tu veux qu'il n'y ai pas de blip sur toi mais que les autres de ton équipe te vois tout de même : COTE CLIENT local playerBlip = {} function displayPlayerBlip() local players = getElementsByType("player") for i, player in ipairs(players) do if player ~= getLocalPlayer() and getPlayerTeam(getLocalPlayer()) == getPlayerTeam(player) then if not isElement(playerBlip[player]) then playerBlip[player] = createBlipAttachedTo(player, 0, 2, 0, 255, 0) end elseif isElement(playerBlip[player]) then -- Destruction du blip si un joueur change de team destroyElement(playerBlip[player]) playerBlip[player] = nil end end for player, blip in ipairs(playerBlip) do -- Destruction des blip des joueurs qui quittent la partie if not isElement(player) then destroyElement(blip) playerBlip[player] = nil end end end addEventHandler("onClientRender", getRootElement(), displayPlayerBlip) Voila voila, testé et fonctionnel Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now