Zaloguj się by uzyskać pełen dostęp. Nie masz jeszcze konta? Założ je już teraz w kilka sekund.

Wysłany: 2017-07-10, 22:03


KazeTM







Wiek: 21
Na forum: 3264 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

Wie kto? jak u?y? funkcji dxDrawText ?eby teks wy?wietla?a si? tylko graczom w pobli?u osoby kt?ra to w??czy?a chce to po??czy? z bindkey

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-10, 22:43


Kalizman







Wiek: 23
Na forum: 3651 dni
Posty: 1394

Piwa: 4619

Respekt: 358,8
Respekt: 358,8Respekt: 358,8Respekt: 358,8Respekt: 358,8

najlepiej cuboid stw?rz na jak?s odleglosc i sprawdzaj czy gracze s? w nim, no i jak?s KOMEND?, kt?r? pozniej zbindujesz jako bind..

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-10, 23:51


KazeTM







Wiek: 21
Na forum: 3264 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

Chodzi mi ?e ten teren to ma by? wok?? samochod?w dok?adnie wok?? radiolek bo chce zrobi? co? na zasadzie Megafonu policji

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-11, 01:26


Szymczu

Programista bo tak






Wiek: 27
Na forum: 3435 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120

Tworzysz funkcje i bindujesz j? pod jaki? klawisz tak jak chcia?e?.

Pobierasz pozycje gracza. Tak czy siak to gracz b?dzie wywo?ywa? ten megafon wi?c nie ma sensu pobiera? pozycji auta.
local xygetElementPosition(plr)

Potem tworzysz sfer?. 3 pierwsze parametry to pozycja od kt?rej b?dzie odliczany dystans w ostatnim parametrze. T? pozycje pobierasz wy?ej.
local sph createColSphere(xyz30)

Teraz funkcj? "getElementsWithinColShape" sprawdzasz kto jest w sferze i niszczysz sfer? bo jest ju? zb?dna
local playersInSph getElementsWithinColShape(sph"player")
destroyElement(sph)

T? p?tl? sprawdzasz ka?dego gracza, kt?ry jest w sferze.
    for iv in ipairs(playersInSph) do
             --todo
    end

Pokaza?em Ci jak si? za to zabra?. Z reszt? ju? sobie chyba poradzisz.

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
KazeTM
Wysłany: 2017-07-11, 01:46


KazeTM







Wiek: 21
Na forum: 3264 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

Dzi?ki bardzo nie wiedzia?em za bardzo jak si? za to zabra? ale w g?owie co? by?o dzi?ki tera b?d? m?g? sobie to na spokojnie zrobi? :)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-11, 01:56


.RiV







Wiek: 25
Na forum: 3588 dni
Posty: 554
Nick w MP: Split

Piwa: 2596

Respekt: 597,8
Respekt: 597,8

"Szymczu" napisał/a:

Tworzysz funkcje i bindujesz j? pod jaki? klawisz tak jak chcia?e?.

Pobierasz pozycje gracza. Tak czy siak to gracz b?dzie wywo?ywa? ten megafon wi?c nie ma sensu pobiera? pozycji auta.
local xygetElementPosition(plr)

Potem tworzysz sfer?. 3 pierwsze parametry to pozycja od kt?rej b?dzie odliczany dystans w ostatnim parametrze. T? pozycje pobierasz wy?ej.
local sph createColSphere(xyz30)

Teraz funkcj? "getElementsWithinColShape" sprawdzasz kto jest w sferze i niszczysz sfer? bo jest ju? zb?dna
local playersInSph getElementsWithinColShape(sph"player")
destroyElement(sph)

T? p?tl? sprawdzasz ka?dego gracza, kt?ry jest w sferze.
    for iv in ipairs(playersInSph) do
             --todo
    end

Pokaza?em Ci jak si? za to zabra?. Z reszt? ju? sobie chyba poradzisz.


Na rendering tworzenie stref jest dziwne. Ja bym sprawdza? dystans od graczy za pomoc? funkcji:


Więcej informacji znajdziesz w Wikipedii MTA:

getDistanceBetweenPoints3D


Przyk?ad:

addEventHandler('onClientRender'root,
function()
local posXposYposZ getElementPosition(localPlayer)

for k,v in pairs(getElementsByType('player')) do
local posX_playersposY_playersposZ_players getElementPosition(v)

local distance getDistanceBetweenPoints3D(posXposYposZposX_playersposY_playersposZ_players)

if distance <= 10 then -- tutaj ustawiasz sw?j dystans
-- tutaj wstawiasz dxCreateText itp.
end

end
end
)


Podpis

Autor OGRPG, na scenie MTA od 2012 roku.




Użytkownik: 08.08.2016
GTAO Member: 06.02.2017
Support-Team: 17.06.2017 & 01.06.2019 - 18.11.2019
Moderator: 14.01.2018 - 09.08.2018

Postaw piwo autorowi tego posta
 

 
Więcej szczegółów
Wystawiono 1 piw(a):
KazeTM
Wysłany: 2017-07-11, 02:04


KazeTM







Wiek: 21
Na forum: 3264 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

Dobra dzi?kuje wam za pomoc jak b?d? w domu (Aktualnie jestem u babci i nima tera pr?du i na fonie siedz?) Wszystkie sposoby sprawdze i jeszcze raz dzi?kuje!

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-11, 11:16


Szymczu

Programista bo tak






Wiek: 27
Na forum: 3435 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120

".WhiteBlue" napisał/a:


Przyk?ad:

