Mam ma?y problem z dynamicznym systemem. Mam dodawane przystanki dynamicznie i po wpisaniu /autobus gdy nie jeste?my na przystanku wysy?a wiadomo?? do gracza, ?e nie znajduje si? na przystanku. Gdy jestem na przystanku wy?wietla si? GUI z miejscami gdzie mog? si? uda?, tylko wysy?a mi wtedy te? wiadomo??, ?e nie znajduj? si? na przystanku, pomimo ?e na nim jestem i GUI si? wy?wietli?o.
Kod:
Bez u?ycia zmiennej bool, tylko zwyk?ego else te? to nie dzia?a.
Problem polega na tym, ?e jeste? na jednym przystanku, ale nie zatrzymujesz kodu, a powiniene? to zrobi?, bo inaczej p?tla leci dalej. Sprawdza, czy jeste? na nast?pnym przystanku, no ale nie jeste?, bo jeste? na innym, wi?c zmienna przyjmuje warto?? true. Po dodaniu return kod si? zatrzyma.
No niestety nie zadzia?a, bo je?li gracz nie b?dzie na przystanku o numerze 0, to wy?wietli mu si? wiadomo??, ?e nie jest na przystanku autobusowym i kod si? zatrzyma, bo jest return.
Okej to ju? dzia?a, jednak jak ju? za?o?y?em temat to zapytam o jeszcze jedn? rzecz. Jak zrobi? tak? opcj?, ?e gdy jestem na tym przystanku, np. o uID 10 i gdy wpisz? komend? /uidprzystanku to wy?wietli mi w konsoli uID tego przystanku? Chodzi mi o to jak zrobi? pobieranie tego uID przystanku. My?la?em zrobi? to za pomoc? p?tli, tak jak mia?em w tamtym kodzie co poda?em, ale to nie zadzia?a, bo p?tla wykona si? na wszystkie przystanki, a ja chce pobra? uID tego, na kt?rym si? znajduje. Ma kto? jakie? pomys?y?
No musisz zrobi? p?tl?, mo?e by? taka sama jak z tym dialogiem, tylko zamiast dialogu robisz to, co chcesz, a numerem ID b?dzie po prostu warto?? zmiennej z p?tli.
Okej, rozumiem. To uid b?dzie mi potrzebne m.i w timerze co sekund?, wi?c wykonywanie takiej p?tli co sekund? nie b?dzie obci??a? za bardzo serwera?
My?la?em aby po p?tli zapisa? to uid do zmiennej np. new uid[MAX_PLAYERS], czyli po p?tli for(new x;...) da? x = uid[playerid] i p??niej odczytywa? sobie warto?? z tej tablicy kiedy b?dzie mi to potrzebne, tylko czy taki kod zadzia?a oraz co by?oby lepszym rozwi?zaniem, ta p?tla co sekund?, czy zapis do zmiennej i odczytywanie warto?ci?
Za bardzo nie wiem co teraz chcesz osi?gn?? w tym kodzie. Je?li dobrze zrozumia?em, to chcesz przechowywa? ID przystanku, na kt?rym znajduje si? gracz? Je?li tak, to p?tla nie jest dobrym rozwi?zaniem, bo co sekund? ju? jest p?tla na wszystkich graczy, teraz jeszcze chcesz doda? kolejn? p?tl? w p?tli dla graczy, nie jest to dobrym pomys?em. Polecam u?y? streamera od Incognito, posiada bardzo przydatne funkcje je?li chodzi o strefy. Za pomoc? funkcji tworzysz okre?lon? stref? i je?li gracz wejdzie w t? stref?, to wywo?uje si? callback i tam mo?esz zapisywa? aktualny przystanek gracza i nie wymaga to p?tli. Oczywi?cie zale?y to od ilo?ci przystank?w, bo je?li ich jest kilka, to jeszcze ujdzie, ale je?li ich jest ju? troch? wi?cej, no to streamer jest chyba najlepszym wyj?ciem.
U siebie te funkcje od stref wykorzystuj? gdzie si? da. Przy domach, kiedy gracz wchodzi w pickup (nie u?ywam callbacku OnPlayerPickUpDynamicPickup, bo wykonuje si? kilka razy, je?li gracz stoi w miejscu, a dla stref callback OnPlayerEnterDynamicArea wykona si? tylko raz), przy walkach o tereny, przy zabawach gdzie teren jest ograniczony.
Combacior, w sumie to potrzebne jest mi to nie koniecznie do przystank?w, ale na ich przyk?adzie chcia?bym to pokaza?.
Chodzi?o mi o co? takiego, ?e jak wpisze komend? np. /autobus, daj? p?tle for(new x;...) i sprawdzam na przystanku o jakim uID jest gracz, daj? kod w stylu uidprzystanku[playerid] = x;. Wtedy mia?bym zapisane uID do zmiennej chyba, co wykluczy?oby mi u?ywania p?tli co sekund?, bo nie musia?bym za ka?dym razem p?tl? sprawdza? na jakim przystanku (o jakim uID) jest gracz, tylko korzysta? z zapisanego uID. P??niej uruchamiam timer, gdzie b?d? sprawdza? czy pewna warto?? dla przystanku na jakim si? jest nie jest r?wna 0.
Poka?? to na przyk?adzie kr?tkiego kodu:
I teraz na przyk?adzie p?tli:
Kt?ry spos?b by?by lepszy? Czy zmieni? to na ten spos?b co Ty pisa?e?? Wola?bym jednak zosta? przy kt?rym?, kt?ry ja poda?em.
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