IPB

Witaj Gościu ( Zaloguj | Rejestruj )

> Uwaga!

Zanim zadasz pytanie:

1. Sprawdź czy odpowiedzi nie ma w dziale FAQ lub czy podobnego tematu nie było na forum
2. Zapoznaj się z polskim tłumaczeniem dokumentacji (help)
3. Zapoznaj się też z naszymi kursami i przykładami


Powtarzające się pytania będą karane ostrzeżeniami lub usuwaniem tematów !!!

Nigdy nie nazywaj tematu "Pomoc", "Help me!" itp. Tytuł tematu powinien być "mówiący" czyli taki, który od razu po przeczytaniu informuje o poruszanym w nim problemie.

PROSIMY PISAĆ CZY TEMAT DOTYCZY GameMaker 8.1, GameMaker:Studio LUB WCZEŚNIEJSZYCH!!!!

 
Reply to this topicStart new topic
Skrypt - "zaawansowany lighting"
ProExCurator
post 11.02.2017 - 4:00
Post #1


Chicken


Wiek: ?
Grupa: Użytkownicy
Postów: 18
Dołączył: 18.01.2017
Uploader
Ostrzeżenia:
(0%) -----


Więc znalazłem na necie bardzo fajny, płynne działający "silnik" dla "latarki".

https://drive.google.com/file/d/0B5tuOPULqE...&authuser=1
http://www.masterxy.bplaced.net/download.php (wersja nowsza, ma mniej skryptów)

I wszystko byłoby super gdyby nie fakt że skrypt nie działa gdy go przeniosłem do mojej gry.

GML
################################################################################
############
FATAL ERROR in
action number 1
of Step Event0
for object obj_control:

Variable obj_control.sur(100002, -2147483648) not set before reading it.
at gml_Object_obj_control_StepNormalEvent_1 (line 2) - surface_set_target(sur);
################################################################################
############


Ludzie w komentarzach przy tym filmiku - https://www.youtube.com/watch?v=A4VJgI-Xao0 również piszą, że dostają ten błąd w różnych sytuacjach.

Poczytałem to co znalazłem dzięki Google i jedyna sensowna odpowiedz na podobny przypadek z podobnym skryptem była taka, że surface może w każdej chwili zostać usunięty z pamięci i trzeba sprawdzić czy się tak nie stało, jeżeli tak to znowu stworzyć surface. Nie wiem czy to ma sens - tłumaczone z ang.
Dla mnie cały ten skrypt to póki co "trochę" zbyt zaawansowana sprawa, gdyby jednak działał to bardzo chętnie bym go wykorzystał w swojej grze.

Może znajdzie się tutaj jakiś magik, który by pomógł znaleźć przyczynę występowania błędu i sposobu jego rozwiązania?
Go to the top of the page
 
+Quote Post
post 11.02.2017 - 4:00
Post #





Wiek:



Uploader


Pani kontekstowa pokazuje swe wdzięki tylko w Valhalli lub wszędzie jeżeli nie jesteś zalogowany(a)! :3
Go to the top of the page
 
Quote Post
gnysek
post 11.02.2017 - 12:43
Post #2


Emerytowany Admin
************

Wiek: 29 lat
Grupa: Użytkownicy
Postów: 9,045
Dołączył: 2.06.2004
Skąd: Banino / Trójmiasto
Team: Gear-Studio

gnysek


Nagrody:
Najbardziej pomocny uzytkownik (CA 2011)

Uploader
Ostrzeżenia:
(0%) -----


Surface lub zmienna nie istnieje. Zawsze trzeba sprawdzać czy surface istnieje zanim go użyjesz i w razie potrzeby utworzyć ponownie. Karta graficzna może surface wywalać w razie potrzeb kiedy chce, to taka nieco "tymczasowa" grafika zwalniana gdy coś innego potrzebuje tej pamięci w danym momencie (i zawsze zwalniana gdy przechodzisz do fullscreena/wylogowujesz sie/włącza się screensaver/komputer gasi monitor).


--------------------
GMCLAN NA FACEBOOKU: facebook.com/GMCLAN

Aktualne gry w PlayStation Plus

Obecne Projekty:
[||||||||||] Word Memo - 35%
[||||||||||] Digy Digy Dig - 30% [on hold]
[||||||||||] Almora Origins - 50%
Go to the top of the page
 
+Quote Post
ProExCurator
post 11.02.2017 - 18:14
Post #3


Chicken


Wiek: ?
Grupa: Użytkownicy
Postów: 18
Dołączył: 18.01.2017
Uploader
Ostrzeżenia:
(0%) -----


