PRT Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 Witam, coś się dzisiaj ze mną dzieje i nie myślę trzeźwo(jestem po podwójnej osiemnastce). Mianowicie chciałem wprowadzić taki kod, by tworzyło mi obiekty po kolei o nazwach p_xxx w miejsce xxx jakaś nazwa. Kod wyglądał tak GML for(i=0;i<lobiektow;i+=1) { tworz="p_"+string(global.nazwa[i,0]); instance_create(0+(i*50),1,string(tworz)) } w tablicy global.nazwa znajdują się zmienne tekstowe np "Kanapka" ;] istnieje obiekt p_Kanapka lecz nie tworzy się on ale jakiś inny ;] Tu moje pytanie czy można w funkcji instance_create dać zamiast nazwy obiektu , zmienną ? Jeśli tak to jak to dokładnie zrobić ;]. Drugie pytanie to, jeśli mam 2 identyczne obiekty(pod względem spritów również) i leża one dokładnie na sobie. Złudnie przypominając jeden obiekt, to czy da się zrobić tak by po kliknięciu na niego zareagował tylko ten na powierzchni ;] mają ten sam depth. W tym pytaniu chodzi mi głównie o naprowadzenie, jak to zrobić ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 Musisz podać jego id, nie ciąg znaków. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 10 Lutego 2008 Autor Udostępnij Opublikowano 10 Lutego 2008 Tyle, że ja dopiero go tworzę, więc nie ma on id(chyba, że źle to pojmuję ). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 Tu moje pytanie czy można w funkcji instance_create dać zamiast nazwy obiektu , zmienną ? Jeśli tak to jak to dokładnie zrobić ;]. Tak, da sie. GML objekt = p_kanapka; instance_create(x,y,objekt); instance_create(0+(i*50),1,string(tworz)) Po co string(tworz)? Przeciez tworz juz jest stringiem... Co do drugiego to nie wiem, sam sie nad tym zastanawialem ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Lutego 2008 Administratorzy Udostępnij Opublikowano 10 Lutego 2008 Da się dokładnie tak jak chcesz: GML for(i=0;i<lobiektow;i+=1) { var tworz,xx; tworz='p_'+string(global.nazwa[i,0]); xx=string(i*50); execute_string( 'instance_create('+xx+',1,'+tworz+');' ); } @Nobody: objekt = p_kanapka; - to przypisanie id, a nie zmiennej tekstowej. Zrób takie coś: show_message(string(p_kanapka)); i sprawdź co zostanie pokazane... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 Sprytnie zrobione ^^ Ja bym o czyms takim nie pomyslal ^^ Musze sie jeszcze pouczyc tego GMLa ^^ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Lutego 2008 Administratorzy Udostępnij Opublikowano 10 Lutego 2008 Sprytnie zrobione ^^ Ja bym o czyms takim nie pomyslal ^^ Musze sie jeszcze pouczyc tego GMLa ^^ W ten sposób możesz np. dawać do kolejki (ds_queue...) skrypty wysyłane z różnych obiektów, a potem systematycznie co kilka sekund jakiś obiekt będzie je wykonywać, uważajac, aby kolejka nie była za długa :P No i można w stringach przechowywać np. pozycję itd, razem z przecinkiem, dla oszczędności miejsca... setki rzeczy można :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 10 Lutego 2008 Autor Udostępnij Opublikowano 10 Lutego 2008 Dziękuję bardzo ;) Drugi problem jest mniej ważny ;) EDIT: A jeśli chcę, zmiennej tworz(która przechowuje nazwę obiektu) dopisać zmienną lokalną tego obiektu ? ;P Czyli : GML jakas_zmienna=tworz.nazwa //tworz = string(nazwa_obiektu) pokazuje mi, że niepoprawny index, tego się spodziewałem jak to ubrać w execute_string. ;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 10 Lutego 2008 Administratorzy Udostępnij Opublikowano 10 Lutego 2008 GML //tworz=string(nazwa_obiektu); albo np. tworz='obj_klocek'; execute_string('jakas_zmienna='+tworz+'.nazwa'); ew. local_variable_get / global_variable_get też może coś pomóc, ale musiał bym sprawdzić, czy zadziała podobnie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 10 Lutego 2008 Autor Udostępnij Opublikowano 10 Lutego 2008 GML COMPILATION ERROR in string to be executed Error in code at line 1: prowincja=.nazwa at position 11: Unexpected symbol in expression. pewnie jakaś gafa. kod: GML tworz=string(global.nazwa[i,0]) obb=instance_create(0,0,ob) obb.panstwo=panstwo execute_string('prowincja='+tworz+'.nazwa'); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 prowincja=.nazwa Co tam robi kropka? O_O Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 10 Lutego 2008 Autor Udostępnij Opublikowano 10 Lutego 2008 Taka jest treść błędu, tak jakby usunęło '+tworz+' Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 prowincja = nazwa; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 10 Lutego 2008 Autor Udostępnij Opublikowano 10 Lutego 2008 Nie nie ;) tzn: ja mam tak zapisane to: GML execute_string('prowincja='+tworz+'.nazwa'); a w treści błędu po prostu usunięty jest '+tworz+' , dlatego zostaje tam ta kropka ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 Nie rozumiem ciebie ja :( Podaj cały tamten kod w którym jest błąd ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 10 Lutego 2008 Autor Udostępnij Opublikowano 10 Lutego 2008 Podałem go, kiedy edytowałem poprzedniego posta. Oto on: GML tworz=string(global.nazwa[i,0]) obb=instance_create(0,0,ob) obb.panstwo=panstwo execute_string('prowincja='+tworz+'.nazwa'); Błąd pojawia się przy wykonywaniu execute_string. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 Teoretycznie powinno działać... dziwne... wiem żę to bez sensu ale zobacz tak: execute_string('prowincja='+string(tworz)+'.nazwa'); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PRT Opublikowano 10 Lutego 2008 Autor Udostępnij Opublikowano 10 Lutego 2008 właśnie tego spróbowałem ;) niestety żadnej zmiany dziwne, naprawdę dziwne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 no :F może daj " zamiast ' nie wiem to bezsensu, ale pojęcia nie mam co jest! ;P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matthew Opublikowano 10 Lutego 2008 Udostępnij Opublikowano 10 Lutego 2008 Ta linijka: GML execute_string('prowincja='+tworz+'.nazwa'); jest dobrze. Pokombinuj z tą linijką: GML tworz=string(global.nazwa[i,0]) Zmienna 'tworz' wynosi pewnie '' więc wychodzi: 'prowincja='+''+'.nazwa' czyli 'prowincja=.nazwa' Poszukaj gdzie występuje zmienna global.nazwa[i,0] i tam pomyszkuj albo dla świętego spokoju: GML tworz=string(global.nazwa[i,0]); obb=instance_create(0,0,ob); obb.panstwo=panstwo; if (tworz<>'') execute_string('prowincja='+tworz+'.nazwa'); 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ę