Skocz do zawartości
  • Ogłoszenia

  • Gdzie świętować urodziny GMCLANu   31 użytkowników zagłosowało

    1. 1. Gdzie świętować urodziny GMCLANu


      • Warszawa (bo w centrum)
      • Szczecin (bo tam mieszka Ranma i narodził się GMCLAN)

    Żeby zagłosować w tej ankiecie, prosimy się zalogować lub zarejestrować. Zobacz temat
  • 0
Chell

Temat zbiorczy na drobnostki

Pytanie

masz pytanie, które nie zasługuje na własny temat i chcesz je zadać w shoutboxie? nie rób tego! tam utonie! spytaj tutaj. :-)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

787 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Jak zrobić pętle for w skrypcie?

Pisząc coś takiego:

GML
///scr_itemBounce(times,spd);

times = argument0;

spd = argument1;

 

for(i=0; i<10; i++)

{

phy_rotation += 1;

}

 

Zmienna i w forze cały czas ma ustawioną wartość 0, prawda? Dlatego pętla cały czas jest wykonywana.

Próbowałem zmienną przypisać do argumentu ale w sumie to to samo (mam na myśli coś takiego:

GML
Step:

scr_itemBounce(0);

 

Skrypt:

i = argument0;

)

 

Wiem, że można by zmienną i przypisać w CREATE obiektu ale zależy mi, aby zmienna była właśnie tworzona tymczasowo w skrypcie.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Hej, wie ktoś czy w kodzie można ustawić event: global mouse check button? Tzn w eventach jest dostępne takie coś natomiast jeśli chce sobie to zakodzić to już niestety nie ma.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Właśnie jest na odwrót. W kodzie "nie ma" mouse check, ale jest mouse check global.

Funkcje mouse_check_button[_pressed,_released] są globalne i nie dotyczą kliknięcia na obiekt. Jeżeli chcesz przy kliknięciu na obiekt musisz to zrobić ręcznie.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Dziękuję za odpowiedź, rzeczywiście racja leży po Twojej stronie :) Dziękuję za pomoc.

 

Od razu mam drugie pytanie, nie chciałbym oczywiście nadużyć cierpliwości, ale czy w GM mogę od tak otworzyć sobie plik np tekstowy, tak że uruchamia się z domyślnego programu? Np. mam w folderze z grą plik notatnik readme i chciałbym aby po kliknięciu np danego klawisza on się otwierał. Wiem , że jest coś takiego domyślnie dla F1 , wtedy otwiera się game info, ale czy mogę zrobić to ręcznie dla pliku, który sam stworzę?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Tak. Jest na marketplace do pobrania "Execute Shell" który pozwala otwierać inne programy.

Wystarczy że zrobisz "notepad.exe plik.txt"

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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>

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Hej i ja również mam drobny problem. Mam ustawioną akcje przy evencie jednego kliknięcia prawym przyciskiem myszy. Czasami jednak akcja wykonuje się dopiero po dwukrotnym kliknięciu. Sprawdzałem na różnych myszkach , i to nie wina sprzętu. Zauważyłem, że za każdym razem gdy do tego dochodzi w CompileForm pojawia się taka wiadomość:

 

 

Pause event has been registered for this frame

Pause event has been unregistered

 

Dodam, że nie mam w żadnym innym obiekcie ustawionego kodu aktywującego pauze.

 

 

hmmm , dziwna sprawa.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Jak przypisać sprite_index do zmiennej??

 

 

Zwykłe

 

GML
sp=sprite_index
zupełnie nie działa

 

Zadanie jest takie że po danej czynności ludzik ma wrócić do sprite jaki miał tuż przed jej wykonaniem- tak jakby sprite_index=sprite_index_previous :P

 

sprite_get_name i object_get_sprite też nei działają tak jak powinny albo źle ich używam

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Mam problem z collision_line

 

GML
collision_line(x,y,o_gracz.x,o_gracz.y,obiekty,true,false)

 

 

chciałbym żeby collision_line wykrywał wszystkie obiekty a nie tylko ten wskazany . Dzięki :D

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
Jak przypisać sprite_index do zmiennej??

 

 

Zwykłe

 

GML
sp=sprite_index
zupełnie nie działa

 

Zadanie jest takie że po danej czynności ludzik ma wrócić do sprite jaki miał tuż przed jej wykonaniem- tak jakby sprite_index=sprite_index_previous :P

 

sprite_get_name i object_get_sprite też nei działają tak jak powinny albo źle ich używam

 

Dziwna sprawa, sp = sprite_index powinno działać, bo sprite_index to wartość REAL odnosząca się do indexu sprite'a. Na pewno nie aktualizujesz sp = sprite_index co step, powodujac ze sie nadpisuje?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

zobiłem wszystko od poczatku na nowo i teraz sp=sprite_index działa.Dzięki

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0
Mam problem z collision_line

 

GML
collision_line(x,y,o_gracz.x,o_gracz.y,obiekty,true,false)

 

 

chciałbym żeby collision_line wykrywał wszystkie obiekty a nie tylko ten wskazany . Dzięki :D

 

http://www.gmlscripts.com/script/collision_circle_list

To jest to czego szukasz.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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

///////////////////////////////*/

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Może zrób oddzielny temat do tego, bo to większy temat niż mała pierdoła i zanim dostaniesz odpowiedź pytanie może utonąć w morzu mniejszych pytań.

Może opowiesz coś więcej o tym kodzie? Która zmienna odpowiada za trzymaną w ręce broń? Kod wykonałeś Ty czy ktoś inny, jak ktoś inny gdzie możemy znaleźć źródło?

Edit: I jeszcze jedno pytanie. Czy E obsługje kilka rzeczy czy tylko podnoszenie broni?

Edit2: Okej czyli to jest bazowane 100% na instancjach, tylko nie widze czy bron w reku to zmienne czy tez instancja. Jeżeli ty pisaleś ten kod to na miłość boską używaj komentarzy do opisywania kodu!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Mam całą masę domyślnych czcionek w systemie z polskimi znakami ale każda z nich jest odczytywana w GMie bez nich :( jedyne co , to tylko u z kreską tzw "ó" wyświetla się poprawnie, reszta nie...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

W edycji fontu klikasz + a następnie wpisujesz w puste pole znaki specjalnie któe chcesz dodać do fonta. Na koniec klikasz OK.

g0ec286a.png

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Zrobiłem tak jak piszesz ( dziękuję za odpowiedź) i jest postęp, mogę wpisać niektóre polskie znaki, ale niektóre takie jak np ć czy ę są wciąż poza zasięgiem GMa pomimo że dodałem je do okna Font Range.

 

Początkowo myślałem , że to wina tego że używam AutoHotKey i mam różne makra dopisane do kombinacji klawiszy zawierające C oraz E, ale zrestartowałem komputer i nie pomogło.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Czy wybrana przez Ciebie czcionka napewno ma polskie znaki? Czy napewno dopisałeś zarówno duże jak i małe ćĆęĘ do range?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Tak, dokładnie tak jak piszesz, wszystkie są dopisane do range, a wyświetla mi wszystkie oprócz Ę ę Ć ć Ą ą .

 

Możliwe to , że są one zabronione w GM?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
  • 0

Nigdy nie mialem takiego problemu.

Jeżeli czcionka ma te znaki, powinny być dostępne i się wyświetlać.

Sprawdź w okienku "Hello World" czy napewno te znaki są, spróbuj je wpisać.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×