Skocz do zawartości

Pogromca_kodu77

Użytkownicy
  • Zawartość

    8
  • Rejestracja

  • Ostatnia wizyta

Reputacja

0 Neutralny

O Pogromca_kodu77

  • Tytuł
    Chicken
  1. Otóż mam system zmiany broni.. Powiedzmy,że prawie działa.Już mówię w czym problem.. Gracz ma do dyspozycji kilka rodzai broni w tym przypadku jest ich 5. jedna z nich jest broń którą ma przy sobie zawsze i jest nieograniczona..więc pozostałe cztery bronie są do zdobycia i mają ograniczoną ilość amunicji.. Żeby gracz otrzymał daną broń dodatkową musi ją sobie znaleźć na planszach.. Wtedy jak znajdzie,to ta broń automatycznie doda się do niego wraz z ilością amunicji jaka jest w kodzie przydzielona.. I teraz tak..problem polega na tym,że mimo,że gracz odnajduje broń dodatkową na planszy to i tak jej nie ma.. widzę tylko,że zmienia się w gui sprite na tą dodatkową broń,ale nadal nie może z niej strzelać.. Nie wiem gdzie jest błąd..czemu mimo implementacji w create broni dodatkowej i w kolizji gracza,gdzie wskazuje w obiekcie jaka broń ma mu się dodać to z tej broni nie można strzelac.. specjalnie zdublowałem ten sam kod na broń co podstawowa z różnica taką,że zmieniłem sprita,żeby się nie pomylić.. Tak jakby czegoś brakowało,że mimo zdobycia broni dodatkowej nie mogę z niej strzelać.. Proszę pomóżcie mi...może wam szybciej pójdzie wyłapanie błędu.. moje pomysły się wyczerpały.. edit..Gnysek przepraszam,że i do Ciebie na PM napisałem...pomyślałem,że jak rzadko tu zaglądasz to zapewne szybciej odczytasz wiadomość prywatną.. obj_player create have = true; ammo = 10; firerate = 15; dmg_min = 3; dmg_max = 5; obj_player step ////Bohater atakuje (nowy kod uproszczony) czas-- var cur = obj_kontroler_gry.current_weapon; // obiekt kontrolny ma indeks aktualnej broni, więc musimy go najpierw pobrać if keyboard_check_pressed(ord('X')) && czas <= 0 && global.wep[cur,e_wep.ammo] > 0{ czas = global.wep[cur,e_wep.firerate]; global.wep[cur,e_wep.ammo]-=1; var ins = instance_create(x, y-17, obj_kula); //bron podstawowa ins.hspeed = image_xscale * 15; ins.dmg = irandom_range(global.wep[cur,e_wep.dmg_min],global.wep[cur,e_wep.dmg_max]); } obj_skrzyniazbronia tu kolizja z graczem(jak najedzie na skrzynie to dostaje tą broń i amunicje) //bron laser global.wep[1,e_wep.have] = true; global.wep[1,e_wep.ammo] += 30; obj_kontroler_gry naciśnięcie przycisku S for(var i=0;i<weapons_total;i++) if keyboard_check_pressed(ord("s")+i) if global.wep[i,e_wep.have] current_weapon = i; Teraz tak tu obj_kontroler_gry perssistent który zawsze w grze towarzyszy.. obj_kontroler_gry Create enum e_wep { have,ammo,firerate,dmg_min,dmg_max } enum e_gun { kulki,laser,strzelba,miotacz,bazooka } current_weapon = 0; weapons_total = 5; var i = 0; //bron kulki global.wep[0, e_wep.have] = false; global.wep[0 ,e_wep.ammo] = 100; //nieograniczona w stepie jest kod na to global.wep[0 ,e_wep.firerate] = 5; global.wep[0 ,e_wep.dmg_min] = 3; global.wep[0 ,e_wep.dmg_max] = 5; //bron laser global.wep[1, e_wep.have] = false; global.wep[1 ,e_wep.ammo] = 30; global.wep[1 ,e_wep.firerate] = 10; global.wep[1 ,e_wep.dmg_min] = 3; global.wep[1 ,e_wep.dmg_max] = 5; //bron strzelba global.wep[2, e_wep.have] = false; global.wep[2 ,e_wep.ammo] = 20; global.wep[2 ,e_wep.firerate] = 15; global.wep[2 ,e_wep.dmg_min] = 3; global.wep[2 ,e_wep.dmg_max] = 5; //bron miotacz global.wep[3, e_wep.have] = false; global.wep[3 ,e_wep.ammo] = 10; global.wep[3 ,e_wep.firerate] = 20; global.wep[3 ,e_wep.dmg_min] = 3; global.wep[3 ,e_wep.dmg_max] = 5; //bron bazooka global.wep[4, e_wep.have] = false; global.wep[4 ,e_wep.ammo] = 5; global.wep[4 ,e_wep.firerate] = 25; global.wep[4 ,e_wep.dmg_min] = 3; global.wep[4 ,e_wep.dmg_max] = 5; obj_kontroler_gry Draw GUI var box_width = sprite_get_width(mask_explosion); //how wide is each box that will display a weapon? for (var i = 0; i < weapons_total; i ++){ draw_x = i * box_width; draw_y = 0; //rysowanie sprite od góry do lewej //jeśli posiadamy obraz każdej broni w tym samym duszku, możemy narysować je wszystkie za pomocą "i" if ( global.wep[i,e_wep.have] == true ) draw_sprite(spr_bron, i, draw_x, draw_y); } tu dodałem jeszcze w dodatkowej broni w create taki wpis obj_laser (broń ma taki sam kod co broń podstawowa różni się tylko spritem) create //bron nr 1 zaczynając indeskacje od 0 gdzie 0 to bron podstawowa kulki gun = e_gun.laser;
  2. Trzy małe problemy z drabiną

    Zdecydowanie czytelniej...zgadzam się z Tobą... Ciężko do pewnych nawyków się przyzwyczaić i cały czas nad tym pracuję. Wyłapałem w inny sposób błąd.A mianowicie co się dzieje kiedy bohater kiedy zejdzie z drabiny dotknie stałego podłoża/gruntu.. A mianowicie był przez ułamek sekundy zatrzymany w miejscu tak jakby ktoś go trzymał. Ten kod naprawia ten problem if __vsign == 1 && !wPowietrzu { drabina = false; } Ok udało Mi się też zlokalizować przyczynę dlaczego nie mogłem ustawić sprita idealnie jak schodzi po drabinie. Temat do zamknięcia.. Przyczyną była zmienna vspd musiałem zwiększyć dystans skoku do góry i już jest ok..
  3. Trzy małe problemy z drabiną

    Dobra... W końcu podgarnołem. Bohater teraz nie spada z drabiny. Ale zostały Mi dwie rzeczy do zrobienia. 1. Bohater jak jest przy drabinie po naciśnięciu przycisku dół chwyta się,ale nie górnej części drabiny tylko nad drabiną.. Dziwnie to wygląda.Mam sprita 128x128 pewnie przez to.. 2. Obj_podloze powoduje zblokowanie na ułamek sekundy sprita bohatera który zejdzie z drabiny i dotknie tego podłoża.. Nie wiem moze trzeba dac jakis warunek żeby sprawdzał podłoże? Jak dotknie gracz po zejściu drabiny obj_podloze. Kod teraz wygląda tak Create Zejsciezdrabiny = false; //bohater juz nie spada z drabiny if place_meeting(x,y,par_drabina) && key_check(key.down) { zejsciezdrabiny = true; } if place_meeting(x,y,par_drabina) { zejsciezdrabiny = false; } //bohater kiedy zetknie sie z ziemia //obj_podloze to puszcza drabine if place_meeting(x,y,par_drabina) && drabina = true && place_meeting(x,y+2,obj_podloze) { drabina = false; } if place_meeting(x,y,par_drabina) && place_meeting(x,y-32,par_drabina) && place_meeting(x,y+1,par_drabina) && czas <= 0 && (key_check(key.up) || zejsciezdrabiny)) { drabina = true; vspd = 0; hspd = 0; } } //Ruch po drabinie if drabina == true { var __hsign = key_check(key.right)-key_check(key.left); var __vsign = key_check(key.down)-key_check(key.up); hspd = min(max(hspd+__hsign,-2),2); vspd = min(max(vspd+__vsign*2,-4),4); if __vsign == -1 && !place_meeting(x,y-100,par_drabina) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_drabina) || !place_meeting(x,y+32,par_drabina) { drabina = false; } } Czy ktoś z was mógłby Mi pomóc z tymi dwoma wyżej rzeczami? Dziękuję.
  4. Trzy małe problemy z drabiną

    W porządku:-) Do kolegi wyżej napisałem. Pogrzebałem troche w kodzie i udało mi się rozwiązać problem ze spadającą drabiną.. Stworzyłem zmienna w create Coś takiego trzymaniesiedrabiny = false; Następnie w Stepie wywaliłem przy drabinie dół i dałem tą zmienną. I w końcu w Stepie dałem żeby zmienna przy drabinie i przycisku dół była false a potem true:-) Nie spada bohater ale jak zejde z drabiny i jestem na dole na solidzie to chwile sprite bohatera jest jakby przez coś trzymany..Mogę nogani przebierać..ale coś go trzyma przez chwile..i w końcu może chodzić i wszystko zaczyna działać..
  5. Trzy małe problemy z drabiną

    Dobrze już piszę na priv do Ciebie
  6. Trzy małe problemy z drabiną

    Jednak moje szczęście nie trwało długo.. Wyzbyłem się platformy którą nakładam na drabinie w celu stałego podłoża aby sprite bohatera nie spadł z górnej krawędzi drabiny. Teraz kiedy jest sama drabina,to w chwili kiedy znajdę się bohaterem na górze drabiny to naciskając przycisk dół to spada bohater. Próbowałem użyć gravity...ale coś źle robię.. Proszę was o pomoc..jak na podstawie wyżej kodu ustawić aby gracz nie spadał z górnej krawędzi drabiny. I naciskając przycisk dół dłużej lub krócej od razu chwytał się górnej krawędzi drabiny.. Dziękuję za każdą pomoc...sugestie..
  7. Trzy małe problemy z drabiną

    Dziękuję za sugestie. Problem 1 udało Mi się wczoraj naprawić oraz w połowie Problem 2 W pierwszym przypadku wystarczyło ustawić wartość inną wartość Y z +5 na +1 Podobnie jak w przypadku 2.Tu problem okazał się dość banalny. Wartość y ustawiłem z-32 na -100 Teraz bohater kiedy wejdzie na drabinie to na jej szczycie kończy animacje i zmienia swój stan na sprite stojącego. Tu zostało Mi do ustawienia bohatera w drugą stronę czyli bohater schodzący z drabiny. Otóż..kiedy próbuje zejść bohaterem z drabiny to jego sprite zaczyna schodzić nie od szczytu drabiny tylko o pare punktów wyżej.. Mówiąc wprost i jaśniej..kiedy jestem nad drabiną to w chwili kiedy nacisnę kursor dół to bohater powiniem złapać się górnej krawędzi drabiny.. A teraz on znacznie wyżej łapie się drabiny.. Ciężko Mi to ustawić...siedzę już 2 dzień nad tym. Moje pomysły wyczerpały się... Próbowałem w opcjach roomu zmienić wartość hsp i vsp z -1 na 15. Generalnie to pomogło teraz ekran nie przeskakuje uporczywie jak próbuje zejść po drabinie..Sprite płynnie zmienia swoje położenie...od razu łapie się górnej granicy drabiny. Mimo to te rozwiązanie nie do końca jest dobre,ponieważ mam na planszy ruchome obiekty i teraz te obiekty nie nadążają za graczem. Może jest inny sposób żeby ustawić sprite bohatera jak jest nad drabiną że przy naciśnięciu przycisku dół od razu chwytał górną część drabiny. //Drabina if place_meeting(x,y,par_drabina) && place_meeting(x,y-32,par_drabina) && place_meeting(x,y+1,par_drabina) && czas <= 0 && (key_check(key.up) || key_check(key.down)) { drabina = true; vspd = 0; hspd = 0; } } //Ruch po drabinie if drabina == true { var __hsign = key_check(key.right)-key_check(key.left); var __vsign = key_check(key.down)-key_check(key.up); hspd = min(max(hspd+__hsign,-2),2); vspd = min(max(vspd+__vsign*2,-4),4); if __vsign == -1 && !place_meeting(x,y-100,par_drabina) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_drabina) || !place_meeting(x,y+32,par_drabina) { drabina = false; } }
  8. Dzień dobry wszystkim, Od pewnego czasu borykam się z kilkoma problemami. Mam na myśli drabinę. Korzystałem z różnych samouczków w sieci,ale mimo to nie mogę rozwiązać tych problemów. A teraz jaśniej. Problem 1 Drabina na pozór działa dobrze..Mogę po niej wchodzić i schodzić. Żeby z niej nie spaść użyłem trwałego obiektu który nanoszę na górną krawędź drabiny następnie ten obiekt trwały sparowałem z drabiną i problem powierzchownie rozwiązany. czemu piszę że powierzchownie? Bo jest mały problem...kiedy nacisnę krótko przycisk dół na klawiaturze to mój bohater spada z drabiny na najbliższe podłoże solid ; natomiast kiedy przytrzymam dłużej klawisz dół to schodzi normalnie z drabiny. Nie mam pojęcia jak to naprawić żeby mógł normalnie schodzić bez względu czy nacisnę krótko klawisz dół czy też długo. Problem 2 Nie wiem,czy tu akurat wina jest źle ustawionego sprita bohatera,ale kiedy wejdę już na szczyt drabiny to mimo że już jestem na górze,to jeszcze przez chwilę mój sprite wspina się. Komicznie to wygląda... Próbowałem w ustawieniach spritach zmienić pozycję x i y sprite...ale to nie pomaga.. Problem 3 Mój bohater będąc na drabinie ma możliwość ataku w postaci strzału z pocisku. używam tu dodatkowo sprite ataku na drabinie który w chwili wystrzelenia pocisku pokazuje się. I tu jest mały kłopot...Kiedy wykonam strzał bohaterem na drabinie to za nim pocisk się nie rozbije o cokolwiek to kiedy poruszam lewo prawo bohaterem to zamiast zmienić się sprite bohatera na wchodzącego po drabinie,to pokazuje się przez chwilę jeszcze sprite ataku na drabinie oczywiście źle to wygląda,bo on suwa się góra dół... Tu poniżej kod mojej drabiny. Pomijam większość,żeby nie wklepywać bezsensownie wszystkiego.. obj_bohater Step //Ruch bohaterem if drabina == false { if key_check_pressed(key.jump) && wPowietrzu == false { vspd = -10-sign silaSkoku = 4; if key_check(key.down) && place_meeting(x,y+1,par_objekt_trwaly)//obiekt dziedziczacy z drabina aby bohater nie spadl z drabiny { y += 4; vspd = 0; silaSkoku = 0; czasSkoku = 0; } } //Drabina if place_meeting(x,y,par_drabina) && place_meeting(x,y-32,par_drabina) && place_meeting(x,y+5,par_drabina) && czas <= 0 && (key_check(key.up) || key_check(key.down)) { drabina = true; vspd = 0; hspd = 0; } } //Ruch po drabinie if drabina == true { var __hsign = key_check(key.right)-key_check(key.left); var __vsign = key_check(key.down)-key_check(key.up); hspd = min(max(hspd+__hsign,-2),2); vspd = min(max(vspd+__vsign*2,-4),4); if __vsign == -1 && !place_meeting(x,y-32,par_drabina) { drabina = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_drabina) || !place_meeting(x,y+32,par_drabina) { drabina = false; } } // animacja bohatera wchodzacego na drabinie i odpoczywajacego if drabina == true { if x == xprevious && y == yprevious { if sprite_index != spr_bohater_odpoczywanadrabinie { sprite_index = spr_bohater_odpoczywanadrabinie; } } else { if sprite_index != spr_bohater_wchodzipodrabinie { sprite_index = spr_bohater_wchodzipodrabinie; } } } ////Bohater atakuje z drabiny if keyboard_check_pressed(ord('X')) && drabina==true && czas == false && place_meeting(x,y,par_drabina) && instance_number(objPocisk) < 3 { czas = 30; atak = 1; with instance_create(x,y,par_ataku) { sprite_index = spr_bohater_strzela_na_drabinie; image_xscale = other.image_xscale; { var box, ID; if image_xscale == -1 box = bbox_left; else box = bbox_right; ID = instance_create(box+image_xscale*-10, y-17, objPocisk); ID.hspeed = image_xscale * 15; } } }
×