Prodayle Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 o to kod na strzelanie, zarowno z pistoletu jak i pistoletu maszynowego GML if ammo >= 0 and global.dir = 1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 pistol_alarm = 0 } if ammo >= 0 and global.dir = -1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 ammo -=1 pistol_alarm = 0 } if ammo >= 0 and global.dir = -1 and global.gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 alarm[0] = 50 } if ammo >= 0 and global.dir = 1 and gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 alarm[0] = 50 } problem jest w tym, ze gdy odpalam gre i probuje strzelic z pistoletu lub pistoletu maszynowgo wyskakuje mi okno z bledem w ktorym napisane jest "unknown variable gun_switch" w dodatku pokazuje mi ze wcale nie napisalem GML global.gun_switch = 1 and global.nopistol = true tylko GML gun_switch = 1 and nopistol = true hmmm naprawde bardzo ciekawe.... oczywiscie w create mam wszystko tak jak powinno byc, to co global jest globalem. a ten blad caly czas wystepuje nie wiedzialem co jeszcze dodac wiec sluze informacjami Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 Create: GML global.gun_switch = 0; global.nopistol = 0; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 no przeciez wlasnie tak mam ustawione... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 Zapewne nie ma w roomie żadnej instancji obiektu, który by posiadał taki kod w Create. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 uwiez mi ze jest to w create glownego bohatera. kiedy zmieniam na pistolet i zaczynam strzelac wlasnie wyskakuje ten blad i chyba wiem w czym problem wszystko jest jak trzeba ale game maker ma swoj humor i pokazuje mi cos czego nie napisalem (bardziej cos co napisalem, ale niekompletne) bo zmienne ustawilem na global, a wcale to sie chyba nie zatwierdza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 18 Sierpnia 2011 W create używasz global, a w kodzie już nie. if ammo >= 0 and global.dir = 1 and gun_switch = 2 and pistol_alarm = 1 Jak wyskakuje błąd, to pokazuje się w której linijce (a w GM8 jeszcze dodatkowo taki znaczek ^ pod tekstem pokazuje kolumnę gdzie ten błąd mniej więcej się zaczyna). EDIT: ten kod aż prosi się o refactoring. Połowa warunków się powtarza. Nie można np. tak? GML if ammo > 0 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) // reszta kodu } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 nie mozna, musi byc warunek, ammo, musi byc dir(czyli zmienna odpowiadajaca za kierunek zeby bylo wiadomo w ktora strone pocisk ma leciec) ,musi byc gun_switch = 1 lub 2 czyli bron zmieniona na pistolet lub pistolet maszynowy i musi byc pistol_alarm zeby mozna bylo oddac tylko 1 strzal za jednym przycisnieciem guzika (no dobra w przypadku pistoletu maszynowego mozna to usunac) tak, pokazuje wlasnie na poczatek tego skryptu co podalem. i pokazuje zle bo gun_switch i pistol_alarm sa global zeby pistolet i pistolet maszynowy mogli z nich korzystac Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 Chodziło o zamianę: if ammo >= 0 and global.dir = 1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 pistol_alarm = 0 } if ammo >= 0 and global.dir = -1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 ammo -=1 pistol_alarm = 0 } if ammo >= 0 and global.dir = -1 and global.gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 alarm[0] = 50 } if ammo >= 0 and global.dir = 1 and gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 alarm[0] = 50 } Na: GML if ammo >= 0 { if global.dir = 1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 pistol_alarm = 0 } if global.dir = -1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 ammo -=1 pistol_alarm = 0 } if global.dir = -1 and global.gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 alarm[0] = 50 } if global.dir = 1 and gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 alarm[0] = 50 } } Właściwie to bez urazy, ale kod jest do d**y. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 18 Sierpnia 2011 Na moje oko to masz dwa obiekty o tej samej nazwie, lub jakiś inny w którym przypadkiem wkleiłeś ten kod. Poszukaj dobrze. Jak wyskoczy błąd to zobacz uważnie w jakim obiekcie i w jakim evencie, a potem dokładnie sprawdź linijkę którą podaje - na pewno wyświetlony w oknie błędu KOD tam będzie - nic nie bierze się z nieba :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kriso99 Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 if ammo >= 0 and global.dir = 1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 pistol_alarm = 0 } if ammo >= 0 and global.dir = -1 and global.gun_switch = 1 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 ammo -=1 pistol_alarm = 0 } if ammo >= 0 and global.dir = -1 and global.gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x-32,main_hero.y,Strzaly) new.direction = 180 new.hspeed = -30 new.image_xscale = -1 alarm[0] = 50 } if ammo >= 0 and global.dir = 1 and gun_switch = 2 and pistol_alarm = 1 { new = instance_create(main_hero.x+32,main_hero.y,Strzaly) new.direction = 0 new.hspeed = 30 ammo -=1 alarm[0] = 50 } błąd: w ostatnim if'ie masz gun_switch = 2 zamiast global.gun_switch = 2 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 18 Sierpnia 2011 BTW. Refactoring się robi tak - 61% kodu mniej: GML if ammo >= 0 { if (global.dir = -1 or global.dir = 1) and pistol_alarm = 1 { new = instance_create(main_hero.x + 32*global.dir, main_hero.y, Strzaly); new.hspeed = 30 * global.dir; new.image_xscale = global.dir; new.direction = 90 - 90 * global.dir if global.gun_switch = 1 { ammo -=1; pistol_alarm = 0; } else if global.gun_switch = 2 { alarm[0] = 50; } } } @UP: już mu to napisałem... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 To jak już mowa o refactoringu, zamieniłbym: GML if global.dir = -1 { new.direction = 180; } else { new.direction = 0; } Na: GML new.direction = 90 - 90 * global.dir Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 18 Sierpnia 2011 Zmieniłem, thx :) Teraz już głównie klamerki można usunać :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 a co jak bym chcial zrobic odstepy miedzy stzralami ale tylko z pistoletu maszynowego, tzn. gun_switch 2? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sernat Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 GML if ammo >= 0 { if (global.dir = -1 or global.dir = 1) and pistol_alarm = 1 { new = instance_create(main_hero.x + 32*global.dir, main_hero.y, Strzaly); new.hspeed = 30 * global.dir; new.image_xscale = global.dir; new.direction = 90 - 90 * global.dir if global.gun_switch = 1 { ammo -=1; pistol_alarm = 0; } else if global.gun_switch = 2 && alarm[0] = -1{ alarm[0] = 50; } } } A w Evencie Alarm 0 coś ala: GML new = instance_create(main_hero.x + 32*global.dir, main_hero.y, Strzaly); new.hspeed = 30 * global.dir; new.image_xscale = global.dir; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 cos zabardzo to ni dziala w sensie strzela caly czas linia ciagla bez wzgledu na to jak ile dam alarmowi (probowalem z 100 , 150 i 1000) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 To nie ma prawa działać. Jedynym skutkiem włączenia alarmu jest ponowne nastawienie go. Sądząc po budowie kodu uważam, że w obecnej postaci nie ma szans na poprawienie go tak, aby działał i jednocześnie był czytelny. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 ? no ja nie wiem to doradź coś powyższy kod i tak nie jest mój :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 Ja bym zrobił to tak: Create: GML prz = 1 //czy przeladowany pistol_kontrol = 1 //czy pistolet moze strzelic bron = 1 //1 to pistolet, 2 to maszynówka ammo = /liczba\ bron_prz = /liczba\ //minimalny odstep miedzy strzalami</span></span> Strzelanie: GML if(ammo)&&(prz)&&((bron != 1)||(pistol_kontrol = 1)) { new = instance_create(main_hero.x + 32*global.dir, main_hero.y, Strzaly); new.hspeed = 30 * global.dir; new.image_xscale = global.dir; new.direction = 90 - 90 * global.dir prz = 0 if(bron = 1) pistol_kontrol = 0 alarm[0] = bron_prz } Key Release (klawisz strzelania): GML pistol_kontrol = 1 Alarm 0: GML prz = 1 Nie jestem pewny, czy to zadziała, więc zrób najpierw kopię zapasową. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 teraz to troche pomieszlaes :/ pewnie bedzie masa konfliktow z innymi zmiennymi, a objekty typu pistolet trzeba bedzie programowac na nowo :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Madness Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 teraz to troche pomieszlaes :/ pewnie bedzie masa konfliktow z innymi zmiennymi, a objekty typu pistolet trzeba bedzie programowac na nowo :/ Co z tego, jak będzie ci all chodzić ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 Muuuuczek567 a co z maszynówką? :P edit: aaa ruzmiem ze nią tez się zajełeś? a wogóle to po co ten znak "!" ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 18 Sierpnia 2011 Tak to jest, jak najpierw zaprogramujesz, a potem wymyślasz nowe rzeczy. To się robi na odwrót! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 a ja mam taki zajumisty kod na strzelanie bez obiektu pocisku w platformówce(o ile robisz platformówkę :D) CREATE GML ms=true // moge strzelac bron=1 // bron wybrana //i tu zmienne od amunicji</span> EVENT SPACJA: GML if ms{ if bron_mam=0{ for(i=1;i<=129;i+=1){ xx=x+image_xscale*(i*5) if xx<view_xview or xx>view_xview+640 then break; if collision_point(xx,yy,o_kosmit,0,0){ o=collision_point(xx,yy,o_kosmit,0,0) o.hp-=1 if o.hp<=0 with(o){ instance_destroy() } break; } } ms=false alarm[0]=40 }else if bron_mam=1 and global.bron[1,1]>0{ for(i=1;i<=129;i+=1){ xx=x+image_xscale*(i*5) if xx<view_xview or xx>view_xview+640 then break; if collision_point(xx,yy,o_kosmit,0,0){ o=collision_point(xx,yy,o_kosmit,0,0) o.hp-=0.2 if o.hp<=0 with(o){ instance_destroy() } break; } } ms=false alarm[0]=4 global.bron[1,1]-=1 } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Prodayle Opublikowano 18 Sierpnia 2011 Autor Udostępnij Opublikowano 18 Sierpnia 2011 gnysek, no wlasnie mialem to w planach, ale nie wiedzialem ze alarmy sa takie ograniczone :| karolo, a co to za zmienna bron_mam ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 edit: aaa ruzmiem ze nią tez się zajełeś? a wogóle to po co ten znak "!" ? !=not if bron!=1 jezeli bron nie rowna sie 1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 18 Sierpnia 2011 Boże! Czy wy naprawdę nie widzicie, że połowa kodu się tam powtarza i należy go pisać tak, żeby się nie powtarzać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 a no da sie toto poprawić :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 18 Sierpnia 2011 Administratorzy Udostępnij Opublikowano 18 Sierpnia 2011 Ale zamiast rozwiązać problem generujecie nowe. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Sierpnia 2011 Udostępnij Opublikowano 18 Sierpnia 2011 Gnysek chyba będziesz musiał kiedyś napisać tutorial o optymalizacji xD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się