Opisek
-
Postów
72 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Odpowiedzi opublikowane przez Opisek
-
-
@Elevetor (i @reszta_którzy_nie_umieją_zrobić_tego)
Ok mam szybką i prostą odpowiedź: Zrób tak:
(Step gracz)
GMLif global.enter=true && distance_to_object(obj_car)<=50 && keyboard_check_pressed(vk_enter);(Step auta z graczem){
global.enter=false instance_change(obj_graczauto,false);
with (obj_car) instance_destroy();
}
GMLif global.enter=true && keyboard_check_pressed;(vk_enter);{
global.enter=false instance_change(obj_gracz,false);
instance_create(obj_gracz.x+10,obj_gracz.y+10,obj_car);
}
(Event Game Start u gracza)
GMLglobal.enter=true;(U gracza i w aucie z graczem event relase Enter)
GMLglobal.enter=true;I tutaj wszystko powinno działać ^^^
A tutaj masz przykład:
http://www.mediafire.com/download/r0zctdrg...radnik+0004.gmk
-
ereg ma bardzo dobry pomysł z plikami binarnymi :) Jednak, będą one [bardzo] łatwe do przerobienia, więc przed odczytaniem / zapisem moim zdaniem trzeba by to było potraktować jakimś prostym szyfrem, np. XOR przez dowolną sól. Zapobiegnie to trochę oszukiwaniu.
Można wiedzieć gdzie dokładnie ereg to trzyma? przeszukuję go i nic...
-
No faktycznie bo ta funkcja nie działa z tego co podaje dokumentacja: "WARNING!: This function has been deprecated and will no longer work! "
To znaczy, że w żaden sposób nie da się tego zrobić?
-----------------------------------------------------\
Pytanko da się zrobić coś takiego:?
GMLshow_messege('Put your music into the folder with the game.') sou_szuk=get_string("Enter the name of music. (Tip, for example, e.g. .mp3)","Music.mp3") sou_new=sound_add(sou_szuk,1,1) sound_loop(sou_new)EDIT:
Ok to na górze działa, można zaprzestać odpisywania :D
-
Brakuje opcji co się stanie gdy zostanie naciśnięty przycisk 'anuluj' i gdy plik nie zostanie poprawnie załadowany.
Ok, ale chodzi mi o to, że na razie wogóle nie da się wgrywać muzyki.
-
Bez wstępów chodzi o to co w tytule.
Mam taki kod:
GMLsou_szuk=get_open_filename( 'mp3|*.mp3|All files|*.*','' ) sou_new=sound_add(sou_szuk,1,1) sound_loop(sou_new)(Ten na górze jest wyrwany z całego kodu.)
I chodzi mi o to:
- Gracz wykonuje akcję w której jest zamieszczony ten kod
- Wybiera plik z komputera
- Odpala mu się muzyka którą wybrał
Jak to zrobić? Czy dobrze kombinuję? Proszę o szybką odpowiedź.
-
dokladnie :)
tez pisalem bys uzyl help a w nim vystarczy napisac file_ i mozes dowoli wybierac wedlog tego co cie interesuje.
mysl o mnie ze jestem za leniwy by napisac calo komende, kdyz kopiowanie helpu uwazam za zbedne
ja zawse o dobrych programatorach myslalem, ze to lenie.
bo zamiast pisac dlugie pentle zmieniajo algorytm, skracajoc tym kod z kilkuset linijek na zaledwie dziesec :thumbsup:
W moim help nie wyszukuje "file_" :( Jest to gdzieś w internecie o przeczytania?
-----
I jakby się dało. Jest jakiś poradnik przykład?
-
Błagam ciebie, nie stosuj tego wraz z resztą jego kodu :|GMLkLeft = vk_left; // lewa strzałka
if keyboard_check(kLeft) {
// tutaj twoj kod poruszania w lewo, przykladowy:
hspeed = -4;
movementActive = true; // linijka potrzebna
}
if keyboard_check(kRight) {
// tutaj twoj kod poruszania w prawo, przykladowy:
hspeed = 4;
movementActive = true; // linijka potrzebna
}
if movementActive == false {
hspeed = 0; // neguje predkosc w wypadku braku nacisnietych klawiszy
}
Walnij to w stepie, i pamiętaj aby pozamieniać twój ruch w prawo/lewo na własny :)
Widzę, że już użytkownik sobie poradził, to nie ma co zmieniać.
-
Jeśli nie masz odpowiedzi to się udzielę.
Create:
GMLprawo = false;lewo = false;
Kliknięcie w prawo:
GMLprawo = true;Kliknięcie w lewo:
GMLlewo = true;Puszczenie w prawo:
GMLprawo = false;Puszczenie w lewo:
GMLlewo = false;Step:
GMLif prawo == true{alarm[1] = 1;
prawo = false;}
else
{alarm[3] = 1}
if lewo == true
{alarm[2] = 1;
lewo = false'}
else
{alarm[3] = 1}</span></span>
Alarm 1:
Bloczek Move Fixed = Prawa strzałka i prędkość
Alarm 2:
Bloczek Move Fixed = Lewa strzałka i prędkość
Alarm 3:
Bloczek Move Fixed = Bloczek między wszystkimi strzałkami, czyli stop
Ok odpowiedź na górze jest extra! Lepsza od tej.
@up Ej to nie fair! Ciągle mnie uprzedzasz w odpowiedziach :D
-
Instalowałeś, czy Exeka pobierałeś?
Pobrałem exeka, spróbuję zainstalować.
A tak w ogóle... Czym zrobiłeś instalatora?
Program czy programowanie ręczne?
----------------
Nie... nadal wyskakuje:
___________________________________________################################################################################
############
FATAL ERROR in
action number 1
of Draw Event
for object o_HUD_AppControl:
Fatel Error: Can not create vertex buffer
################################################################################
############
-
1, zapis objektu do file
-mowis sobie struktura file bedzie taka:
-- id_objektu(1byte), x(2byte), y(2byte), hp(1byte), direction(8 axis ... 1byte), speed (1byte) . 8 byte na jeden objekt a na 9. byte jest drugi objekt. i tak dalej.
- otwierasz file_xxx_open (xxx = bin/text/ini. bin jest fajny)
- zapisujesz wszystkie objekty wedlog struktury ktoro sobie ustaliles.
- zamykasz file_
do rooma by wczytac takto zapisane objekty robisz to samo, ale zamiast zapisiwac zmienne objektu do file, to je wczytujes z file do zmiennych _id, _x, _y, _hp, _direction, _speed.
te uzyjesz do stwrorzenia instancji v roomie
-- id_instancji=instance_create(_x,_y,_id_objektu)
-- id_instancji.hp=_hp
-- id_instancji.direction=_direction
-- id_instancji.speed=_speed
2, no to fajnie :)
3, podobno jak objekty tylko zapisujesz inne zmienne
poczytaj o:
room_add()
room_instance_add(ind,x,y,obj)
room_set_
Gdzie jest to całe bin??????!!!!!!!!!!!!!!!!
-
Kiedy ci wywaliło errora? Przy starcie, czy później?
Prz samym starcie :(
-
fajne jest miec swoj editor ktory zapisuje roomy i objekty do pliku.
zapis do pliku (wybieracie bin/ini/txt) w formacie ktory wy wymyslicie.
format ulozienia danych moze byc dowolny bo to zas wy bedziecie odczytywac ten format w samej grze.
mysle ze niepisalisce nic o GM:S a to dobrze bo tak to zupelnie inna sprava. v gm8 niema problemu
zapisujecie wzystkie wazne parametry i zmienne.
to dotyczy jak zapisu rooma, tak zapisu objektu.
jezeli ma byc w roomie nowy objekt, ktory w grze niema, to musicie go zbobic znow przez:
- objekt_add
- event_add
widz help
jezeli objekt jest juz w gre to tylko zapisujecie do pliku jego id, x, y, i to co jest inne od originalnego objektu.
by potem moc poprawnie odtworzyc objekt w roomie.
doteraz mailem bardzo malo czasu, ale moze po nowym roku sie to poprawi( obi :) )
to jak by bylo cos niejasnego, to moze pozniej pokaze jakis przyklad
No właśnie w tym problem!
1. Jak zapisywać te obiekty?
2. Mam GM 8.0 Pro, więc bez obaw :)
3. A jak zapisywać roomy do pliku i odtwarzać je z folderu?
-
Nie bardzo o to mi chodzi...
Chodzi mi o to, że gracz ma moją grę. Pobiera folder z roomami. Gra wczytuje roomy z tego folderu.
Chyba, że to o to chodzi...
Nie rozumiem :huh:
-------------------
EDIT:
-------------------
Ok, zaczynam powoli rozumieć tylko jeszcze popróbuję jak to działa w praktyce... |Edit:| Tylko jeszcze nie wiem jak zapisać obiekt do pliku (używałbym tego jako dodatki do gry, więc jak to zrobić?)
(Tylko, że z tego co piszecie wychodzi jak dodać obiekty z osobnego pliku do roomu. Ja chcę dodać room do gry z osobnego pliku. Jest to możliwe?)
-
Mam to samo pytanie
@up Nie zrozumiałem ciebie... O co chodzi z room_add itd.?
-
Mam pytanie do tego, jak sprawić, aby wszystko co jest w notatniku do którego się dopisujemy, przed dopisem zostało usunięte?
Próbowałem już:
GMLfile_text_open_write("Kody.txt");dopis = get_string("Plesa enter mode","");
uchwyt = file_text_open_append('Kody.txt');
file_text_write_string(uchwyt, string(dopis));
file_text_writeln(uchwyt);
file_text_close(uchwyt);
Ale coś mi błędy wyskakują.
Co robić?
-
################################################################################
############
FATAL ERROR in
action number 1
of Draw Event
for object o_HUD_AppControl:
Fatel Error: Can not create vertex buffer
################################################################################
############
-
No i zrobiła się dyskusja na temat czy stawiać ; czy też nie czy robić == czy też nie czy robić________tak___przy___________każdym______kodzie.
O co wam chodzi?!
_____ = spacja
(chociaż w tej dyskusji poprawniej napisać)
GML___ == ["space"]; -
1. W tej gierce gracz akurat ma istnieć
2. No tak... destroy_instance Musiało mi się coś pomieszać.
3. Słowo potential NIEKTÓRYM (nie nie tylko mnie :D) kojarzy się z inteligencją
4. Trzeciej uwagi nie zrozumiałem... Przecież każdy normalny patrzy na malutkie tabelki z kodami ;)
-
Nie ucz paskudnych nawyków.
1. W warunkach pętli if, używamy == zamiast =.
2. Po linijkach stawiamy średniki.
3. Formatujemy kod.
4. Nie używamy krótkich nazw zmiennych, z których nie można się nic domyśleć.
5. Należy używać else if bądź pętli switch (jeśli takowa istnieje w gml, nie pamiętam).
Poprawiłem ten kod trochę:
GMLwybor = 0;menu = show_message_ext("Co chcesz kupić?","Broń?","Teren?","Nic?");
if menu == 1 {
wybor=show_message_ext("To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");
if (wybor == 1) and (score>20) and (bron == 0) {
bron = 1
wybor = 0
score -= 20;
}
}
else if menu == 2 {
wybor = show_message_ext("To będzie kosztowało 10 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");
if (wybor == 1) and (score > 10) and (global.teren < 3) {
global.teren += 1;
wybor = 0;
score -= 10;
}
}
Dzięki postaram się poprawić.
-
Do dupy. Nic się nie trzyma kupy. Przyciągasz napisem "sztuczna inteligencja wrogów" a jedyne co robisz to sterowanie w 4 kierunkach i to na klockach nie tłumacząc nic. Nawet czemu robisz to sterowanie. Potem robisz odbijanie od obiektu... Przypominam przed chwilą że zrobiłeś poruszanie top-down w 4 kierunkach. Odbijanie od obiektów przy takim sterowaniu jest głupie, nawet jak dla początkujących.
Użycie show_message_ext jest idiotyczne. Nie używa się tego do takich rzeczy. Jest to bardzo proste, ale jeżeli masz zamiar 'robić sklep' w swojej grze, to może warto nauczyć się robić to w jakikolwiek dobry sposób.
Nazwałeś to "Początki z game maker", a to nie są żadne początki. Nic nie wytłumaczyłeś, a od razu wyjaśniasz kod.
Napisałem DOKOŃCZĘ
-
Jest druga możliwość.
wybor=get_string("Co chcesz kupić?","")
if wybor=DMG {akcja}
if wybor=armor {akcja}
if wybor=hp {akcja}
-
Witam w tym poście chciałbym zrobić poradnik, a w tym poradniku chciałbym wprowadzić nowych do gm'a.
W tym poradniku pokażę wam sztuczną inteligencję, pieniądze oraz wszystkie możliwości okien dialogowych.
A więc zaczynajmy!
Po pierwsze tworzymy obiekt Gracz i dajemy mu jakiś obrazek.
[Tworzymy 5 eventów w obiekcie Gracz
Key Press Left
Key Press Right
Key Press Up
Key Press Down
Key Relase Any Key
W Left wkładamy pierwszy klocek z zakładki Move w dziale Move czyli Move Fixed.
Skoro to przycisk strzałki w lewo to w tym co nam się pokaże po przesunięcia klocka Move Fixed do eventu zaznaczamy strzałkę w lewo i pod tym ustalamy prędkość, ja ustalę 3.
Z resztą eventów Key Press robimy to samo, w Right poruszanie się w prawo, w up w górę, a w down w dół.
W event Key Relase Any Key wkładamy ten sam klocek, ale klikamy w nim klocek po środku strzałek, a prędkość ustalamy na 0.
W ten sposób uzyskujemy podstawowe chodzenie]
[Teraz tworzymy obiekt Kamien a w nim trochę pod nazwą klikamy Solid W obiekcie Gracz tworzymy event Colision -> Kamien. W tym evencie wstawiamy klocek z zakładki Move, z działy Jump czyli Bounce
W ten sposób uzyskujemy odbijanie się od skały]
[Teraz stworzymy mini-sklepik. U bohatera tworzymy event kliknięcia jakiegoś przycisku, a w nim z zakładki Control, z działu Code wybieramy Execute Code i do niego wklejamy to:
GMLwybor = 0;menu = show_message_ext("Co chcesz kupić?","Broń?","Teren?","Nic?");
if menu == 1 {
wybor=show_message_ext("To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");
if (wybor == 1) and (score>20) and (global.bron == 0) {
global.bron = 1
wybor = 0
score -= 20;
}
}
else if menu == 2 {
wybor = show_message_ext("To będzie kosztowało 10 kryształów. Czy potwierdzasz zakup?","Tak","","Nie");
if (wybor == 1) and (score > 10) and (global.teren < 3) {
global.teren += 1;
wybor = 0;
score -= 10;
}
}
W evencie create bohatera do Execute Code wklejamy to:
GMLglobal.odstep=get_integer("Jaki ma być odstęp między strzałami wroga?","100")global.bron=0
wybor=0
global.teren=0
global.strzal
Teraz tłumaczenie!
get_integer to pytanie o numerek
global.odstep,wybor, global.teren i global.bron to zmienne z początkową wartością 0
Gdy klikniemy przycisk sklepiku pojawi się pytanie z trzema przyciskami.
Co chcesz kupić?
[broń?] [Teren?] [Nic]
Wywołuje to kod show_message_ext("","","","")
Przed nim mamy menu= z czego wychodzi menu=show_message...
To sprawia, że zmienna menu dostanie wartość po kliknięciu przycisku.
[broń?] - 1
[Teren?] - 2
[Nic?] - 3
Po tym jest napisane if menu=1 {wybor=show_message_ext("To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup?","Tak","","Nie")
If oznacza jeżeli, więc kod oznacza jeżeli menu=1....
if to komenda menu=1 to tekst logiczny a po tekście logicznym stawiamy akcję w tych nawiasach {}
W nawiasach mamy ten sam kod, który nas pyta o to co chcemy kupić, ale tutaj mówi do nas To będzie kosztowało 20 kryształów. Czy potwierdzasz zakup? i mamy dwa przyciski:
Czy potwierdzasz zakup?
[Tak] [Nie]
W kolejnym if'ie game maker sprawdza czy mamy powyżej 20 monet oraz czy nie zakupiliśmy już tego produktu. Jeżeli wszystko się zgadza, kod odbiera nam 20 monet, a zmianną bron zamienia na 1.
Dalej mamy tak samo tylko tym razem game maker sprawdza czy mamy ponad 10 krzyształów i czy nie mamy maksymalnego poziomu terenu. ]
[ Skoro mamy sklepik, to czas na walutę.
Tworzymy obiekt i dajemy mu obrazek.
Tworzymy także drugi obiekt, ale jego teksturka powinna być nie widoczna, lecz jednak istnieć. U mnie to jest czarny piksel.
W obiekcie punktu tworzymy event Colision --> Gracz, a do niego wsadzamy klocek z zakładki main1 z działu Objects na pierwszej pozycji z drugiego rzędu czyli Change Instance ---> Zamiennik_Kryształu (czyli ten piksel) oraz Execute Code w którym wpisujemy po prostu
GMLscore+=1;W zamienniku kryształu dajemy natomiast Colision ---> Wrog, a w tym Change Instance --> Kryształ
W ten sposób tworzymy kryształ, który po wejściu na niego znika i dodaje punkt, a gdy najedzie na niego wróg znów się pojawia ]
[Czas na wrogów!
Pierwszy krok sztucznej inteligencji, czyli chodzenie za graczem omijając przeszkody.
GMLmp_potential_step_object (Gracz.x, Gracz.y, 1, Kamien)Ten kod ^^^ wstawiamy do step.
Słowo potential niektórym kojarzy się z inteligenncją. Kod mp_potential_step_object to podążanie do danego punktu omijając przeszkody.
Pierwszy argument (Gracz.x) - koordynat x, do której ma podążać obiekt.
Drugi argument (Gracz.y) - koordyt y, do której ma podążać obiekt.
Trzeci argument (1) - prędkość z jaką ma podążać obiekt.
Czwarty argument (Kamien) - obiekt, który ma omijać podczas podążania do podanej koordynacji.
Teraz drugi stopień sztucznej inteligencji.
Tworzymy event Begin Step, a w nim w Execute Code:
GMLif global.strzal == 1&&global.bron == 1&&distance_to_object(Gracz)<=100;{
alarm[4]=1;
}
To spowoduje nam nadanie alarmowi 4 wartości 1, kiedy broń będzie aktywna, a gracz będzie przybliżony do wroga o minimum 99.
Tworzymy event alarm 4 a w nim kod:
GMLglobal.strzal=2 alarm[4]=global.odstep;oraz alarm 5:
GMLinstance_create(Wrog.x,Wrog.y,Strzal_Zly) global.strzal=1Teraz tworzymy obiekt Strzal_Zly, a w nim dajemy to:
Event Create > Zakładka main2 > Dział Timing > 1 czyli Set Alarm
Pierwsze okienko - 100
Drugie okienko - Alarm 3
Alarm 3 > Zakładka main1 > Dział Objects > 2 w 2 rzędzie czyli Destroy the instance
To wszystko spowoduje usunięcie się z planszy strzału po minięciu 100 kroczków.
Step > Execute Code
GMLmp_potential_step_object (Gracz.x, Gracz.y, 2, object2)Zderzenie z obiektem t1,t1,t1 > odbicie * Te obiekty w następnych nawiasach
W ten sposób uzykujemy sztuczną inteligencję wrogów! ]
[Tworzymy jeszcze trzy obiekty; t1,t2 i t3, każdy z nich ma mieć zaznaczone solid, a ich tekstura, najlepiej żeby była taka sama jak kamień.
W t1, w evencie Step, w Execute Code dajemy:
GMLif global.teren == 1 {instance_destroy();}To spowoduje czekanie aż zmienna global.teren będzie miała wartość 1 i wtedy usunięcie się z planszy.
W t2 i t3 robimy to samo, lecz tym razem global.teren == 2, a w t3 == 3.
U gracza i wroga robimy eventy Zderzenia z każdym z tych bloczków, a w nich odbicie jak w drugich nawiasach.]
[
Tworzymy obiekt pocisk, a w nim:
Create>Move>Move>Pierwsze czyli Move Fixed
Zaznaczamy wszystkie strzałki i ustalamy prędkość.
Colision ---> Kamien>main1>Objects>Destroy the instance
^^^
Robimy tak samo jak tutaj ^^^ przy zderzeniu z t1,t2,t3
Obiekt Gracz>Przycisk do strzału>Control>Code>Embed Code
GMLif global.bron == 1 {instance_create(Gracz.x,Gracz.y,pocisk)}I mamy strzelanie i tym samym całą grę! Jeszcze tylko u gracza przy zderzeniu ze złym pociskiem w kodzie score-=10, a u wroga przy zderzeniu z pociskiem score+=10
]
Przykład: (Oczywiście całkowity zakaz udostępniania projektu[chyba, że dosyć go przerobiliście, ale i tak dajecie mnie i ten post w creditsach]bez mojej wiedzy, zgody i w waszym imieniu)
P.S. Wprowadziłem sobie jeszcze prostą konsolkę do kodów pod eventem Key Relase Ctrl u Gracza, można sobie zobaczyć :)
-
Thx, tylko musiałem jeszcze trochę pozmieniać, nie wszystkie get_string trzeba było zmienić o czym się domyśliłem, a w room'ach nie potrzeba było previous i next, ale dzięki za ten get_integer!
A oto kod :) :
GMLglobal.pas = get_string("Please a password","")if global.pas = "Money&Lives"
{global.ml = get_integer("Please a number","")
score+=global.ml; lives+=global.ml}
if global.pas = "Previous"
{global.rp = get_integer("Please a number","")
room-=global.rp}
if global.pas = "Next"
{global.rn = get_integer("Please a number","")
room+=global.rn}
if global.pas = "Money"
{global.m = get_integer("Please a number","")
score+=global.m}
if global.pas = "Lives"
{global.l = get_integer("Please a number","")
lives+=global.l}
-
Witam!
Mam pewien problem, ale opiszę go po kodzie;
GMLglobal.pas = get_string("Please a password","")if global.pas = "Money&Lives"
{score+=1000000; lives+=1000000}
if global.pas = "Previous"
{global.rp = get_string("Please a number","")
room_goto_previous=global.rp}
if global.pas = "Next"
{global.rn = get_string("Please a number","")
room_goto_next=global.rn}
Powyższy kod jest w evencie Relase backspace,
pierwszy if działa czyli kod na dodawnie monet i żyć,
ale drugi i trzeci nie działają.
Wygląda to tak:
1) Puszczam Backspace
2) Pojawia się napisz "Please a password"
3) Wpisuję
a ) Next
b ) Previous
4) Pojawia się napis "Please a number"
5) Wpisuję jakiś numerek
6) Nic się nie dzieje, a powinno
a ) Przejść o taki numerek jaki dałem plansz do przodu
b ) Przejść o taki numerek jaki dałem plansz do tyłu
O co tutaj chodzi? Proszę o jak najszybszą pomoc, a z góry dzięki B)
----------------------------------------------------------------------------------------------
Zmieniłem to tak:
GMLglobal.pas = get_string("Please a password","")if global.pas = "Money&Lives"
{global.ml = get_string("Please a number","")
score+=global.ml; lives+=global.ml}
if global.pas = "Previous"
{global.rp = get_string("Please a number","")
room_goto_previous=global.rp}
if global.pas = "Next"
{global.rn = get_string("Please a number","")
room_goto_next=global.rn}
if global.pas = "Money"
{global.m = get_string("Please a number","")
score+=global.m}
if global.pas = "Lives"
{global.l = get_string("Please a number","")
lives+=global.l}
i taka sama sytuacja w Money, Lives oraz Money&Lives
Jakby co to mam Game Maker 8.0 Pro
39dll - męki z własnym MMO
w Pytania zaawansowanych
Opublikowano
Jedno info pro nie może otwierać plików z lite, gdyż wtedy otwiera się jako zwykły lite, a nie pro.