Skocz do zawartości

Ranmus

Filar Społeczności
  • Postów

    3 205
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    4

Treść opublikowana przez Ranmus

  1. Ranmus

    C++?

    Vardi: A wiesz może jak w DEV-C++ korzystać z kompilowanych zasobów .res, a nie skryptów .rc?
  2. Ranmus

    Gra w Delphi?

    Można bo to program a nie gra. ;)
  3. Ranmus

    C++?

    A to bcb jest niezwyklym C/C++ ? Poza tym Vardi czemu odradzasz Borlanda, mozna prosic o jakies konkrety? Uzywalem tej darmowki bez IDE i jakos efekty bardziej mi odpowiadaly niz to z czego aktualnie korzystam -> Dev-C++ czyli port linuxowego gcc - mingw. Można jeszcze spróbować mingw developer studio. Inne zaś darmowe kompilatory C/C++ to bcb 5.5 (bez ide), cos tam microsoftu (ale tylko for personal only, bez ide), digital mars (bez ide), openwatcom ( za friko, z pelnym ide i zestawem narzedzi), djgpp, cygwin (kolejny port gcc) oraz bodajze codewarrior. Z darmowych kompilatorow C godne polecenia sa lcc-win32 z ide oraz Pelles C. Kompilatorów jest znacznie więcej, ale te są zdecydowanie najpopularniejsze z darmówek. Ogólnie polecam Dev-C++ ze względu na dość kompletne środowisko (szkoda że już bez resource editora) i popularność co przejawia się liczbą bibliotek w postaci specjalnie przygotowanych devpaków. Natomiast jeśli ktoś chce pisać w C, to tylko i wyłącznie PellesC. Normalnie świetne środowisko! Szkoda tylko, że Digital Mars do darmowego kompilatora nie dodaje środowiska, wtedy bym wziął je bez problemu. Ta firma ma u mnie dużego plusa za język D! Ciekawe kiedy do tego cudeńka zrobią sensowne IDE. :) ps. A jak ktoś ma kasę i chce programować tylko pod Windowsa to jest tylko jeden sensowny wybór -> Microsoft Visual Studio. Nie żeby miał najlepszy kompilator (bo nie ma jeśli chodzi o standardy c++), ale sami wiecie, ten sam twórca co systemu operacyjnego, poza tym na nim wszystko pójdzie. :)
  4. Ranmus

    C++?

    Całą książke "Symfonia C++" ściągniesz z tutaj Zajmuje z 70 MB, ale opłaca się! Jest to polski hit. :) Polecam także "Od zera do gier kodera": http://avocado.risp.pl/modules.php?op=modl...rticle&artid=22 Co do samego C/C++. C jest jednym z najszybszych języków zaraz po assemblerze. Zostały w nim napisane takie systemy operacyjne jak Windows czy Linux, inne nowe także najczęściej powstają w C i C++. Do tych języków jest ogromna masa dodatkowych bibliotek, frameworków itd. Po trzecie składnia, bardzo podobna do javy, javascript, .net, php, gml (jezyk skryptowy game makera). Duzo by jeszcze wymieniac. Ogólnie C i C++ są najpopularniejszymi językami programowania na świecie. Widać to także w grach. 95% komercyjnych gier jest napisana w C/C++, ale jak chcesz, to możesz je pisać w delphi, nikt ci nie broni. :D
  5. Jeżeli to GM 5.x to możesz użyć moich starych klocków: https://gmclan.iglu.cz/rm.zip Zostały usunięte ze strony, ponieważ kiedyś miałem zrobić jakiegoś dodatkowe. Pojutrze jak będę miał trochę wolnego czasu, to przystosuje je do GM 6.x Ma ktoś jakieś pomysły na dodatki?
  6. Może zrób za pomocą jakiegoś klawisza podświetlenie obiektów. A czy ktoś na polskiej scenie GM'a zrobił RPG'a? Nie, ale robił pseudo rpg'a ala Diablo. Pamiętacie demko Borka, którego nazwy nie pamiętam? To była jakość. :)
  7. Najprostszy sposób jest taki by stworzyć jeden typ obiektu, który miałby różne zmienne lokalne określające jego cechy: name, class, level, energy, sprite itd. zależnie od których obiekt będzie przybierał postać żądanego wroga. Teraz aby stworzyć nowego wroga wystarczy się zaraz do niego odwołać. Załóżmy, że mamy generator potworów. Przykładowe tworzenie nowego wroga: id_wroga = instance_create(x,y,wrog); id_wroga.name = "Wilkołak"; id_wroga.level = 1; id_wroga.energy = 100; lub id_wroga = instance_create(x,y,wrog); with ( id_wroga ) { name = "Wilkołak"; level = 1; energy = 100; } Jednakże nie jest to 100% zadowalający sposób, ponieważ create tworzonego obiektu wykona się zawsze szybciej niż przypisanie zmiennych lokalnych z poziomu innego obiektu (reszta eventów jest następna w kolejce). Event create jest bardzo pomocny w takich sytuacjach, do "spersonalizowania" wroga na podstawie zmiennych zaraz na początku jego istnienia. Co w takim można zrobić? Wykorzystać sprytną sztuczkę przesyłu danych za pomocą zmiennych globalnych. Robimy tak: Na początku gry: global.transfer_value[0] = ""; global.transfer_value[1] = ""; global.transfer_value[2] = ""; Tworzymy nowy skrypt o nazwie nowy_przeciwnik var id_wroga; global.transfer_value[0] = argument2; global.transfer_value[1] = argument3; global.transfer_value[2] = argument4; id_wroga = instance_create(argument0,argument1,obiekt_wroga); a w create obiekt_wroga na samym poczatku dajemy: name = global.transfer_value[0]; lavel = global.transfer_value[1]; energy = global.transfer_value[2]; Teraz gdy chcemy stworzyć obiekt wystarczy wywołać taki skrypt: nowy_obiekt(x,y,"nazwa",level,energy); np. nowy_obiekt(100,100,"Goblin",1,20); Dzięki systemowi natychmiastowego przesyłania żądanych zmiennych do nowych obiektów wroga poprzez zmienne globalne, mamy pewność, że wartości będą możliwe do odczytu już w event create. To był kurs elastycznego i bardziej profesjonalnego pisania gry cz. 2 ;)
  8. No to jest to samo co zwykła tablica: heroes[0] = "Stefan"; heroes[1] = "Gienek"; heroes[2] = "Zdzichu"; Forma globalna: global.heroes[0] = "Stefan"; global.heroes[1] = "Gienek"; global.heroes[2] = "Zdzichu"; ------------------------------------------------------ Tworzymy odpowiednią tablicę dwówymiarową: global.heroes[0,0] = "Stefan"; global.heroes[0,1] = 1; global.heroes[0,2] = 50; global.heroes[0,3] = 100; global.heroes[1,0] = "Gienek"; global.heroes[1,1] = 2; global.heroes[1,2] = 60; global.heroes[1,3] = 200; global.heroes[2,0] = "Zdzichu"; global.heroes[2,1] = 1; global.heroes[2,2] = 70; global.heroes[2,3] = 100; Pierwsza liczba w nawiasie kwadratowym to numer herosa, druga to typ pola: 0 - Imie, 1 - Level, 2 - Energia, 3 - Maksymalna energia. Mamy trzech herosów. Każdy z nich ma zmienną lokalną o nazwie id_herosa. Pierwszy ma 0, drugi 1, trzeci 2. Tworzymy skrypt: dodaj_energie: global.heroes[id_herosa,2] += argument0; if ( global.heroes[id_herosa,2] > global.heroes[id_herosa,3] ) { global.heroes[id_herosa,2] = global.heroes[id_herosa,3]; } I teraz w kazdym z herosow mozemy wywolac taka funkcje: dodaj_energie(20); Argumentem jest liczba do dodania do energii. Skrypt sam pobierze z obiektu id_herosa i doda żądaną liczbę i skoryguje wartość gdyby pojemność energii została przekroczona. To sie nazywa elastyczne programowanie. Dzięki temu nie musisz powtarzać skryptów dodawania energii do każdego z obiektów, a zmienne masz zawsze dostępne z poziomu każdego obiektu i nic ze sobą nie koliduje.
  9. Ranmus

    Dreammaker

    Niby? On naprawdę jest lepszy, sam sprawdziłem. Poczytaj artykuły itd. :) Ale jak już wcześniej napisałem, brakuje jakiegoś konkretnego środowiska i głównie to mnie zatrzymuje od dalszej nauki tego języka. Poza tym D jest znacznie łatwiejszy od C++, bo zmieniono gdzieniegdzie składnię itd. A to, że obsługuje C oznacza, że problem z popularnością i dostępnością bibliotek jest częściowo załatany.
  10. Ranmus

    Dreammaker

    Ja wiem. Nawet zacząłem w nim trochę programować i tak samo szybko skończyłem. D to jest sukcesorem C/C++ ale niestety jeszcze w fazie produkcji i ogólnie mało znany. Aż sprawdzę co tam nowego słychać w światku D. Największym problemem i do tego bardzo istotnym jest to, że D nie ma jeszcze żadnego środowiska IDE. Jedyny amatorski jaki był - DIDE, już nie jest rozwijany. Poza tym D obsługuje Asm'a i czystego C!
  11. Raczej ten program powinien zwać się Nieprzydatnike ;) Ale nie od razu Kraków zbudowano. :) W jakim języku go zrobiłeś?
  12. Poza tym sposób SLy'a nie będzie działać. Zmienne nie zależą bezpośrednio od roomów, ale lokalne tak, bo wszystkie obiekty typu niepersistent zostaną zniszczone przy przejściu do następnej planszy, a tym samym i ich zmienne lokalne zostaną utracone. Bigshark: A co, wkurza przedrostek global. ? Właśnie do takich rzeczy zostały one stworzone. Nie wywarzaj okna skoro drzwi są otwarte. :)
  13. Dodaj obsługę GMproxy i będzie można pograć za darmo na amerykańskim serwerku. :)
  14. Ranmus

    Dreammaker

    Po kiego ci książki do PHP i SQL. Czytamy manual i jazda. :D
  15. No nie cieszyłbym się tak, Marmot. Na Google w parenascie sekund znalazlem dzialajacy klucz do gm6 (sprawdzilem na laptopie). Trzeba umieć szukać. Zresztą ja się tam nie martwię co kto używa, ważne że ja mam legala i by Mark się nie zniechęcił w dalszym tworzeniu. :)
  16. No i co, że tak samo nielegalne, my nie o nich rozmawiamy tylko o GM. O resztę programów niech się martwią inni. :]
  17. 1) Key na 95% nie jest wkompilowany w exe bo i po co? Przecież to od edytora zależy czy jeśli mamy kod, to zrobi nam exeka w przypadku zastosowania określonych funkcji jak np. particle system. W exe może być co najwyżej dodatkowy zapis by pokazywało reklamę GM. Przecież jakby klucze były wkompilowane w exe, to ktoś sprytny mógłby sobie je powyciągać. A przecież nie po to ktoś kupuje klucz by inny mu go z exeka podpierdzielił. 2) Sprawdzalność: W teorii może podać ciebie do sądu. W praktyce musiałby wnieść pozew sądy na terenie polski, a i sprawę i tak by prawdopodobnie przegrał ze względu małą szkodliwość społeczną (choć gdybyś zechciał sprzedawać gdy to Mark by prawdopodobnie wygrał). Mark niestety nie powstrzyma piractwa. Zdarzały się nawet przypadki, że niektórzy posyłali piracke klucze z 5 do skonwertowania na 6. Mark raz nie wytrzymał i napisał o tym na forum. Jest to kwestia tylko i wyłącznie moralności bo Mark nie ma środków by wszystkich ciągać po sądach. Jedynym skutkiem może być kiedyś to, że zaprzestanie prac nad Game Makerem na zawsze (takie odnoszę wrażenie po niektórych wypowiedziach). ps. Aktualnie mam 2 nielegalne programy. Reszta a jest ich dużo jest całkowicie legalna. Te 2 progsy to WinXP i Photoshop, które mam zamiar kupić w wersji oem. Co do muzy, filmów i gier to już sprawa tak ładnie nie wygląda. :] ps2. Najbardziej wkurzające jest to, że ci co używają nielegale GM'a i tłumaczą się, że nie mają pieniędzy, nawet nie próbują startować w konkursach gdzie są do wygrania darmowe klucze. <_<
  18. A nie mogłeś użyć swojego starego konta, teraz nick rozszerza niepotrzebnie lewą kolumnę tabeli. Skrypt ragdoll to chyba napisał Morphosis albo Mr. Chubigans (linka nie pamiętam). Można także poszukać dodatku o nazwie GM ODE (ba, nawet chyba mamy w downloadzie, więc kiepsko szukałeś).
  19. Panowie, wracajcie do tematu. I następnym razem proszę nie łapać za słówka (to jest bardzo negatywna cecha).
  20. Nom. Ja też nie widzę sensu jego stosowania. Za czasów gdy GM nie używał Direct3D, to może i był ciekawą alternatywą, ale w dobie GM6 a co najważniejsze GMirrlicht, Xtreme jest po prostu zbyt mało wydajny (zobaczcie na jego szybkość) i oferuje mniej funkcji. Poza tym Xtreme 3D ma gorszą licencję od Irrlicht'a. Zresztą przecież to Xception stworzył porta Irrlichta dla GM (po tym jak wydał Xtreme) więc to coś oznacza. :D
  21. No i co, że prostsze. Nie liczy się sposób, ale efekt końcowy, więc zrób przykład i pokaż jak to będzie wyglądało twoim sposobem. :) Mój skrypt jest tak długi z jednego powodu. GM do najszybszych wirtualnych maszyn nie należy, więc trzeba było wymyśleć jakieś sposoby przyśpieszające liczenie punktu docelowego, a i tak to co wymysliłem na szybko jest tylko w 99% dokładne, a zoptymalizować zapewne można jeszcze lepiej. Dokładne wyliczanie x2 i y2 zajmuje dwa/trzy razy mniej kodu, ale wtedy przy wielu obiektach dzielących postać od celownika powoduje poważne spadki prędkości. Mój sposób przyśpiesza liczenie czterokrotnie.
  22. Pomysł strasznie niewydajny i nieprecyzyjny.
  23. rysuj_laser(x,y,x2,y2,obiekt,kolor) Obiekt to nazwa obiektu z ktorym ma byc liczona kolizja. Źródło skryptu: var col, ob, x2, y2, dir, dis, last; col = draw_get_color(); draw_set_color(argument5); dir = point_direction(argument0,argument1,argument2,argument3); dis = point_distance(argument0,argument1,argument2,argument3); x2 = argument2; y2 = argument3; last = 0; while ( true ) { ob = collision_line(argument0,argument1,x2,y2,argument4,1,1); if ( ob ) { if ( last != ob ) { last = ob; x2 = ob.x; y2 = ob.y; dis = point_distance(argument0,argument1,x2,y2)-1; } else { dis -= 1; x2 = argument0 + sin( degtorad ( dir + 90 ) ) * dis; y2 = argument1 + cos( degtorad ( dir + 90 ) ) * dis; } } else { if ( last ) { while ( true ) { dis += 1; x2 = argument0 + sin( degtorad ( dir + 90 ) ) * dis; y2 = argument1 + cos( degtorad ( dir + 90 ) ) * dis; ob = collision_line(argument0,argument1,x2,y2,argument4,1,1); if ( ob ) { dis -= 1; x2 = argument0 + sin( degtorad ( dir + 90 ) ) * dis; y2 = argument1 + cos( degtorad ( dir + 90 ) ) * dis; break; } } } draw_line(argument0,argument1,x2,y2); break; } } draw_set_color(col);
  24. Tak jak w temacie. Przynajmniej mam taką nadzieję. Kłopot nie leżał po stronie kodu, ale ciasteczek i domen. Już nie wylogowuje nas gdy wychodzimy z forum poprzez górny link do portalu. Wszystkie aliasy zostały poprawione. Póki co można jeszcze wymusić błąd paru tych samych użytkowników na stronie, ale nie powiem jak. Usunę go gdy będę miał trochę więcej czasu. To samo się tyczy odczytu ciasteczek z domeny globalnej (żeby nie było różnic jaką poddomenę używamy). Pamiętajcie, że jeśli nie wchodzicie przez aliasy, to używajcie tego adresu: https://gmclan.iglu.cz A nie: http://www.gmclan.iglu.cz http://iglu.cz/gmclan Na stronie głównej portalu odblokowałem także "Dodatkowe opcje" przy formularzu logowania. Można sobie zaznaczyć pole automatycznego logowania oraz ukrywanie.
×
×
  • Dodaj nową pozycję...