Skocz do zawartości

H2S04

Użytkownicy
  • Zawartość

    36
  • Rejestracja

  • Ostatnia wizyta

Zawartość dodana przez H2S04

  1. Bry. Walczę z tym shitem, i już nie wiem ocb. WG debug_message omija mi Goto = true {...}... Ale po kolei. Chcę by itemki łączyły się jak np. w Graveyard Keeper, po prostu leciały do siebie, i zwiększały ilość. Poniekąd kod działa, jednak jest mały problem... Czasami obiekty są blisko siebie i nie chcą się połączyć, dopiero jak stworzę dwa lub trzy nowe i któreś się złączą, to w tedy reszta może się połączyć. Coś chyba pokićkałem w kodzie. Pozdrawiam if FindMultiple2 == true{ // Aktywowanie szukania var i, obj; for (i = 0; i < instance_number(o_Wood); i++){ obj[i] = instance_find(o_Wood,i); // Ustalenie numeru szukanego obiektu if obj[i].Amount >= Amount{ // #1 Jezeli Ilosc w danym obiekcie jest wieksza lub rowna FindMultiple2 = false; // Wylacz szukanie Mx = obj[i].x; // Pobierz x My = obj[i].y; // Pobierz y GoTo = true; // Wlacz ruch obiektu timer = 30; // ustaw timer na 30; } else { FindMultiple2 = true; // #1 Jeżeli nie to szukaj od nowa } } } if GoTo = true{ // Jeżeli ruch jest wlaczony if point_distance(x,y,Mx,My) > 10 and point_distance(x,y,Mx,My) < 250{ // Jezeli odleglosc od obiektu jest wieksza od 10 i mniejsza od 250 direction = point_direction(x,y,Mx,My); // obroc sie w jego strone speed = 20; // idz } else { // jezeli nie if point_distance(x,y,Mx,My) <= 10 { // jezeli jest mniejsza od 10 GoTo = false; // wylacz ruch speed = 0; // wylacz speed col = collision_circle(x,y,10,o_Wood,false,true); // ustal kolizje if col{ // jezeli jest kolizja col.Amount += Amount; // dodaj do kolizji swoja ilosc Amount = 0; // ustal ja na wszelki wypadek na 0 instance_destroy(); // zniszcz sie } } } } // tutaj wiadomo ocb if timer >= 0 { timer -= 1; } else { FindMultiple2 = true; }
  2. Łączenie przedmiotów

    Nie ma problemu, jeszcze do tego wrócę
  3. Łączenie przedmiotów

    E tam, nie odblokowywało itemu do zebrania, na razie borykam się z innym problemem 😂
  4. Łączenie przedmiotów

    EDIT: Po napisaniu inwentarza, nie idzie czasami podnieść obiektu bo fiksuje. Będę musiał napisać to od nowa -.- A jak nie będzie działać, to po prostu z tego zrezygnuje... Amount to po prostu zmienna, która przechowuje ilość. Przy stworzeniu obiektu jest to 1, bo jest jeden obiekt i tyle ma pobrać przy łączeniu się chyba, że po złączeniu ma więcej. Właśnie po napisaniu show_debug_message, pokazuje mi, że kod GoTo = True, się nie wykonuje, mimo, że timer działa... Zaraz napiszę wszystkie debugi i eytuję post dla wglądu. (czy mi się wydaje, czy timer dostaje szału? bo widzę po debugu, tu ma 30 tu nagle 17 tu nagle 30...) (Kurła, wszytko się rozwala tutaj, dlatego wrzucam debug do pliku tekstowego i tutaj kod, by nie walnąć posta na całą stronę, bo spoiler wszystko psuje, a nie chce robić śmietnika...) show_debug_message(" Start Step "); show_debug_message(" Nastepe if FindMultiple 2 == true"); if FindMultiple2 == true{ // Aktywowanie szukania show_debug_message(" If Find multiple2 == true "); var i, obj; show_debug_message(" Ustal var i, obj, "); show_debug_message(" start 'FOR' "); for (i = 0; i < instance_number(o_Wood); i++){ show_debug_message(" ustalanie obj[i] "); show_debug_message(" [i] ="+string(i)); obj[i] = instance_find(o_Wood,i); // Ustalenie numeru szukanego obiektu show_debug_message(" obj[i] ="+string(obj[i])); show_debug_message(" Przejscie do szukania obiektu z iloscia (if obj[i].Amount >= AMount "); if obj[i].Amount >= Amount{ // #1 Jezeli Ilosc w danym obiekcie jest wieksza lub rowna show_debug_message(" Jezeli obiekt z iloscia > od mojej ilosci: obj[i].Amount, obj[:"+string(i)+"]."+string(obj[i].Amount)); FindMultiple2 = false; // Wylacz szukanie show_debug_message(" Zmien FindMultiple z true na false "); Mx = obj[i].x; // Pobierz x show_debug_message(" ustal MX = obj[i].x "); My = obj[i].y; // Pobierz y show_debug_message(" ustal My = obj[i].y "); GoTo = true; // Wlacz ruch obiektu show_debug_message(" GoTo = true "); timer = 30; // ustaw timer na 30; show_debug_message(" Ustaw timer na 30 "); show_debug_message(" Koniec If Amount >= Amount "); } else { show_debug_message(" Else "); FindMultiple2 = true; // #1 Jeżeli nie to szukaj od nowa show_debug_message(" FindMultiple = True // szukaj od nowa "); } show_debug_message(" Koniec For "); } show_debug_message(" Koniec Multiple2 == true "); } show_debug_message(" KONIEC SZUKANIA "); show_debug_message(" . "); show_debug_message(" . "); show_debug_message(" . "); show_debug_message(" Przejscie do GoTo = true // nastepna linijka powinna byc jezeli GoTo = true "); if GoTo = true{ // Jeżeli ruch jest wlaczony show_debug_message(" jezeli GoTo = True "); show_debug_message(" Przejscie do obliczania odleglosci "); if point_distance(x,y,Mx,My) > 10 and point_distance(x,y,Mx,My) < 250{ // Jezeli odleglosc od obiektu jest wieksza od 10 i mniejsza od 250 show_debug_message(" Jezeli odleglosc > 10 i < 250 "); direction = point_direction(x,y,Mx,My); // obroc sie w jego strone show_debug_message(" uslal dira "); speed = 20; // idz show_debug_message(" ustal speed "); show_debug_message(" Koniec GoTo = True "); } else { show_debug_message(" ELSE ");// jezeli nie show_debug_message(" Przejscie do point distance "); if point_distance(x,y,Mx,My) <= 10 { // jezeli jest mniejsza od 10 show_debug_message(" Jezeli Point Distance < 10 "); GoTo = false; // wylacz ruch show_debug_message(" GoTo = false "); speed = 0; // wylacz speed show_debug_message(" speed = 0 "); col = collision_circle(x,y,10,o_Wood,false,true); // ustal kolizje show_debug_message(" Ustalam col= colision "); show_debug_message(" Przejscie do Col "); if col{ // jezeli jest kolizja show_debug_message(" If Col "); col.Amount += Amount; // dodaj do kolizji swoja ilosc show_debug_message(" Pobierz ilosc i dodaj do col "); Amount = 0; // ustal ja na wszelki wypadek na 0 show_debug_message(" Ulstal na 0 "); instance_destroy(); // zniszcz sie show_debug_message(" usun sie "); show_debug_message(" kONIEC COL "); } show_debug_message(" KONIEC IF POINT DISTANCE "); } show_debug_message(" KONIEC ELSE "); } show_debug_message(" KONIEC GOTO przed nawiasem }"); } show_debug_message(" KONIEC CALEGO KODU GO TO "); show_debug_message(" . "); show_debug_message(" . "); show_debug_message(" . "); // tutaj wiadomo ocb show_debug_message(" Przescie do timera "); if timer >= 0 { show_debug_message(" Jezeli Timer >= 0 "); show_debug_message(" Timer = "+string(timer)); timer -= 1; show_debug_message(" Odejmij -1 "); show_debug_message(" koniec odejmowania timera "); } else { show_debug_message(" else // jezeli timer <= 0 "); FindMultiple2 = true; show_debug_message(" szukaj obiektu // FindMultiple2 = true "); show_debug_message(" koniec Else "); } show_debug_message(" Koniec Timera "); show_debug_message(" KONIEC STEPU "); DEBUG MESSAGE.rtf
  5. Temat zbiorczy na drobnostki

    Czemu 15*room_speed daje mi 10s zamiast 15, a 30*room_speed 20s 😳 PS. Napisałem swój zegar ale ciekawi mnie to (gra ustawiona na 60fps)
  6. Temat zbiorczy na drobnostki

    Gdzieś wydybałem jak gnysek pisał o plikach ini, że lepiej sprawuje się string jak real, dodałem linijkę real() i jest gitara 😁
  7. Temat zbiorczy na drobnostki

    Jutro po robocie (po 20) obczaję, jak coś napisze, czy pykło, pozdrówki 😁
  8. Temat zbiorczy na drobnostki

    Mam taki fajny error. Czemu nie chce mi zmienić wielkości surface? Jak wpiszę liczby 1920 i 1080, odczytuje normalnie i działa, a jak chce odczytać z ini, to nie chce, nawet jak próbuję odczytać ini inną zmienną. OCB? Znalazłem, że multiplikacja ale dalej nie wiem ocb. ___________________________________________ ############################################################################################ FATAL ERROR in action number 1 of Create Event for object o_controller: DoMul :: Execution Error at gml_Script_scr_camera (line 20) - surface_resize(application_surface,view_width*window_scale,view_height*window_scale); ############################################################################################ -------------------------------------------------------------------------------------------- stack frame is gml_Script_scr_camera (line 20) called from - gml_Object_o_controller_Create_0 (line 6) - scr_camera(); Kod Kamery: ini_open("GameOptions.ini"); view_width = ini_read_string("Resolution", "Width", 1920); view_height= ini_read_string("Resolution", "Height", 1080); ini_close(); //// TAK NIE DZIAŁA //view_width = 1920; //// TAK DZIAŁA NORMALNIE //view_height = 1080; window_scale = 3; window_set_size(view_width,view_height); surface_resize(application_surface,view_width*window_scale,view_height*window_scale); if moenter = 3{ // Jak najedzimy na back button if mouse_check_button_pressed(mb_left){ // ini file save if resolution = 1{ // jeżeli wybrana jest 1 rozdzielczość roomwid = 1920; roomhei = 1080; } else { if resolution = 2{ // etc roomwid = 1280; roomhei = 720; } else { if resolution = 3{ // etc roomwid = 1366; roomhei = 768; } else { if resolution = 4{ // itp itd roomwid = 1280; roomhei = 960; } else { if resolution = 5{ roomwid = 1024; roomhei = 768; } else { if resolution = 6{ roomwid = 800; roomhei = 600; } } } } } } ini_open("GameOptions.ini"); //Keys ini_write_string("Keys", "KeyUp", upkey); // nadpisujemy sobie keye ini_write_string("Keys", "KeyDown", downkey); ini_write_string("Keys", "KeyLeft", leftkey); ini_write_string("Keys", "KeyRight", rightkey); ini_write_string("Keys", "KeyDrop", dropkey); ini_write_string("Keys", "KeyUse", usekey); ini_write_string("Keys", "KeyGrenade", grenkey); ini_write_string("Keys", "KeyExpMenu", expmenukey); ini_write_string("Keys", "KeySprint", sprintkey); ini_write_string("Keys", "KeyWalk", walkkey); //Resolution ini_write_string("Resolution", "Width", roomwid); // ustalam szerokośc room (w tym wypadku na resloution 1 czyli 1920x1080) ini_write_string("Resolution", "Height", roomhei); // to samo z wysokością ini_write_string("Resolution", "FullScreen", fullscreen); // i czy gra ma być odpalona w full screen ini_close(); options = false; // wyłączam rysowanie opcji }
  9. Mam problem z tablicami, przerobiłem je trochę, by działać na samych tablicach i nie musieć ich nadpisywać, wcześniej wyciągałem je i nadpisywałem, ale postanowiłem skrócić kod, lecz teraz przy strzale lub przeładowaniu, wartości nie chcą wskoczyć. Strzelę nie pobierze ammo, i nie mogę znowu strzelić, gdy zmienię broń na łuk, ciągle stara się przeładować (autoreload, a ammo ustawione na 5), Draw rysuje się że magazynek pistoletu spada na 0 i wraca do 5, a amunicja z EQ, pobiera się normalnie . Co zrobiłem źle? EDIT: Naprawiłem problem strzelania, nie przyczaiłem, że alarm się nie wykona bo nie klikam przycisku... dodałem linijkę na dół kodu Czy kod się pierdzieli przez brak referencji? Zamiast zmieniać mi tablicę secweapon zmienia mi Weapon? CREATE: #region //Weapons #region //Secondray Weapons /* secweapon[,0] = "Metal Made Pistol"; //Nazwa Broni secweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[,3] = 3; //Minimalna Penetracja Pancerza secweapon[,4] = 8; //Maksymalna Penetracja Pancerza secweapon[,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[,6] = 0; //Ilość Amunicji w Magazynku secweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku */ secweapon[0,0] = "EMPTY"; //Nazwa Broni secweapon[0,1] = 0; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[0,2] = 0; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[0,3] = 0; //Minimalna Penetracja Pancerza secweapon[0,4] = 0; //Maksymalna Penetracja Pancerza secweapon[0,5] = 0; //Typ Używanej Amunicji //// secweapon[0,6] = 0; //Ilość Amunicji w Magazynku secweapon[0,7] = 0; //Maksymalna Ilość Amunicji w Magazynku secweapon[1,0] = "Wood Made Pistol"; //Nazwa Broni secweapon[1,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[1,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[1,3] = 3; //Minimalna Penetracja Pancerza secweapon[1,4] = 5; //Maksymalna Penetracja Pancerza secweapon[1,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[1,6] = 5; //Ilość Amunicji w Magazynku secweapon[1,7] = 15; //Maksymalna Ilość Amunicji w Magazynku secweapon[2,0] = "Metal Made Pistol"; //Nazwa Broni secweapon[2,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[2,2] = 1.8; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[2,3] = 3; //Minimalna Penetracja Pancerza secweapon[2,4] = 8; //Maksymalna Penetracja Pancerza secweapon[2,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[2,6] = 0; //Ilość Amunicji w Magazynku secweapon[2,7] = 20; //Maksymalna Ilość Amunicji w Magazynku secweapon[3,0] = "Normal Pistol"; //Nazwa Broni secweapon[3,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[3,2] = 1.7; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[3,3] = 5; //Minimalna Penetracja Pancerza secweapon[3,4] = 10; //Maksymalna Penetracja Pancerza secweapon[3,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[3,6] = 0; //Ilość Amunicji w Magazynku secweapon[3,7] = 25; //Maksymalna Ilość Amunicji w Magazynku secweapon[4,0] = "Better Pistol"; //Nazwa Broni secweapon[4,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[4,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[4,3] = 7; //Minimalna Penetracja Pancerza secweapon[4,4] = 12; //Maksymalna Penetracja Pancerza secweapon[4,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[4,6] = 0; //Ilość Amunicji w Magazynku secweapon[4,7] = 30; //Maksymalna Ilość Amunicji w Magazynku secweapon[5,0] = "Police Pistol"; //Nazwa Broni secweapon[5,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[5,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[5,3] = 8; //Minimalna Penetracja Pancerza secweapon[5,4] = 14; //Maksymalna Penetracja Pancerza secweapon[5,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[5,6] = 0; //Ilość Amunicji w Magazynku secweapon[5,7] = 25; //Maksymalna Ilość Amunicji w Magazynku secweapon[6,0] = "Special Forces Pistol"; //Nazwa Broni secweapon[6,1] = 0.15; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[6,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[6,3] = 8; //Minimalna Penetracja Pancerza secweapon[6,4] = 18; //Maksymalna Penetracja Pancerza secweapon[6,5] = 3; //Typ Używanej Amunicji //// 5.56mm secweapon[6,6] = 0; //Ilość Amunicji w Magazynku secweapon[6,7] = 20; //Maksymalna Ilość Amunicji w Magazynku secweapon[7,0] = "Metal Made Pistol"; //Nazwa Broni secweapon[7,1] = 0.4; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[7,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[7,3] = 15; //Minimalna Penetracja Pancerza secweapon[7,4] = 25; //Maksymalna Penetracja Pancerza secweapon[7,5] = 4; //Typ Używanej Amunicji //// 7.62mm secweapon[7,6] = 0; //Ilość Amunicji w Magazynku secweapon[7,7] = 10; //Maksymalna Ilość Amunicji w Magazynku #endregion #region //Primary Weapons /* primweapon[,0] = "Metal Made Pistol"; //Nazwa Broni primweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; primweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; primweapon[,3] = 3; //Minimalna Penetracja Pancerza primweapon[,4] = 8; //Maksymalna Penetracja Pancerza primweapon[,5] = 2; //Typ Używanej Amunicji //// primweapon[,6] = 0; //Ilość Amunicji w Magazynku primweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku */ primweapon[0,0] = "EMPTY"; //Nazwa Broni primweapon[0,1] = 0; //Szybkośc Strzelania * room_speed // 1 = 1sec; primweapon[0,2] = 0; //Szybkość Przeładowania * room_Speed // 1 = 1sec; primweapon[0,3] = 0; //Minimalna Penetracja Pancerza primweapon[0,4] = 0; //Maksymalna Penetracja Pancerza primweapon[0,5] = 0; //Typ Używanej Amunicji //// primweapon[0,6] = 0; //Ilość Amunicji w Magazynku primweapon[0,7] = 0; //Maksymalna Ilość Amunicji w Magazynku primweapon[1,0] = "BOW"; //Nazwa Broni primweapon[1,1] = 1; //Szybkośc Strzelania * room_speed // 1 = 1sec; primweapon[1,2] = 1; //Szybkość Przeładowania * room_Speed // 1 = 1sec; primweapon[1,3] = 5; //Minimalna Penetracja Pancerza primweapon[1,4] = 15; //Maksymalna Penetracja Pancerza primweapon[1,5] = 1; //Typ Używanej Amunicji //// Arrows primweapon[1,6] = 0; //Ilość Amunicji w Magazynku primweapon[1,7] = 1; //Maksymalna Ilość Amunicji w Magazynku primweapon[2,0] = "Small PM"; //Nazwa Broni primweapon[2,1] = 0.1; //Szybkośc Strzelania * room_speed // 1 = 1sec; primweapon[2,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec; primweapon[2,3] = 5; //Minimalna Penetracja Pancerza primweapon[2,4] = 12; //Maksymalna Penetracja Pancerza primweapon[2,5] = 2; //Typ Używanej Amunicji //// 9mm primweapon[2,6] = 0; //Ilość Amunicji w Magazynku primweapon[2,7] = 30; //Maksymalna Ilość Amunicji w Magazynku primweapon[3,0] = "Rifle 74"; //Nazwa Broni primweapon[3,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; primweapon[3,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; primweapon[3,3] = 3; //Minimalna Penetracja Pancerza primweapon[3,4] = 8; //Maksymalna Penetracja Pancerza primweapon[3,5] = 4; //Typ Używanej Amunicji //// 7.62mm primweapon[3,6] = 0; //Ilość Amunicji w Magazynku primweapon[3,7] = 30; //Maksymalna Ilość Amunicji w Magazynku #endregion #region //Special Weapons /* specweapon[,0] = "Metal Made Pistol"; //Nazwa Broni specweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; specweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; specweapon[,3] = 3; //Minimalna Penetracja Pancerza specweapon[,4] = 8; //Maksymalna Penetracja Pancerza specweapon[,5] = 2; //Typ Używanej Amunicji //// 9mm specweapon[,6] = 0; //Ilość Amunicji w Magazynku specweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku */ specweapon[0,0] = "EMPTY"; //Nazwa Broni specweapon[0,1] = 0; //Szybkośc Strzelania * room_speed // 1 = 1sec; specweapon[0,2] = 0; //Szybkość Przeładowania * room_Speed // 1 = 1sec; specweapon[0,3] = 0; //Minimalna Penetracja Pancerza specweapon[0,4] = 0; //Maksymalna Penetracja Pancerza specweapon[0,5] = 0; //Typ Używanej Amunicji //// specweapon[0,6] = 0; //Ilość Amunicji w Magazynku specweapon[0,7] = 0; //Maksymalna Ilość Amunicji w Magazynku specweapon[1,0] = "Wood Rifle"; //Nazwa Broni specweapon[1,1] = 1; //Szybkośc Strzelania * room_speed // 1 = 1sec; specweapon[1,2] = 2; //Szybkość Przeładowania * room_Speed // 1 = 1sec; specweapon[1,3] = 8; //Minimalna Penetracja Pancerza specweapon[1,4] = 25; //Maksymalna Penetracja Pancerza specweapon[1,5] = 3; //Typ Używanej Amunicji //// 9mm specweapon[1,6] = 0; //Ilość Amunicji w Magazynku specweapon[1,7] = 10; //Maksymalna Ilość Amunicji w Magazynku specweapon[2,0] = "Pipe Pump"; //Nazwa Broni specweapon[2,1] = 1; //Szybkośc Strzelania * room_speed // 1 = 1sec; specweapon[2,2] = 1; //Szybkość Przeładowania * room_Speed // 1 = 1sec; specweapon[2,3] = 3; //Minimalna Penetracja Pancerza specweapon[2,4] = 8; //Maksymalna Penetracja Pancerza specweapon[2,5] = 2; //Typ Używanej Amunicji //// 9mm specweapon[2,6] = 0; //Ilość Amunicji w Magazynku specweapon[2,7] = 5; //Maksymalna Ilość Amunicji w Magazynku #endregion #region //Ammunition /* ammunition[,0] = "EMPTY"; //Nazwa Amunicji ammunition[,1] = 0; //Ilość Posiadana ammunition[,2] = 0; //Max Ilość Posiadania ammunition[,3] = 0; //Penetracja ammunition[,4] = 0; //Minimalna Ilość DMG ammunition[,5] = 0; //Maksymalna Ilość DMG ammunition[,6] = 0; //Szybkość Pocisku */ ammunition[0,0] = "EMPTY"; //Nazwa Amunicji ammunition[0,1] = 0; //Ilość Posiadana ammunition[0,2] = 0; //Max Ilość Posiadania ammunition[0,3] = 0; //Penetracja ammunition[0,4] = 0; //Minimalna Ilość DMG ammunition[0,5] = 0; //Maksymalna Ilość DMG ammunition[0,6] = 0; //Szybkość Pocisku ammunition[1,0] = "Arrows"; //Nazwa Amunicji ammunition[1,1] = 5; //Ilość Posiadana ammunition[1,2] = 50; //Max Ilość Posiadania ammunition[1,3] = 20; //Penetracja ammunition[1,4] = 10; //Minimalna Ilość DMG ammunition[1,5] = 25; //Maksymalna Ilość DMG ammunition[1,6] = 30; //Szybkość Pocisku ammunition[2,0] = "9mm"; //Nazwa Amunicji ammunition[2,1] = 50; //Ilość Posiadana ammunition[2,2] = 100; //Max Ilość Posiadania ammunition[2,3] = 5; //Penetracja ammunition[2,4] = 5; //Minimalna Ilość DMG ammunition[2,5] = 15; //Maksymalna Ilość DMG ammunition[2,6] = 50; //Szybkość Pocisku ammunition[3,0] = "5.56mm"; //Nazwa Amunicji ammunition[3,1] = 50; //Ilość Posiadana ammunition[3,2] = 100; //Max Ilość Posiadania ammunition[3,3] = 10; //Penetracja ammunition[3,4] = 10; //Minimalna Ilość DMG ammunition[3,5] = 20; //Maksymalna Ilość DMG ammunition[3,6] = 60; //Szybkość Pocisku ammunition[4,0] = "7.62mm"; //Nazwa Amunicji ammunition[4,1] = 50; //Ilość Posiadana ammunition[4,2] = 100; //Max Ilość Posiadania ammunition[4,3] = 15; //Penetracja ammunition[4,4] = 15; //Minimalna Ilość DMG ammunition[4,5] = 30; //Maksymalna Ilość DMG ammunition[4,6] = 70; //Szybkość Pocisku ammunition[5,0] = "Shotgun Shell"; //Nazwa Amunicji ammunition[5,1] = 10; //Ilość Posiadana ammunition[5,2] = 100; //Max Ilość Posiadania ammunition[5,3] = 5; //Penetracja ammunition[5,4] = 5; //Minimalna Ilość DMG ammunition[5,5] = 15; //Maksymalna Ilość DMG ammunition[5,6] = 30; //Szybkość Pocisku #endregion canshot = true; //Mogę Strzelać canuneq = true; // Mogę Wyrzucić Broń Weapon = secweapon; //Wybieranie Tablicy secweapon, primweapon, specweapon SecSlot = 1; //Slot Broni 1 = Secondary PrimSlot = 1; //Slot Broni 2 = Primary SpecSlot = 0; //Slot Broni 3 = Special ActualSlot = 0; //Aktualnie używany slot; 0 = Sceondary, 1 = Primary, 2 = Special WeaponSlot = 0; //Broń W Danym Slocie WeaponName = ""; //Nazwa Broni ReloadSpeed = 0; //Czas Przeładowania Broni; ReloadSpeedMax = 0; //Czas Przeładowania Broni Max; ShotSpeed = 0; //Szybkość Strzelania; ActualAmmo = 0; //Aktualnie przypisana Amunicja WeaponSprite = 0; //Rysowanie Sprita broni WeaponIndex = 0; //Image_Index Sprite Broni MaxWeaponAmmo = 0; //Maxymalna ilość ammo w broni (maxmag); WeaponMinArmorPen = 0; //Minimalna Penetracja Panerza WeaponMaxArmorPen = 0; //Maksymalna Penetracja Pancerza AmmoPenetration = 0; //Penetracja Ammunicji MinAmmoDMG = 0; //Min DMG Amunicji MaxAmmoDMG = 0; //Max DMG Amunicji MaxEqAmmo = 0; //Max Ammo w EQ AmmoName = ""; //Nazwa Amunicji AmmoSpeed = 0; //Szybkosc Amunicji sspd = 0; //Timer Strzelania rspeed = 0; //Timer Reloadu canreload = true; reload = false; reloadend = false; recoil = 0; // Recoil Broni moverecoilend = 0; // Końcowy Recoil moverecoil = 0; //Recoil Podczas ruchu 0 = Stoje, 1 = Idę, 2 = Bignę, 3 = Sprintuję; dmg = 0; ap = 0; alldmg = 0; STEP: if global.pausegame == false && myDead == false{ //Wybieranie Slotu Broni if reload == false{ if keyboard_check_pressed(ord("1")){ ActualSlot = 0; } if keyboard_check_pressed(ord("2")){ ActualSlot = 1; } if keyboard_check_pressed(ord("3")){ ActualSlot = 2; } } //Wybieranie Broni if (ActualSlot == 0) { //Przypisanie warotści których nie trzeba nadpisywać Weapon = secweapon; WeaponSlot = SecSlot; //Przypisanie broni do slotu; WeaponSprite = 1; //Przypisanie Sprite Broni 1 = s_SceWeaponSprite } else { if (ActualSlot == 1) { Weapon = primweapon; WeaponSlot = PrimSlot; //Przypisanie broni do slotu; WeaponSprite = 2; } else { if (ActualSlot == 2) { Weapon = specweapon; WeaponSlot = SpecSlot; //Przypisanie broni do slotu; WeaponSprite = 3; } } } /* secweapon[,0] = "Metal Made Pistol"; //Nazwa Broni secweapon[,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[,3] = 3; //Minimalna Penetracja Pancerza secweapon[,4] = 8; //Maksymalna Penetracja Pancerza secweapon[,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[,6] = 0; //Ilość Amunicji w Magazynku secweapon[,7] = 20; //Maksymalna Ilość Amunicji w Magazynku ammunition[,0] = "EMPTY"; //Nazwa Amunicji ammunition[,1] = 0; //Ilość Posiadana ammunition[,2] = 0; //Max Ilość Posiadania ammunition[,3] = 0; //Penetracja ammunition[,4] = 0; //Minimalna Ilość DMG ammunition[,5] = 0; //Maksymalna Ilość DMG ammunition[,6] = 0; //Szybkość Pocisku */ ActualAmmo = Weapon[WeaponSlot,5]; //Przypisanie typu ammunicji; ReloadSpeed = Weapon[WeaponSlot,2]*room_speed; //Przypisanie szybkości przeładowania; ReloadSpeedMax = Weapon[WeaponSlot,2]*room_speed; //Przypisanie Maxymalnej szybkości przeładowania; ShotSpeed = Weapon[WeaponSlot,1]; //Przypisanie szybkości strzelania; WeaponName = Weapon[WeaponSlot,0]; //Przypisanie Nazwy Broni MaxWeaponAmmo = Weapon[WeaponSlot,7]; //Przypisanie Maksymalnej ilości Ammo w Broni WeaponMinArmorPen = Weapon[WeaponSlot,3]; //Przypisanie Minimalnej Penetracji Pocisku Przez Broń WeaponMaxArmorPen = Weapon[WeaponSlot,4]; //Przypisanie Maksymalnej Penetracji Pocisku Przez Broń WeaponIndex = WeaponSlot; //Przypisanie Indexu Sprite Broni MinAmmoDMG = ammunition[ActualAmmo,4]; //Przypisanie Minimalnego DMG z Amunicji MaxAmmoDMG = ammunition[ActualAmmo,5]; //Przypisanie Maksymalnego DMG z Amunicji AmmoPenetration = ammunition[ActualAmmo,3]; //Pryzpisanie Penetracji Pancerza z Amunicji MaxEqAmmo = ammunition[ActualAmmo,2]; //Przypisanie Maksymalnej ilości Ammo w EQ AmmoName = ammunition[ActualAmmo,0]; //Przypisanie Nazwy Amunicji AmmoSpeed = ammunition[ActualAmmo,6]; #region // LOSOWANIE SZANSY NA TRAFIENIE DANEJ CZĘŚCI CIAŁA PATRZĄC NA PROSZUANIE SIĘ POSTACI if movement == true{ if imwalk == true{ // jezeli ide na shift headproc = 60; torsproc = 30; armproc = 20; legproc = 10; missproc = 0; } if imrun == true { // jezeli sprintuje headproc = 97; torsproc = 70; armproc = 50; legproc = 40; missproc = 0; } if imrunn == true{ // jezeli truchtam headproc = 80; torsproc = 55; armproc = 40; legproc = 20; missproc = 0; } } else { // jezeli stoje headproc = 50; torsproc = 25; armproc = 15; legproc = 5; missproc = 0; } randomize() // upewniamy się że seed będzie losowy i da losowe wyniki procent = irandom(100); //Zawsze domyślnie nie trafisz bodyshot = 6; //Ale jesli procent bedzie dobry to trafisz przynajmniej to if procent > legproc { //wieksze od 10 bodyshot = round(irandom_range(4,5)); } //A jak bedzie lepszy to już to trafisz. if procent > armproc { //wieksze od 25 bodyshot = round(irandom_range(2,3)); //Ten warunek jak się spełni to nadpisze poprzednią zmianę "bodyshot" więc nie musisz się martwić o sprawdzanie Min-max } if procent > torsproc { //wieksze od 30 bodyshot = 1; } if procent > headproc { //wieksze od 90 bodyshot = 0; } #endregion //recoil = 0; // recoil //moverecoilmin = -1; // zmieniajaca wartosc na - //moverecoilend = 0; // koncowy recoil //moverecoil = 0; // stan recoilu = 0, jak stoi, 1 jak idzie, 2 jak truchta, 3 jak biegnie; recoil = random_range(-5,5); moverecoilend = (moverecoil * recoil) / global.recoilskill; dmg = round(irandom_range(MinAmmoDMG,MaxAmmoDMG)); ap = round(irandom_range(WeaponMinArmorPen,WeaponMaxArmorPen)); if global.expmenu == false { #region //SHOT CODE if mouse_check_button(mb_left) { if canshot == true && reload == false { if global.UnAmmo == false { if Weapon[WeaponSlot,6] > 0 { canshot = false; alldmg = ((dmg + ap) + AmmoPenetration); if WeaponName = "BOW"{ inst = instance_create_layer(x,y,"Instances",o_arrow); inst.speed = AmmoSpeed; inst.spdd = AmmoSpeed; inst.direction = direction; inst.image_angle = direction; inst.ap = ap; inst.dmg = alldmg; inst.bshot = bodyshot; global.lastdmg = alldmg; sspd = ShotSpeed; Weapon[WeaponSlot,6] -= 1; } else { shel = instance_create_layer(x,y,"Instances",o_shell); inst = instance_create_layer(x,y,"Instances",o_bullet); inst.speed = AmmoSpeed; inst.spdd = AmmoSpeed; inst.direction = direction + moverecoilend; inst.image_angle = direction + + moverecoilend; inst.ap = ap; inst.dmg = alldmg; inst.bshot = bodyshot; sspd = ShotSpeed; Weapon[WeaponSlot,6] -= 1; } } } else { //if global unammo = true canshot = false; alldmg = ((dmg + ap) + AmmoPenetration); if WeaponName = "BOW"{ inst = instance_create_layer(x,y,"Instances",o_arrow); inst.speed = AmmoSpeed; inst.spdd = AmmoSpeed; inst.direction = direction; inst.image_angle = direction; inst.ap = ap; inst.dmg = alldmg; inst.bshot = bodyshot; global.lastdmg = alldmg; sspd = ShotSpeed; } else { shel = instance_create_layer(x,y,"Instances",o_shell); inst = instance_create_layer(x,y,"Instances",o_bullet); inst.speed = AmmoSpeed; inst.spdd = AmmoSpeed; inst.direction = direction + moverecoilend; inst.image_angle = direction + + moverecoilend; inst.ap = ap; inst.dmg = alldmg; inst.bshot = bodyshot; sspd = ShotSpeed; } } } } if canshot = false && reload = false{ if sspd > 0{ sspd -= 1; } else { canshot = true; } #endregion #region //RELOAD CODE /* secweapon[0,0] = "Metal Made Pistol"; //Nazwa Broni secweapon[0,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[0,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[0,3] = 3; //Minimalna Penetracja Pancerza secweapon[0,4] = 8; //Maksymalna Penetracja Pancerza secweapon[0,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[0,6] = 0; //Ilość Amunicji w Magazynku secweapon[0,7] = 20; //Maksymalna Ilość Amunicji w Magazynku ammunition[0,0] = "EMPTY"; //Nazwa Amunicji ammunition[0,1] = 0; //Ilość Posiadana ammunition[0,2] = 0; //Max Ilość Posiadania ammunition[0,3] = 0; //Penetracja ammunition[0,4] = 0; //Minimalna Ilość DMG ammunition[0,5] = 0; //Maksymalna Ilość DMG ammunition[,6] = 0; //Szybkość Pocisku */ if (WeaponName = "BOW") // JEZE BRON TO ŁUK { if (canreload == true) { // JEZELI MOGĘ PRZEŁADOWAĆ if ((Weapon[WeaponSlot,6] < MaxWeaponAmmo) && (ammunition[ActualAmmo,1] > 0)) // JEŻELI AMMO JEST MNIEJSZE OD MAX AMMO I EQ AMMO JEST WIEKSZE OD 0 { canshot = false; // NIE MOGE STRZELIC canreload = false; // NIE MOGE PRZELADOWAC reload = true; // PRZELADOWANIE rspeed = ReloadSpeed; // SZYBKOSC PRZELADOWANIA } } } else { // JEZELI NIE JEST LUKIEM if keyboard_check_pressed(ord("R")) { if (canreload == true){ if (ammunition[ActualAmmo,1] > 0) { if (Weapon[WeaponSlot,6] < MaxWeaponAmmo) { canshot = false; canreload = false; reload = true; rspeed = ReloadSpeed; var mage; mage = instance_create_layer(x,y,"Instances",o_Mag); mage.mag = ActualAmmo; } } } } } if reload == true { show_debug_message("PRZELADOWYWUJE"); show_debug_message("rspeed: "+string(rspeed)); if rspeed > 0{ rspeed -= 1; show_debug_message("rspeed -= 1"); show_debug_message("rspeed: "+string(rspeed)); } else { reloadend = true; show_debug_message("rspeed: "+string(rspeed)); show_debug_message("END RELOAD"); } } if reloadend == true { show_debug_message("RELOAD END = TRUE"); /* secweapon[0,0] = "Metal Made Pistol"; //Nazwa Broni secweapon[0,1] = 0.3; //Szybkośc Strzelania * room_speed // 1 = 1sec; secweapon[0,2] = 1.5; //Szybkość Przeładowania * room_Speed // 1 = 1sec; secweapon[0,3] = 3; //Minimalna Penetracja Pancerza secweapon[0,4] = 8; //Maksymalna Penetracja Pancerza secweapon[0,5] = 2; //Typ Używanej Amunicji //// 9mm secweapon[0,6] = 0; //Ilość Amunicji w Magazynku secweapon[0,7] = 20; //Maksymalna Ilość Amunicji w Magazynku ammunition[0,0] = "EMPTY"; //Nazwa Amunicji ammunition[0,1] = 0; //Ilość Posiadana ammunition[0,2] = 0; //Max Ilość Posiadania ammunition[0,3] = 0; //Penetracja ammunition[0,4] = 0; //Minimalna Ilość DMG ammunition[0,5] = 0; //Maksymalna Ilość DMG ammunition[,6] = 0; //Szybkość Pocisku */ var a; a = MaxWeaponAmmo - Weapon[WeaponSlot,6]; // a = maxammo (30) - ammo w magazynku (25) == 5 ammo do doadania; show_debug_message("A = "+string(a)); if ammunition[ActualAmmo,1] > a { // jeżeli ammo w eq jest wieksze od a(5) teraz jest 100 wiec jest wieksze 100 > 5 show_debug_message("Ilosc ammo > a"); Weapon[WeaponSlot,6] += a; // dodaj 5 ammo show_debug_message("DODAJ AMMO DO MAG"); ammunition[ActualAmmo,1] -= a; // odejmij 5 ammo show_debug_message("ODEJMIJ AMMO Z EQ"); } else { // jeżeli ammo w eq jest mniejsze od a(5) (np 3) dodaj reszte naboi z eq Weapon[WeaponSlot,6] += ammunition[ActualAmmo,1]; show_debug_message("DODAJRESZTE AMMO"); ammunition[ActualAmmo,1] = 0; show_debug_message("USTAWIA EQAMMO NA 0"); } reloadend = false; show_debug_message("RELOAD END = FALSE"); reload = false; show_debug_message("RELOAD = FALSE"); canreload = true; show_debug_message("CANRELOAD = TRUE"); canshot = true; show_debug_message("CANSHOT = TRUE"); } #endregion #endregion } //global.Expmenu == false; end } //global.pausegame = false && mydead == false; end
  10. Tak, ale jakoś znaleźć dalej nie mogłem 🤣 ale w końcu przypomniało mi się, że chyba nawet Ty zwracałeś mi uwagę na brak referencji w GM, chciałem zrobić mechanikę na skróty, więc dalej nadpisywało mi zmienną weapon, wszystko naprawione, wystarczyło dodać kilka linijek kodu 😁😁
  11. Okej zrobiłem ten kod na teście. Nadpisuje mi tablicę Weapon zamiast specweapon itd. Brak referencji. Czyli dalej jest nadpisywana zmienna Weapon. -.-
  12. Temat zbiorczy na drobnostki

    Dzięki Threef, znowu zrobiłem sobie pod górkę, kombinowaniem, wyjdę z roboty, będę testował 😁 Pozdrawiam.
  13. Temat zbiorczy na drobnostki

    Wróciłem i jak zwykle mam pytanie. Otóż wiem jak się liczy procenty ale nie wiem jak mam to wykorzystać. Jak napisać kod, który daje mi np 100-90% szans, że trafię w głowę, 90-75 % szans, że trafię w tors, 75-45% szans, że trafię w rękę, 45-20% szans, że trafię w nogę i 20-0%, że nie trafię w ogóle. Napisałem coś takiego bez procentów, ale nie działa poprawnie, bo losowanie liczby to dalej losowanie :/ step postaci: if imwalk == true{ // jeżeli idę maxhead = 100; minhead = 90; maxtorso = 90; mintorso = 30; maxarm = 30; minarm = 25; maxleg = 25; minleg = 10; maxmiss = 10; minmiss = 0; } create pocisku: var tt = irandom(1.1); procent = lerp(0,100,tt); step pocisku: if procent > minhead && procent < maxhead{ bodyshot = 0; } else { if procent > mintorso && procent < maxtorso{ bodyshot = 1; } else { if procent > minarm && procent < maxarm{ bodyshot = round(irandom_range(2,3)); } else { if procent > minleg && procent < maxleg{ bodyshot = round(irandom_range(4,5)); } else { if procent > minmiss && procent < maxmiss{ bodyshot = 6; } } } }
  14. Temat zbiorczy na drobnostki

    Tak znowu ja, tak dalej mam pierdołę GMS 2! W Create mam tablicę dwuwymiarową broni, weapon[1,1] = 20 //Posiadana ilość amunicji W stepie wpisałem kod ammo = weapon[weaponh,1] gdzie weaponh jest aktualnie wybraną bronią i tutaj zaczynają się cuda... (w GMS zawsze działało to normalnie) w Evencie Global Mosue Left Down po wpisaniu na próbę ammo -= 1; nie ma reakcji... totalne 0 (mam debugowanie na draw'ach więc widzę czy ubywa czy nie) Po stworzeniu w stepie kodu: if mouse_check_button(mb_left){ if weaponh > 0{ if ammo > 0 { ammo -= 1; } } } Amunicji ubywa po naciśnięciu i trzymaniu LPM tylko o 1, po puszczeniu wraca do poziomu 20, siedzę myślę i dalej nie wiem co zrobiłem źle, a jak zrobiłem to pewnie jakąś pierdołę, której nie widzę :/ CREATE: // SECONDARY // weapon[1,0] = true; // Have Weapon weapon[1,1] = 20; // Ammo weapon[1,2] = 20; // Max Ammo weapon[1,3] = 2; // Mag weapon[1,4] = 3; // Max Mag weapon[1,5] = 1; // Reload Time weapon[1,6] = 1; // Shot Time weapon[1,7] = 5; // DMG weapon[1,8] = 15; // MAX DMG weapon[1,9] = 3; // Armor Penetration weapon[1,10] = "Test1"; // Name STEP: ammo = weapon[weaponh,1]; maxammo = weapon[weaponh,2]; mag = weapon[weaponh,3]; maxmag = weapon[weaponh,4]; reloadtime = weapon[weaponh,5]; shottime = weapon[weaponh,6]; dmg = weapon[weaponh,7]; maxdmg = weapon[weaponh,8]; armorp = weapon[weaponh,9]; weapname = weapon[weaponh,10];
  15. Mam problem z kodem zmiany broni. Po pierwszym kliknięciu "E" broń leżąca na ziemi zmienia x i y na x i y postaci, po drugim wciśnięciu "E" broń dopiero się zmienia... Jest to upierdliwe :/ Collision Code with o_WeaponParent: GML if keyboard_check_pressed(ord("E")){ if other.weap > 5{ if primweap = other.weap{ if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; other.mag = 0; } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; other.mag -= a; } } else { if primweap = 0{ primweap = other.weap; primammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } instance_destroy(other); } else { var oldammo, oldweap, oldweapinst; oldammo = primammo; oldweap = primweap; primweap = other.weap; primammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } oldweapinst = instance_create_layer(x,y,"Instances",o_WeaponOld); oldweapinst.ammo = oldammo; oldweapinst.weap = oldweap; oldweapinst.mag = 0; instance_destroy(other); } } } else { if secweap = other.weap{ if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; other.mag = 0; } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; other.mag -= a; } } else { if secweap = 0{ secweap = other.weap; secammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } instance_destroy(other); } else { var oldammo, oldweap, oldweapinst; oldammo = secammo; oldweap = secweap; secweap = other.weap; secammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } oldweapinst = instance_create_layer(x,y,"Instances",o_WeaponOld); oldweapinst.ammo = oldammo; oldweapinst.weap = oldweap; oldweapinst.mag = 0; instance_destroy(other); } } } } //} /* global.weaponid[16,0] = "Pumpo"; // name global.weaponid[16,1] = 20; // dmg global.weaponid[16,2] = 40; // AP global.weaponid[16,3] = 10; // Ammo global.weaponid[16,4] = 10; // Max Ammo global.weaponid[16,5] = 0; // Mag global.weaponid[16,6] = 5; // Max mag global.weaponid[16,7] = 0; // empty mag global.weaponid[16,8] = sou_Pumpo; // sound global.weaponid[16,9] = room_speed*4; // reload time global.weaponid[16,10] = room_speed*1; // shoting time global.weaponid[16,11] = 0; // mag ammo ///////////////////////////////*/ GML other.weap //jest to id broni jaką posiada objekt do losowania broni. primweap //zmienna broni głównej other.mag //zmienna ile jest magazynków przy broni. global.weaponid[other.weap,5] //posiadana ilość magazynków, global.weaponid[other.weap,6] //maxymalna ilość magazynków; other.ammo //posiadana amunicja przez obiekt other.weap > 5 //jeżeli nie jest to pistoletem, to przypisuje do slotu głównej broni oldammo //aktualnie posiadana amunicja do danej broni oldweap //id broni oldweapinst //nowa instancja broni primammo //amunicja do głównej broni</span></span> W postaci mam jeszcze zmienną, którą broń posiadam GML usedweap; // jest = 0(pistolety) lub 1(karabiny); to jest czy używam primweap czy secweap</span>
  16. Problem z kodem zmiany broni

    Wszystko działa dobrze :/ jednak dalej jak staję obok broni, tak by zaliczyło kolizję to, teleportuje broń na postać... Dziwne... EDIT3: NIŻEJ; EDIT4: Spróbuję zamienić else na przełącznik... zobaczę jak to będzie działać. EDIT5: Na samym dnie :/ EDIT1: Cholera zapomniałem edytować posta wyżej :o... EDIT2: A ch**a nie wygląda dobrze... Zebrałem broń, gdy nie posiadałem żadnej, więc powinien iść tylko debug: GML primweap Jest większe od 5 // 1 Początek primweap = 0; // 3 początek other.mag + mag <= maxmag // 3 koniec // 1 Koniec</span></span></span></span></span></span></span></span></span></span></span> A dodatkowo wykonuje to GML primweap Jest większe od 5 // 1 Początek primweap != 0; // 4 początek other.mag + mag <= maxmag Tworzenie nowej bronii //4 Koniec // 1 Koniec</span></span></span></span></span></span></span></span></span></span></span> Jeszcze to obadam zaraz... Próba1 : GML Resizing fullscreen window.. Resizing swap chain.. primweap Jest większe od 5 // 1 Początek primweap = 0; // 3 początek other.mag + mag <= maxmag // 3 koniec // 1 Koniec primweap Jest większe od 5 // 1 Początek primweap != 0; // 4 początek other.mag + mag <= maxmag Tworzenie nowej bronii //4 Koniec // 1 Koniec primweap Jest większe od 5 // 1 Początek primweap != 0; // 4 początek other.mag + mag <= maxmag Tworzenie nowej bronii //4 Koniec // 1 Koniec primweap Jest większe od 5 // 1 Początek primweap != 0; // 4 początek other.mag + mag <= maxmag Tworzenie nowej bronii //4 Koniec // 1 Koniec Attempting to set gamepadcount to 0 --------------------------------------------------------------- minFPS, maxFPS, avgFPS -31, 1310, 363 --------------------------------------------------------------- --------------------------------------------------------------- minFPS, maxFPS, avgFPS -31, 1310, 363 --------------------------------------------------------------- C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.0.7.110/windows/Runner.exe DONE (0) Igor complete. elapsed time 00:00:19.3177988s for command "C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.0.7.110/bin/Igor.exe" -options="C:\Users\HieNa\AppData\Local\GameMakerStudio2\GMS2TEMP\build.bff" -- Windows Run started at 06/24/2017 07:49:15 SUCCESS: Run Program Complete EDIT3: Tu cię mam gagatku. Zrobiłem myk, Podniosłem broń, wymusiłem nowy debug msg (że podniosę drugą broń), podlazłem wcisnąłem "E", nie wzięło broni, to dawaj drugi raz wymuszony debug msg i proszę, kod nie działa jak powinien :D Dzięki za dobrą wskazówkę, bo wcześniej tego nie znałem, a w gm już dłubałem wiele razy :). Teraz można pomyśleć jak to naprawić :), Tylko jak? haha dodać alarmy? W stepie jeżeli zmienna = true? Bo już sam nie wiem :D Próba 2: GML Resizing fullscreen window.. Resizing swap chain.. primweap Jest większe od 5 // 1 Początek primweap = 0; // 3 początek other.mag + mag <= maxmag // 3 koniec // 1 Koniec // Podniosłem jedną, będę podnosił drugą primweap Jest większe od 5 // 1 Początek primweap != 0; // 4 początek other.mag + mag <= maxmag Tworzenie nowej bronii //4 Koniec // 1 Koniec primweap Jest większe od 5 // 1 Początek primweap != 0; // 4 początek other.mag + mag <= maxmag Tworzenie nowej bronii //4 Koniec // 1 Koniec // Podniosłem jedną, będę podnosił drugą primweap Jest większe od 5 // 1 Początek primweap != 0; // 4 początek other.mag + mag <= maxmag Tworzenie nowej bronii //4 Koniec // 1 Koniec Attempting to set gamepadcount to 0 --------------------------------------------------------------- minFPS, maxFPS, avgFPS -31, 1364, 347 --------------------------------------------------------------- --------------------------------------------------------------- minFPS, maxFPS, avgFPS -31, 1364, 347 --------------------------------------------------------------- C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.0.7.110/windows/Runner.exe DONE (0) Igor complete. elapsed time 00:00:17.8518242s for command "C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.0.7.110/bin/Igor.exe" -options="C:\Users\HieNa\AppData\Local\GameMakerStudio2\GMS2TEMP\build.bff" -- Windows Run started at 06/24/2017 08:02:18 SUCCESS: Run Program Complete Kod: [Poprawiony, wywaliłem niepotrzebne instance_destroy(other);] GML if keyboard_check_pressed(ord("E")){ if other.weap > 5{ show_debug_message("primweap Jest większe od 5 // 1 Początek") if primweap = other.weap{ show_debug_message("Jest = other.weap // 2 początek") if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ show_debug_message("other.mag + mag <= maxmag") global.weaponid[other.weap,5] += other.mag; other.mag = 0; } else { show_debug_message("other.mag + mag > maxmag") var a = global.weaponid[other.weap,6] - global.weaponid[other.weap,5]; global.weaponid[other.weap,5] += a; other.mag -= a; } show_debug_message("// 2 koniec") } else { if primweap = 0{ show_debug_message("primweap = 0; // 3 początek") primweap = other.weap; primammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ show_debug_message("other.mag + mag <= maxmag") global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { show_debug_message("other.mag + mag > maxmag") var a = global.weaponid[other.weap,6] - global.weaponid[other.weap,5] global.weaponid[other.weap,5] += a; instance_destroy(other); } show_debug_message("// 3 koniec") } else { show_debug_message("primweap != 0; // 4 początek") var oldammo, oldweap, oldweapinst; oldammo = primammo; oldweap = primweap; primweap = other.weap; primammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ show_debug_message("other.mag + mag <= maxmag") global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { show_debug_message("other.mag + mag > maxmag") var a = global.weaponid[other.weap,6] - global.weaponid[other.weap,5]; global.weaponid[other.weap,5] += a; instance_destroy(other); } show_debug_message("Tworzenie nowej bronii") oldweapinst = instance_create_layer(x,y,"Instances",o_WeaponOld); oldweapinst.ammo = oldammo; oldweapinst.weap = oldweap; oldweapinst.mag = 0; show_debug_message("//4 Koniec") } } show_debug_message("// 1 Koniec") } } Napisałem nowy kod: (spoilery nie działają z [g ml] :/ GML var a, b, cse; if keyboard_check_pressed(ord("E")){ show_debug_message("//Sprawdzam czy nie jest pistoletem"); if other.weap > 5{ show_debug_message("//Sprawdzam czy bronie główne są takie same"); if primweap = other.weap{ show_debug_message("//Bronie główne są takie same"); cse = 1; } else { show_debug_message("//Bronie główne są różne"); show_debug_message("//Sprawdzam czy posiadam główną broń w EQ"); if primweap = 0{ show_debug_message("//Nie posiadam broni głównej"); cse = 2; } else { show_debug_message("//Posiadam broń główną"); cse = 3; } } } switch(cse){ case 1: show_debug_message("//Sprawdzam Stan Amunicji"); if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ show_debug_message("//Magazynków jest mniej, niż ilość maxymalna więc zabieram wszystko"); global.weaponid[other.weap,5] += other.mag; other.mag = 0; } else { show_debug_message("//Magazynków jest więcej niż ilość maxymalna, więc sprawdzam ilę mogę wziąć"); a = global.weaponid[other.weap,6] - global.weaponid[other.weap,5]; global.weaponid[other.weap,5] += a; other.mag -= a; } show_debug_message("//Dodałem magazynki"); break; ///////////////////////// case 2: primweap = other.weap; primammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ show_debug_message("//Magazynków jest mniej, niż ilość maxymalna więc zabieram wszystko"); global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { show_debug_message("//Magazynków jest więcej niż ilość maxymalna, więc sprawdzam ilę mogę wziąć"); a = global.weaponid[other.weap,6] - global.weaponid[other.weap,5] global.weaponid[other.weap,5] += a; instance_destroy(other); } show_debug_message("//Podniosłem broń do pustego slotu."); break; ///////////////////////// case 3: show_debug_message("//Zaczynam zamianę broni.") var oldammo, oldweap, oldweapinst; oldammo = primammo; show_debug_message("//Zapisuję starą ilość ammo"); oldweap = primweap; show_debug_message("//Zapisuję stare id broni"); primweap = other.weap; show_debug_message("//Zamieniam broń na nową broń"); primammo = other.ammo; show_debug_message("//Zamieniam ammo na nową wartość ammo"); show_debug_message("//Sprawdzam Stan Amunicji"); if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ show_debug_message("//Magazynków jest mniej, niż ilość maxymalna więc zabieram wszystko"); global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { show_debug_message("//Magazynków jest więcej niż ilość maxymalna, więc sprawdzam ilę mogę wziąć"); var a = global.weaponid[other.weap,6] - global.weaponid[other.weap,5]; global.weaponid[other.weap,5] += a; instance_destroy(other); } show_debug_message("//Tworzenie nowej broni:") oldweapinst = instance_create_layer(x,y,"Instances",o_WeaponOld); show_debug_message("//Tworzę instancję przez zmienną"); oldweapinst.ammo = oldammo; show_debug_message("//Dodaję do instancji starą amunicję"); oldweapinst.weap = oldweap; show_debug_message("//Nadaję broni ID"); oldweapinst.mag = 0; show_debug_message("//Ustalam ilość magazynków na 0"); show_debug_message("//Koniec zamiany broni") break; ///////////////////////// case 4: // break; ///////////////////////// case 5: break; ////////////////////////// } } Ale i to nie pomogło :/ Klops jest teraz taki, że Podniosłem broń nr1, wcisnąłem wymuszony debug msg, i starałem się podnieść drugą, nie udało się dalej wcisnąłem debug msg, i w tedy podniosłem broń, ale widzę po kodzie, że dwa razy wykonuje mi kod zmiany broni, coś jest nie tak i już nie wiem co :c GML Resizing fullscreen window.. Resizing swap chain.. //Sprawdzam czy nie jest pistoletem //Sprawdzam czy bronie główne są takie same //Bronie główne są różne //Sprawdzam czy posiadam główną broń w EQ //Nie posiadam broni głównej //Magazynków jest mniej, niż ilość maxymalna więc zabieram wszystko //Podniosłem broń do pustego slotu. // Podniosłem jedną, będę podnosił drugą //Sprawdzam czy nie jest pistoletem //Sprawdzam czy bronie główne są takie same //Bronie główne są różne //Sprawdzam czy posiadam główną broń w EQ //Posiadam broń główną //Zaczynam zamianę broni. //Zapisuję starą ilość ammo //Zapisuję stare id broni //Zamieniam broń na nową broń //Zamieniam ammo na nową wartość ammo //Sprawdzam Stan Amunicji //Magazynków jest mniej, niż ilość maxymalna więc zabieram wszystko //Tworzenie nowej broni: //Tworzę instancję przez zmienną //Dodaję do instancji starą amunicję //Nadaję broni ID //Ustalam ilość magazynków na 0 //Koniec zamiany broni //Sprawdzam czy nie jest pistoletem //Sprawdzam czy bronie główne są takie same //Bronie główne są różne //Sprawdzam czy posiadam główną broń w EQ //Posiadam broń główną //Zaczynam zamianę broni. //Zapisuję starą ilość ammo //Zapisuję stare id broni //Zamieniam broń na nową broń //Zamieniam ammo na nową wartość ammo //Sprawdzam Stan Amunicji //Magazynków jest mniej, niż ilość maxymalna więc zabieram wszystko //Tworzenie nowej broni: //Tworzę instancję przez zmienną //Dodaję do instancji starą amunicję //Nadaję broni ID //Ustalam ilość magazynków na 0 //Koniec zamiany broni // Podniosłem jedną, będę podnosił drugą //Sprawdzam czy nie jest pistoletem //Sprawdzam czy bronie główne są takie same //Bronie główne są różne //Sprawdzam czy posiadam główną broń w EQ //Posiadam broń główną //Zaczynam zamianę broni. //Zapisuję starą ilość ammo //Zapisuję stare id broni //Zamieniam broń na nową broń //Zamieniam ammo na nową wartość ammo //Sprawdzam Stan Amunicji //Magazynków jest mniej, niż ilość maxymalna więc zabieram wszystko //Tworzenie nowej broni: //Tworzę instancję przez zmienną //Dodaję do instancji starą amunicję //Nadaję broni ID //Ustalam ilość magazynków na 0 //Koniec zamiany broni Attempting to set gamepadcount to 0 --------------------------------------------------------------- minFPS, maxFPS, avgFPS -31, 1319, 420 --------------------------------------------------------------- --------------------------------------------------------------- minFPS, maxFPS, avgFPS -31, 1319, 420 --------------------------------------------------------------- C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.0.7.110/windows/Runner.exe DONE (0) Igor complete. elapsed time 00:00:14.9509962s for command "C:\ProgramData/GameMakerStudio2/Cache/runtimes\runtime-2.0.7.110/bin/Igor.exe" -options="C:\Users\HieNa\AppData\Local\GameMakerStudio2\GMS2TEMP\build.bff" -- Windows Run started at 06/24/2017 11:08:41 SUCCESS: Run Program Complete
  17. Problem z kodem zmiany broni

    Zrobię sąsiadce laptopa, ogarnę ten temat i napiszę co i jak. Ale wygląda na to, że kod cały się wykonuje skoro działa. Tylko jest ten glitch, że muszę kliknąć dwa razy E by podnieść broń :/ Coś będę modził :D
  18. Temat zbiorczy na drobnostki

    Na przyszłość będę pamiętał o komentarzach do kodu. Kod pisałem ja :), broń to zmienna, nie instancja, później będę rysował po prostu dany sprite, czy to przeładowania czy po prostu chodzenia z bronią. GML other.weap //jest to id broni jaką posiada objekt do losowania broni. primweap //zmienna broni głównej other.mag //zmienna ile jest magazynków przy broni. global.weaponid[other.weap,5] //posiadana ilość magazynków, global.weaponid[other.weap,6] //maxymalna ilość magazynków; other.ammo //posiadana amunicja przez obiekt other.weap > 5 //jeżeli nie jest to pistoletem, to przypisuje do slotu głównej broni oldammo //aktualnie posiadana amunicja do danej broni oldweap //id broni oldweapinst //nowa instancja broni primammo //amunicja do głównej broni</span> W postaci mam jeszcze zmienną, którą broń posiadam GML usedweap; // jest = 0(pistolety) lub 1(karabiny); to jest czy używam primweap czy secweap
  19. Temat zbiorczy na drobnostki

    Mam problem z kodem zmiany broni. Po pierwszym kliknięciu "E" broń leżąca na ziemi zmienia x i y na x i y postaci, po drugim wciśnięciu "E" broń dopiero się zmienia... Jest to upierdliwe :/ Collision Code with o_WeaponParent: GML if keyboard_check_pressed(ord("E")){ if other.weap > 5{ if primweap = other.weap{ if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; other.mag = 0; } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; other.mag -= a; } } else { if primweap = 0{ primweap = other.weap; primammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } instance_destroy(other); } else { var oldammo, oldweap, oldweapinst; oldammo = primammo; oldweap = primweap; primweap = other.weap; primammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } oldweapinst = instance_create_layer(x,y,"Instances",o_WeaponOld); oldweapinst.ammo = oldammo; oldweapinst.weap = oldweap; oldweapinst.mag = 0; instance_destroy(other); } } } else { if secweap = other.weap{ if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; other.mag = 0; } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; other.mag -= a; } } else { if secweap = 0{ secweap = other.weap; secammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } instance_destroy(other); } else { var oldammo, oldweap, oldweapinst; oldammo = secammo; oldweap = secweap; secweap = other.weap; secammo = other.ammo; if other.mag + global.weaponid[other.weap,5] <= global.weaponid[other.weap,6]{ global.weaponid[other.weap,5] += other.mag; instance_destroy(other); } else { var a = global.weaponid[other.weap,6] - other.mag; global.weaponid[other.weap,5] += a; instance_destroy(other); } oldweapinst = instance_create_layer(x,y,"Instances",o_WeaponOld); oldweapinst.ammo = oldammo; oldweapinst.weap = oldweap; oldweapinst.mag = 0; instance_destroy(other); } } } } //} /* global.weaponid[16,0] = "Pumpo"; // name global.weaponid[16,1] = 20; // dmg global.weaponid[16,2] = 40; // AP global.weaponid[16,3] = 10; // Ammo global.weaponid[16,4] = 10; // Max Ammo global.weaponid[16,5] = 0; // Mag global.weaponid[16,6] = 5; // Max mag global.weaponid[16,7] = 0; // empty mag global.weaponid[16,8] = sou_Pumpo; // sound global.weaponid[16,9] = room_speed*4; // reload time global.weaponid[16,10] = room_speed*1; // shoting time global.weaponid[16,11] = 0; // mag ammo ///////////////////////////////*/
  20. Temat zbiorczy na drobnostki

    Mam drobnostkę, dawno programowałem w GMS i do tego kupiłem sobie GMS2 (Studio dawał mi popalić, bo ciągle miał jakieś problemy z winem 10 u mnie :/ ) i coś robię źle ale tego nie widzę... Hmm, nie wiem, wszystko wygląda ok, ale chyba coś musiałem zje*ać :D EDIT: Dobra ja durny jestem jak pień... Nie wiem na cholerę mi potrzebne było with (o_WeaponParent)... Ehh ja to zawsze :D Błąd: GML //Pumpo _______________________________________ ################################################################################ ############ FATAL ERROR in action number 1 of Step Evento_WeaponChooser for object o_Player: Variable <unknown_object>.<unknown variable>(100023, -2147483648) not set before reading it. at gml_Object_o_Player_Collision_5aae0650_fffc_495c_88b1_5aa3451b403a (line 7) - if other.weap > 5 { ################################################################################ ############ Collision Event o_WeaponParent. GML /// @description Insert description here // You can write your code in this editor var oldweap; with (o_WeaponParent){ if other.weap > 5 { if primweap = 0{ primweap = other.weap; primammo = other.ammo; primmag = other.mag; instance_destroy(other); } else { oldweap = instance_create_layer(x,y,"Instances",o_WeaponOld); oldweap.weap = primweap; oldweap.ammo = primammo; oldweap.mag = 0; } } } /* //Wypisałem sobie na zaś trochę tego, już mam wypisane bronie jakie chciałem. global.weaponid[16,0] = "Pumpo"; // name global.weaponid[16,1] = 20; // dmg global.weaponid[16,2] = 40; // AP global.weaponid[16,3] = 10; // Ammo global.weaponid[16,4] = 10; // Max Ammo global.weaponid[16,5] = 0; // Mag global.weaponid[16,6] = 5; // Max mag global.weaponid[16,7] = 0; // empty mag global.weaponid[16,8] = sou_Pumpo; // sound global.weaponid[16,9] = room_speed*4; // reload time global.weaponid[16,10] = room_speed*1; // shoting time global.weaponid[16,11] = 0; // mag ammo ////////////////////////////////</span>
  21. Witam. Kupiłem GMS2 i jest tam nowy system kamery... Nie ma już viewów, tzn są ale nie ma już funkcji view_xview,yview,wview,hwiev... I teraz moje pytanie... Jak teraz zaprogramować dezaktywację regionalną? Muszę to zrobić, bo mam mapę całą w obiektach (Podziemia, które można kopać). Mam już upatrzony w necie system kamery, dzięki której mogę przybliżać i oddalać kamerę, i teraz potrzeba mi dezaktywować obiekty, które są poza kamerą... Mam mapę 9984x9984 pełną czarnych kratek 64x64, jest ich od cholery przez co nie jestem w stanie uruchomić gry... Objekt "o_Cam" Create: GML /// @description Insert description here // You can write your code in this editor camspeed = 30; //Build a camera at (0,0), with size 640x480, 0 degrees of angle, no target instance, instant-jupming hspeed and vspeed, with a 32 pixel border camera = camera_create_view(4992, 4992, 1920, 1080, 0, self, 30, 30, 1920, 1080); view_set_camera(0, camera); zoom_level = 1; //Get the starting view size to be used for interpolation later default_zoom_width = camera_get_view_width(view_camera[0]); default_zoom_height = camera_get_view_height(view_camera[0]); global.buildqueue = 0; depth = -100; Step: GML /// @description Insert description here // You can write your code in this editor if keyboard_check(vk_escape){ game_end(); } if keyboard_check(ord("W")){ y -= camspeed; } if keyboard_check(ord("S")){ y += camspeed } if keyboard_check(ord("A")){ x -= camspeed; } if keyboard_check(ord("D")){ x += camspeed; } if keyboard_check_pressed(ord("R")){ person = instance_create_layer(mouse_x,mouse_y,"Instances",o_Person); person.sex = choose("Man","Woman"); person.FatherNational = choose("Russian","English","Polish"); person.MotherNational = choose("Russian","English","Polish","German"); } //Move the zoom level based on mouse scrolling. Clamp the value so stuff doesn't get too silly. zoom_level = clamp(zoom_level + (((mouse_wheel_down() - mouse_wheel_up())) * 0.1), 0.1, 5); //Get current size var view_w = camera_get_view_width(view_camera[0]); var view_h = camera_get_view_height(view_camera[0]); //Set the rate of interpolation var rate = 0.2; //Get new sizes by interpolating current and target zoomed size var new_w = lerp(view_w, zoom_level * default_zoom_width, rate); var new_h = lerp(view_h, zoom_level * default_zoom_height, rate); //Apply the new size camera_set_view_size(view_camera[0], new_w, new_h); //Get the shift necessary to re-align the view. var shift_x = camera_get_view_x(view_camera[0]) - (new_w - view_w) * 0.5; var shift_y = camera_get_view_y(view_camera[0]) - (new_h - view_h) * 0.5; //Update the view position camera_set_view_pos(view_camera[0],shift_x, shift_y); camera_set_view_pos(camera, clamp( camera_get_view_x(camera), 0, room_width - camera_get_view_width(camera) ), clamp( camera_get_view_y(camera), 0, room_height - camera_get_view_height(camera) )); var xx, yy; if mouse_check_button(mb_middle){ xx = mouse_x; yy = mouse_y; x = xx; y = yy; } instance_deactivate_region(view_xport[0] - 128, view_yport - 128, view_wport[0] + 256, view_hport[0] + 256 , false,true); instance_activate_region(view_xport[0] - 64, view_yport - 64, view_wport[0] + 128, view_hport[0] + 128, false); Room Start: GML /// @description Insert description here // You can write your code in this editor //Enable the use of views view_enabled = true; //Make view 0 visible view_set_visible(0, true); //Set the port bounds of view 0 to 640x480 view_set_wport(0, 1920); view_set_hport(0, 1080); window_set_rectangle((display_get_width() - view_wport[0]) * 0.5, (display_get_height() - view_hport[0]) * 0.5, view_wport[0], view_hport[0]); surface_resize(application_surface,view_wport[0],view_hport[0]); window_set_fullscreen(true);
  22. Temat zbiorczy na drobnostki

    Wiecie co... Stworzyłem nowy projekt, napisałem to samo na próbę i działa... Już kilka razy tak miałem, że jakiś kod nie chciał działać, a po napisaniu go w nowym projekcie działał. Jednak u siebie w projekcie zrobiłem to w kolizjach i też jest ok :)
  23. Temat zbiorczy na drobnostki

    Wiesz, że dopiero zacząłem pisać i mam tylko 3 zmienne globalne? Jakoś nigdy z tym nie miałem problemu, zazwyczaj GMS robił mi psikusy, kiedy kod był dobry a nie chciał działać :/ Poza tym nigdy nie miałem problemu z dużą ilością zmiennych globalnych... Myślę, że dalej GMS robi mi psikusa (jak zawsze z resztą) i kod który powinien działać po prostu działać nie chce, chyba trzeba kupić GMS a nie jechać na darmowym :/
  24. Temat zbiorczy na drobnostki

    Zrobiłem skrypt, który wsadziłem w step bohatera. EDIT: Zapomniałem napisać po co mi ten kod, chodzi głównie o zmianę spirte a raczej narysowanie na graczu kolejnego sprite torby lub plecaka, później jakoś to wykorzystam np. będzie mógł wziąć więcej amunicji itp.
  25. Temat zbiorczy na drobnostki

    Mam problem z kodem... Otóż po wejściu na torbę albo na plecak, zamiast usunąć plecak lub torbę usuwa mi bohatera... Dawno nie programowałem w game maker ale chyba wszystko napisałem dobrze. GML if place_meeting(x,y,o_bpack){ if global.backpack = false{ if global.bag = true{ if keyboard_check_pressed(ord("B")){ global.bag = false; global.backpack = true; with(other){ instance_destroy(); } instance_create(x,y,o_bpack); } } else { global.backpack = true; with(other) { instance_destroy(); } } } } if place_meeting(x,y,o_bag){ if global.bag = false{ if global.backpack = true{ if keyboard_check_pressed(ord("B")){ global.backpack = false; global.bag = true; with(other){ instance_destroy(); } instance_create(x,y,o_bpack); } } else { global.bag = true; with(other) { instance_destroy(); } } } }
×