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: 22
Na forum: 3405 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: 24
Na forum: 3792 dni
Posty: 1394

Piwa: 4624

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: 22
Na forum: 3405 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: 3576 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 x, y, z = getElementPosition(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(x, y, z, 30)

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 i, v 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: 22
Na forum: 3405 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: 26
Na forum: 3729 dni
Posty: 554
Nick w MP: Split

Piwa: 2598

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 x, y, z = getElementPosition(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(x, y, z, 30)

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 i, v 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 posX, posY, posZ = getElementPosition(localPlayer)

for k,v in pairs(getElementsByType('player')) do
local posX_players, posY_players, posZ_players = getElementPosition(v)

local distance = getDistanceBetweenPoints3D(posX, posY, posZ, posX_players, posY_players, posZ_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: 22
Na forum: 3405 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: 3576 dni
Posty: 194
Nick w MP: Szymczu

Piwa: 36

Respekt: 120
Respekt: 120

".WhiteBlue" napisał/a:


Przyk?ad:

addEventHandler('onClientRender', root,
function()
local posX, posY, posZ = getElementPosition(localPlayer)

for k,v in pairs(getElementsByType('player')) do
local posX_players, posY_players, posZ_players = getElementPosition(v)

local distance = getDistanceBetweenPoints3D(posX, posY, posZ, posX_players, posY_players, posZ_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: 4979 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: 22
Na forum: 3405 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: 24
Na forum: 3792 dni
Posty: 1394

Piwa: 4624

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: 3576 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: 22
Na forum: 3405 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: 3662 dni
Posty: 461
Nick w MP: neku^

Piwa: 1186

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


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 ok()
    addEventHandler ("onClientRender", root, Megafon)
end

function Bindy()
bindKey("1", "down", ok) 
end, 1, "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", root, Megafon)
end

setTimer(wylacz, 6000, 1) -- w??czamy funkcje o nazwie wylacz po 6000 milisekundach, wykonuj 1 raz


Postaw piwo autorowi tego posta
 

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


KazeTM







Wiek: 22
Na forum: 3405 dni
Posty: 14
Nick w MP: ArianPL



Respekt: 50

[quote="dbn69"]

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 ok()
    addEventHandler ("onClientRender", root, Megafon)
end

function Bindy()
bindKey("1", "down", ok) 
end, 1, "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 » dxDrawText 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