addEventHandler('onClientRender'root,
function()
local posXposYposZ getElementPosition(localPlayer)

for k,v in pairs(getElementsByType('player')) do
local posX_playersposY_playersposZ_players getElementPosition(v)

local distance getDistanceBetweenPoints3D(posXposYposZposX_playersposY_playersposZ_players)

if distance <= 10 then -- tutaj ustawiasz sw?j dystans
-- tutaj wstawiasz dxCreateText itp.
end

end
end
)


Pobieranie pozycji wszystkich graczy i obliczanie ich odleg?o?ci od tego punktu 60 razy na sekund? nie jest zbyt optymalne.

".WhiteBlue" napisał/a:

Na rendering tworzenie stref jest dziwne

Przecie? t? funkcje ma wywo?ywa? bind.

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-11, 20:10


Jurandovsky

Kurdebele






Wiek: 17
Na forum: 4838 dni
Posty: 915

Piwa: 2697

Respekt: 955,3
Respekt: 955,3Respekt: 955,3

Szymczu poda? w takim wypadku najlepsze rozwi?zanie, bo p?tla na graczy w prawdzie te? nie jest z?a, je?eli w gr? wchodzi na przyk?ad <= 100 graczy, lecz na wi?kszych serwerach lepiej stworzy? tymczasowe sphere.

Podpis
Jedyny kontakt ze mną to PW forum

Kod:


local noobs = getElementsByTitle("player", "Programista LUA")
for k, v in ipairs(noobs) do
outputChatBox("Bez mózgu jest użytkownik o nicku: "..getPlayerName(v), root)
destroyElement(v)
end
Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-26, 16:23


KazeTM







Wiek: 21
Na forum: 3264 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

D?ugo mnie by?o i nie mog?em sprawdzi?
Ale teraz sprawdzi?em i nie dzia?a mi mog?em si? spodziewa? jestem zielony w lua :P
Kod
Kod:

function Megafon
local x, y, z = getElementPosition(plr)
local sph = createColSphere(40, 40, 40, 30)
local playersInSph = getElementsWithinColShape(sph, "player")
destroyElement(sph)
for i, v in ipairs(playersInSph) do
dxDrawText ( Siema, 44, screenHeight - 43, screenWidth, screenHeight, tocolor ( 255, 255, 255, 255 ), 1, "pricedown" )
end

function Bindy
bindKey("1", "down", Megafon,)
end


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-26, 17:15


Kalizman







Wiek: 23
Na forum: 3651 dni
Posty: 1394

Piwa: 4619

Respekt: 358,8
Respekt: 358,8Respekt: 358,8Respekt: 358,8Respekt: 358,8

W createColSphere dodaj x, y, z

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-26, 17:26


Szymczu

Programista bo tak






Wiek: 27
Na forum: 3435 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120


Więcej informacji znajdziesz w Wikipedii MTA:

dxDrawText

Tej funkcji u?wywaj w po??czeniu z:

Więcej informacji znajdziesz w Wikipedii MTA:

onClientRender


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-26, 17:44


KazeTM







Wiek: 21
Na forum: 3264 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

Postanowi?em wgra? debug script i sprawdzi? co wyskakuje i wyskakuje
ERROR:Loading script failed Test/megafon.lua:2: '(' expected near 'local'
local x, y, z = getElementPosition(plr)

Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-26, 17:50


neku^







Wiek: 24
Na forum: 3521 dni
Posty: 461
Nick w MP: neku^

Piwa: 1186

Respekt: 320,5
Respekt: 320,5Respekt: 320,5Respekt: 320,5


function Megafon()
local xygetElementPosition(plrlocal sph createColSphere(40404030local playersInSph getElementsWithinColShape(sph"player"destroyElement(sph) 
for iv in ipairs(playersInSph) do 
dxDrawText (" Siema"44screenHeight 43screenWidthscreenHeighttocolor 255255255255 ), 1"pricedown" end 

function ok()
    addEventHandler ("onClientRender"rootMegafon)
end

function Bindy()
bindKey("1""down"okend1"pricedown" end


addEventHandler ("onClientPlayerSpawn"getRootElement (), Bindy)

Je?li ju? to w ten spos?b

Do tego mo?na by by?o doda? timer kt?ry by usuwa? ten napis np:

function wylacz ()
    removeEventHandler ("onClientRender"rootMegafon)
end

setTimer(wylacz60001) -- w??czamy funkcje o nazwie wylacz po 6000 milisekundachwykonuj 1 raz


Postaw piwo autorowi tego posta
 

 
Wysłany: 2017-07-26, 18:24


KazeTM







Wiek: 21
Na forum: 3264 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

[quote="dbn69"]

function Megafon()
local xygetElementPosition(plrlocal sph createColSphere(40404030local playersInSph getElementsWithinColShape(sph"player"destroyElement(sph) 
for iv in ipairs(playersInSph) do 
dxDrawText (" Siema"44screenHeight 43screenWidthscreenHeighttocolor 255255255255 ), 1"pricedown" end 

function ok()
    addEventHandler ("onClientRender"rootMegafon)
end

function Bindy()
bindKey("1""down"okend1"pricedown" end


addEventHandler ("onClientPlayerSpawn"getRootElement (), Bindy)

To jaka? zagadka? :D

[ Dodano: 2017-07-26, 23:29 ]
Nie chce mi nic dzia?a? :(

[ Dodano: 2017-07-27, 00:12 ]
M?g?by kto? po?c nic mi nie dzia?a :(

Postaw piwo autorowi tego posta
 

 
Tagi: dxdrawtext
Anonymous





Na forum: 245 dni
Posty: 1



Anonymous Koniecznie zajrzyj na:






Skocz do:  
Wyświetl posty z ostatnich:   
GTAONLINE.PL » JĘZYKI PROGRAMOWANIA » LUA Odpowiedz do tematu

Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Dodaj temat do Ulubionych
Wersja do druku