CYTAT(gnysek @ 11.02.2017 - 12:43) *
Surface lub zmienna nie istnieje. Zawsze trzeba sprawdzać czy surface istnieje zanim go użyjesz i w razie potrzeby utworzyć ponownie. Karta graficzna może surface wywalać w razie potrzeb kiedy chce, to taka nieco "tymczasowa" grafika zwalniana gdy coś innego potrzebuje tej pamięci w danym momencie (i zawsze zwalniana gdy przechodzisz do fullscreena/wylogowujesz sie/włącza się screensaver/komputer gasi monitor).


I próbowałem właśnie "tworzyć ponownie" surface. Próbowałem to osiągnąć w ten sposób, ale nie działa...

GML
sur = surface_create(room_width, room_height);

if !surface_exists(sur) {
sur = surface_create(room_width, room_height);
}


Więc właśnie miałem nadzieje że ktoś podpowie jak zrobić to prawidłowo?
Go to the top of the page
 
+Quote Post
ediepl
post 11.02.2017 - 19:33
Post #4


Master of Forums
*********

Wiek: 21 lat
Grupa: Użytkownicy
Postów: 1,635
Dołączył: 21.01.2011
Skąd: Swarzędz

ediepl


Nagrody:
Najlepszy Silnik (CA 2012)

Uploader
Ostrzeżenia:
(0%) -----


Tylko że sprawdzanie czy surface istnieje powinno być przed jego rysowaniem/rysowanie na nim
Go to the top of the page
 
+Quote Post
ProExCurator
post 12.02.2017 - 0:54
Post #5


Chicken


Wiek: ?
Grupa: Użytkownicy
Postów: 18
Dołączył: 18.01.2017
Uploader
Ostrzeżenia:
(0%) -----


CYTAT(ediepl @ 11.02.2017 - 19:33) *
Tylko że sprawdzanie czy surface istnieje powinno być przed jego rysowaniem/rysowanie na nim


To nie bardzo rozumiem, jak w takim razie powinien wyglądać kod?
Go to the top of the page
 
+Quote Post
I am vader
post 12.02.2017 - 1:00
Post #6


Wiadro of Antytrollerstwo
Ikona grupy

Wiek: 22 lata
Grupa: Moderatorzy
Postów: 1,724
Dołączył: 24.07.2008
Skąd: Gdynia

SSPH


Nagrody:
Uzytkownik roku (CA 2015)

Uploader
Ostrzeżenia:
(0%) -----


za każdym razem kiedy chcesz użyć surface, zanim go użyjesz:

if !surface_exists(sur) sur = surface_create(szerokosc, wysokosc);


--------------------

5678(ale ten czas leci!) lat później nadal go kaleczę.
GM GMS GML GMC Game Maker Studio Language Community Polska
Unity Tutoriale Poradniki Silniki Gotowce Dyskusje Pomoc Pytania Początkujący Zaawansowany Forum
Mój nick jest głupi. Ranga też. Ale to kawał forumowej histori więc zostanie tak na zawsze.
Go to the top of the page
 
+Quote Post
ProExCurator
post 12.02.2017 - 2:25
Post #7


Chicken


Wiek: ?
Grupa: Użytkownicy
Postów: 18
Dołączył: 18.01.2017
Uploader
Ostrzeżenia:
(0%) -----


Okay, działa, dzięki bardzo ;]
Go to the top of the page
 
+Quote Post
gnysek
post 13.02.2017 - 10:17
Post #8


Emerytowany Admin
************

Wiek: 29 lat
Grupa: Użytkownicy
Postów: 9,045
Dołączył: 2.06.2004
Skąd: Banino / Trójmiasto
Team: Gear-Studio

gnysek


Nagrody:
Najbardziej pomocny uzytkownik (CA 2011)

Uploader
Ostrzeżenia:
(0%) -----


Polecam zrobić taką funkcję/skrypt:

surface_check_and_set(surfaceid, width, height)

GML
var s;
if (!surface_exists(argument0) {
s = surface_create(argument1, argument2);
} else {
s = argument0;
}

surface_set_target(s);


I używanie tego zamiast surface_set_target(). Oczywiście mozna to ulepszyć i w globalnych zapisać wysokośc i szerokośc, żeby potem łatwo było zmienić, ale to już zostawiam własnym chęciom i wygodzie, bo jak surface uzywamy w jednym miejscu, to moze się nie opłacać pisać ekstra kodu bo szkoda czasu.


--------------------
GMCLAN NA FACEBOOKU: facebook.com/GMCLAN

Aktualne gry w PlayStation Plus

Obecne Projekty:
[||||||||||] Word Memo - 35%
[||||||||||] Digy Digy Dig - 30% [on hold]
[||||||||||] Almora Origins - 50%
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 użytkownik(ów) przegląda ten temat (1 gości i 0 anonimowych użytkowników)
0 Użytkownicy:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2017 - 18:37