Skocz do zawartości

pankracy

Użytkownicy
  • Postów

    320
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    1

Odpowiedzi opublikowane przez pankracy

  1. Rozumiem...ale jak to ma się do ruchu wroga?i siły obrażeń jaką ma nam zadawać na danym trudności poziomie, bo tego nie mogę zrozumieć...wiem,że mam to zdefiniować albo w osobnym obiekcie na mapie,albo jak już robię w CREATE bohatera ok to jeszcze jest zrozumiałe.

    Tu zablokowałem się...

     

     

    Teraz to co dałeś przykład wyżej to przyspieszy ruch bohatera o te 3.kiedy ruszymy w prawo.

     

  2.  

    image_speed,speed,hspd,hspeed

     

     

    Nie działa:-/ coś źle robię...

    Wróg nie chce przyspieszyć na poziomie medium i hard.

     

    Druga sprawa:

    Żeby wróg zabierał mi energię w takiej ilości zależne od poziomu trudności gry to rozumiem,że mam użyć zmiennej global.hp od bohatera tylko to ma się znajdować w CREATE wroga? 

     

    Poziom easy zostaje bez zmian po 6 spotkaniach z wrogiem  lub strzałach tracę życie

     

    Poziom medium bohater po 4 spotkaniach z wrogiem lub strzałach traci życie

     

    Poziom hard bohater po 3 spotkaniach z wrogiem lub strzałach traci życie

     

     

     

  3. Chłopaki działa teraz elegancko;-) Gamoń dał radę:-)

    ustawiłem sobie nawet na danym poziomie w w create wroga żeby mu więcej lub mniej hp zabierało;-)

    Utkwiłem na problemie związanym może błahostka,ale walczę z tym od kilku godzin z szybkością jaką poruszają się wrogowie..

    używałem image_speed oraz hspeed,speed i niestety nie mogę przyspieszyć wroga.

    A założenie mam takie że np na poziomie easy wróg chodzi tak jak chodził na poziomie normal wróg przyspieszy np o 2 razy więcej niż na poziomie easy i na poziomie hard o 4 razy szybciej niż na poziomie easy.

     

    I druga sprawa...to  chciałbym aby wrogowie na poziomie normal i hard zabierali mi wiecej energii...

    Obecnie jest tak,że bohater jest na 6 strzałów;-) chciałbym żeby na poziomie normalnym był na 4 strzały,a na poziomie trudnym na 3 strzały..

    Kod bohatera nie będę wklejał,bo jest ten co wyżej tylko poprawiony o te zmienne;-)

     

    przykładowy kod wroga

     

    obj_bandyta

     

    CREATE

     

    ///Ustawienia
    event_inherited();
    
    pointvalue=choose(10,20,30,40,50,60,70,80,90,100);//dodaje nam losowa ilosc pkt
    dead=false;
    follow=0
    
    hp = 10;
    maxHp = 10;
    global.zegarObrazenWroga = 0;
    at=1
    
    st=1
    
    //pozycje powrotu wroga po restarcie mapy
    start_x = x; 
    start_y = y;
    
    enum stan {
        patrol,
        wait,
        follow
    }
    action=stan.patrol
    
    
    
    
    ///poziomy trudnosci
    
    
    //easy difficult
    if global.difficulty  = "easy"
    {
       hp = 10;
    }
    
    //medium difficult
    if global.difficulty  = "medium"
    {
       hp = 15;
    }
    
    //hard difficult
    if global.difficulty  = "hard"
    {
    
        hp = 20;
        
    
    }
    

     

     

    STEP

     

    if(instance_exists(obj_player) && action!=stan.patrol && collision_line(x,y,obj_player.x,obj_player.y,obj_niewidzialny,0,1)) {
        if(follow>room_speed/2) {
            follow=0
        }
        image_speed=0
        image_index=0
        action=stan.wait
    } else if (instance_exists(obj_player) && distance_to_object(obj_player)<=250 && abs(y-obj_player.y)<64 && follow>=room_speed/2 && image_xscale-sign(obj_player.x-x)=0 && !collision_line(x,y,obj_player.x,obj_player.y-12,obj_niewidzialny,0,1)) {
        action=stan.follow
        follow=30
    } 
    
    if(action=stan.wait) {
        image_speed=0
        image_index=0
        follow++
        if(follow>room_speed/2) {
            action=stan.patrol
            follow=0
        }
    } else {
        image_speed=0.3
    }
    
    if(action=stan.patrol) {
        follow++
    }
    
    if (place_free(x,y+1))
    {gravity = 0.5}
    else
    {gravity = 0}
    
    if at=1
    {
    at=2
    speed=4
    }
    
    if at=2 {
        if (hspeed<0) {
            image_xscale = -1;
            if (!place_meeting(x-30,y+10,par_solid ) or place_meeting(x-1,y,par_solid )) {
                speed*=-1
                st=1
                if(action=stan.follow) {
                    action=stan.wait
                }
            }
        } else if (hspeed>0) {
            image_xscale = 1;
            if (!place_meeting(x+30,y+10,par_solid ) or place_meeting(x+1,y,par_solid )) {
                speed*=-1
                st=2
                if(action=stan.follow) {
                    action=stan.wait
                }
            }
        }
    }
    
    //Podazanie za graczem
    if(action=stan.follow && follow>0) {
        follow=max(0,follow-1)
        if(instance_exists(obj_player) && distance_to_object(obj_player)>3) {
            move_towards_point(obj_player.x,y,min(5,abs(obj_player.x-x)));
        }
    } else if(action=stan.patrol && distance_to_point(xstart,ystart)>2) {
        speed=4
    } else if(action=stan.wait) {
        speed=0
    }
    
    //ginie wrog
    if hp<0
    {
    instance_destroy()
    }
    
    
    //Gdy wrog zostaje atakowany mruga
    if global.zegarObrazenWroga > 0 {
     visible = !visible;
     global.zegarObrazenWroga -= 1;
    } else {
     visible = true;
    }
    
    if hp <= 0  {
     
     instance_destroy();
     
     dead = true; //wywolujemy alarm gdy wrog jest martwy
     
      
     //tworzymy losowa ilosc punktow po zabiciu wroga,oraz napis,ktory sie nad nim wyswietla z iloscia punktow losowych 
      z = instance_create(x,y-10,obj_floating_txt);
      global.pScore+=pointvalue
      z.txt = "$" + string(pointvalue);
      z.yspeed = -4;
      
      
      
      //instance_create(x,y-50,choose(obj_coin,obj_diamencik,obj_trzy_poduszki,obj_serducho,obj_motyl,obj_gwiazdka,obj_ksiezyc)) // daje losowy item np monety albo jabłuszka
      with instance_create(x,y,obj_entity_die) with instance_create(x,y,obj_bandyta_ginie)  {
      //sprite_index = sprWrogGinie;  //sprite do poruszania sie wroga
      image_xscale = other.image_xscale;
      image_yscale = other.image_yscale;
      hspd = other.hspd;
      vspd = other.vspd;
        audio_play_sound(dzwiek_wrog_ginie, 1, false); //odtwarzamy dzwiek przy smierci wroga
     }
    }
    
    // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :)
    if (dead == true)
    {
     //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn)
     
     instance_create(x,y,obj_spawn_bandyta);
    
    }

     

     

     

  4. Właśnie widze jaki numer odwaliłem kurcze

    W swoim kodzie resetowałem zmienne w obj_bohater a to cofało prace wykonaną przez obj_poziomtrudnosci..

     

    Wywaliłem to z obj_bohater

     

    global.difficulty = 0; //ustaw latwy
    global.difficulty = 1; //ustaw sredni 
    global.difficulty = 2; //ustaw trudny

     

    Niemniej poprawiłem to w taki sposób jaki mi pokazaliście i nadal to samo..bez względu jaki wybiore na nowej planszy poziom gry to i tak gra uruchamia Mi się w normalny sposób czyli z taką samą ilością żyć i energii jak było wcześniej..

    Macie rację

    I tak właśnie jest

    Menu gry -> wybierane trudności -> rozgrywka (pojawienie się bohatera)
    I osobny obiekt w pokoju do wyboru poziomu trudnosci...

    obj_poziomtrudnosci zreszta byl wczesniej pod nazwa obj_poziomy zmienilem tylko nazwe ale to szczegol.

     

     

     

    obj_bohater

     

    Create

     

    /// Glowne deklaracje zmiennych Anatola
                         
                         //////////////////////////////
                        ///////ZMIENNE STALE//////////
                        /////////////////////////////
    ///Ustawienia
    event_inherited();
    zbieranie=true;
    eksplozja = false;
    zasiegEksplozji = 22;
    silaEksplozji = 10;
    
    global.damage=0; //zmiena odzpowiedzialna za obrazenia zadawane po upadku z duzej wysokosci
    global.hp = 100;
    global.hit=0; //zmienna odpowiada za obrazenia kuli i miganie 
    maxHp = 100;
    zegarAtaku = 0;
    odejmij = 0; //zmienna potrzebna do przesuwanie skrzynki w end step 
    atakBierzacy = 0;
    global.zegarObrazen = 0;
    kierunekPlywania = 0;
    wysKierunek = 0;
    silaSkoku = 0;
    czasSkoku = 0;
    drabina = false;
    rs_timer = 0; //licznik czasowy w grze
    tlen=10;//ilosc tlenu
    
    //Moce specjalne
    pwrupSpd = 0;
    pwrupStr = 0;
    pwrupJmp = 0;
    
    //Pozycja odrodzenia Anatola i wywolanie skryptu widoku centralnego na graczu
    spawnX = x;
    spawnY = y;
    centerViewOnMe();
    
    //zachowanie pozycji gracza przy checkpointach
    if (global.checkpointR == room)
    {
        x = global.checkpointx;
        y = global.checkpointy;
    }
    start_x = x;
    start_y = y;
    //funkcja dodaje HUD gracza na planszach bossowych
    if instance_exists(obj_game_controller)
    obj_game_controller.visible=1
    else instance_create(0,0,obj_game_controller);
    
    
    //zamrazanie bohatera
    zamroz = false;
    zamroz_x = x;
    zamroz_y = y;
    
    
    
    playerSlot = 1; //ustalamy slot dla gracza numer 1
    kierunekPlywaniaGamepad = 0;
    
    ///poziomy trudnosci
    
    //Ustaw domyślne wartości życia i szans, gdyby nie wyszukało jaki jest poziom trudności
    global.hp = 100;
    global.live = 7;
    
    /// Wyszukaj poziom trudności i ustaw odpowiednio życie i szanse 
    
    //easy difficult
    if(global.difficulty  == "easy")
    {
       global.hp = 100;
       global.live = 7;
    }
    
    //medium difficult
    if(global.difficulty  == "medium")
    {
       global.hp = 80;
       global.live = 5;
    }
    
    //hard difficult
    if(global.difficulty  == "hard")
    {
        global.hp = 50;
        global.live = 3;
        
       
    }

     

    obj_poziomtrudnosci (jest umieszczony w osobnym roomie)

     

    CREATE

     

    options_difficulty=ds_list_create()
    options_difficulty[|0]=("Easy")
    options_difficulty[|1]=("Medium")
    options_difficulty[|2]=("hard")
    
    selected=0
    
    gp_up=false
    gup_down=false
    gp_left=false
    gp_right=false
    
    //Używane do animacji menu
    animation_speed=room_speed/4
    for(var i=0; i<ds_list_size(options_difficulty); i++) {
        animation[i]=0
    }

     

    STEP

     

    if(abs(gamepad_axis_value(0,gp_axislv))<0.3 && !keyboard_check(vk_anykey))
        {
        gp_up=0
        gp_down=0
        }
        
    if(abs(gamepad_axis_value(0,gp_axislh))<0.3 && !keyboard_check(vk_anykey))
        {
        gp_left=0
        gp_right=0
        }  
    
    if(keyboard_check_pressed(vk_down) || gamepad_button_check_pressed(0,gp_padd) || (gamepad_axis_value(0,gp_axislv)>0.7 && !gp_up)) {
        selected++
        if(selected>=ds_list_size(options_difficulty)) {
            selected=ds_list_size(options_difficulty)-1
        }
        gp_up=true
    }
    
    if(keyboard_check_pressed(vk_up) || gamepad_button_check_pressed(0,gp_padu) || (gamepad_axis_value(0,gp_axislv)<-0.7 && !gp_down)) {
        selected--
        if(selected<0) {
            selected=0
        }
        gp_down=true
    }
    
    if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) 
    {
        if(selected == 0) then global.difficulty = 0; //ustaw latwy
        room_goto(inicjacja)
        if(selected == 1) then global.difficulty = 1; //ustaw sredni
        room_goto(inicjacja)
        if(selected == 2) then global.difficulty = 2; //ustaw trudny
        room_goto(inicjacja)
    }

     

    DRAW

     

    draw_set_valign(1)
    draw_set_halign(1)
    draw_set_font(fontIntro)
    
    var line_height=ceil(string_height("M")*1.1)
    
    for(var i=0; i<ds_list_size(options_difficulty); i++) {
        if(i=selected) {
            //Wybrana opcja
            animation[i]=clamp(animation[i]+(1/animation_speed),0,1)
        } else {
            animation[i]=clamp(animation[i]-(1/animation_speed),0,1)
        }
        var color=merge_colour(c_black,c_red,animation[i])
        draw_text_transformed_color(x,y+(line_height*i),options_difficulty[|i],1+animation[i]/5,1+animation[i]/5,0,color,color,color,color,1)
    }

     

  5. dzięki

    SimianVirus7;-)

     

    gmt-to jest akurat funkcja ktora odwołuje się do skryptu odpowiedzialnego za tłumaczenia.Akurat nie ma problemu,bo do słownika dodałem tłumaczenie;-)

     

    Jednak dalej coś robię nie tak:

     

    wrzuciłem kod do create bohatera...

    założenia sa na razie takie(potem dodam więcej założeń)

    gracz wybierając poziom easy(łatwy) dostaje żyć 7 i energie ma 100%

    na poziomie normalnym ma energii też 100% ale żyć już 5 oraz poziom trudy hard energia 50% żyć 3

     

    używam zmiennych globalnych

    global.live = 5;

    global.hp = 100;

     

    i wygląda to tak:

     

    obj_bohater

     

    Create

     

    /// Glowne deklaracje zmiennych Anatola
                         
                         //////////////////////////////
                        ///////ZMIENNE STALE//////////
                        /////////////////////////////
    ///Ustawienia
    event_inherited();
    zbieranie=true;
    eksplozja = false;
    zasiegEksplozji = 22;
    silaEksplozji = 10;
    
    global.damage=0; //zmiena odzpowiedzialna za obrazenia zadawane po upadku z duzej wysokosci
    global.hp = 100;
    global.hit=0; //zmienna odpowiada za obrazenia kuli i miganie 
    maxHp = 100;
    zegarAtaku = 0;
    odejmij = 0; //zmienna potrzebna do przesuwanie skrzynki w end step 
    atakBierzacy = 0;
    global.zegarObrazen = 0;
    kierunekPlywania = 0;
    wysKierunek = 0;
    silaSkoku = 0;
    czasSkoku = 0;
    drabina = false;
    rs_timer = 0; //licznik czasowy w grze
    tlen=10;//ilosc tlenu
    
    //Moce specjalne
    pwrupSpd = 0;
    pwrupStr = 0;
    pwrupJmp = 0;
    
    //Pozycja odrodzenia Anatola i wywolanie skryptu widoku centralnego na graczu
    spawnX = x;
    spawnY = y;
    centerViewOnMe();
    
    //zachowanie pozycji gracza przy checkpointach
    if (global.checkpointR == room)
    {
        x = global.checkpointx;
        y = global.checkpointy;
    }
    start_x = x;
    start_y = y;
    //funkcja dodaje HUD gracza na planszach bossowych
    if instance_exists(obj_game_controller)
    obj_game_controller.visible=1
    else instance_create(0,0,obj_game_controller);
    
    
    //zamrazanie bohatera
    zamroz = false;
    zamroz_x = x;
    zamroz_y = y;
    
    
    
    playerSlot = 1; //ustalamy slot dla gracza numer 1
    kierunekPlywaniaGamepad = 0;
    
    
    ///poziomy trudnosci
    
    global.difficulty = 0; //ustaw latwy
    global.difficulty = 1; //ustaw sredni
    global.difficulty = 2; //ustaw trudny
    
    
    //easy difficult
    if(global.difficulty  == "easy")
    {
       global.hp = 100;
       global.live = 7;
    }
    
    //medium difficult
    if(global.difficulty  == "medium")
    {
       global.hp = 80;
       global.live = 5;
    }
    
    //hard difficult
    if(global.difficulty  == "hard")
    {
        global.hp = 50;
        global.live = 3;
        
       
    }

    teraz obj_poziomy (
    on jest w odrębnym pokoju)

     

    CREATE

     

    options_difficulty=ds_list_create()
    options_difficulty[|0]=("Easy")
    options_difficulty[|1]=("Medium")
    options_difficulty[|2]=("hard")
    
    selected=0
    
    gp_up=false
    gup_down=false
    gp_left=false
    gp_right=false
    
    //Używane do animacji menu
    animation_speed=room_speed/4
    for(var i=0; i<ds_list_size(options_difficulty); i++) {
        animation[i]=0
    }

    STEP

     

    if(abs(gamepad_axis_value(0,gp_axislv))<0.3 && !keyboard_check(vk_anykey))
        {
        gp_up=0
        gp_down=0
        }
        
    if(abs(gamepad_axis_value(0,gp_axislh))<0.3 && !keyboard_check(vk_anykey))
        {
        gp_left=0
        gp_right=0
        }  
    
    if(keyboard_check_pressed(vk_down) || gamepad_button_check_pressed(0,gp_padd) || (gamepad_axis_value(0,gp_axislv)>0.7 && !gp_up)) {
        selected++
        if(selected>=ds_list_size(options_difficulty)) {
            selected=ds_list_size(options_difficulty)-1
        }
        gp_up=true
    }
    
    if(keyboard_check_pressed(vk_up) || gamepad_button_check_pressed(0,gp_padu) || (gamepad_axis_value(0,gp_axislv)<-0.7 && !gp_down)) {
        selected--
        if(selected<0) {
            selected=0
        }
        gp_down=true
    }
    
    if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) 
    {
        if(selected == 0) then global.difficulty = 0; //ustaw latwy
        room_goto(inicjacja)
        if(selected == 1) then global.difficulty = 1; //ustaw sredni
        room_goto(inicjacja)
        if(selected == 2) then global.difficulty = 2; //ustaw trudny
        room_goto(inicjacja)
    }
    

    DRAW

     

    draw_set_valign(1)
    draw_set_halign(1)
    draw_set_font(fontIntro)
    
    var line_height=ceil(string_height("M")*1.1)
    
    for(var i=0; i<ds_list_size(options_difficulty); i++) {
        if(i=selected) {
            //Wybrana opcja
            animation[i]=clamp(animation[i]+(1/animation_speed),0,1)
        } else {
            animation[i]=clamp(animation[i]-(1/animation_speed),0,1)
        }
        var color=merge_colour(c_black,c_red,animation[i])
        draw_text_transformed_color(x,y+(line_height*i),options_difficulty[|i],1+animation[i]/5,1+animation[i]/5,0,color,color,color,color,1)
    }

    Gra się uruchamia wybieram poziom łatwy normalny i trudny i nadal jest jak było..jakikolwiek poziom bym wybrał to mam pełną energię i tyle żyć ile miałem cały czas na początku gry.

    Coś źle robię chłopaki..

     

    A może też zamiast wrzucać ten kod do bohatera to stworzyć odrębny obiekt nazwać go np obiekt_poziomytrudnosci i w nim wrzucić kod z bohatera i od razu kod z wrogów? no sam nie wiem  z tym pomyślę..tylko teraz mam problem,że to nie działa.

     

     

  6. Kurcze...fakt...

     

    Dobra jak to najprościej zrobić..tworze pokój a w nim obiekt np o nazwie obj_poziomtrudnosci

    i teraz tak...

     

    po wyborze z listy poziomu trudności,czy to easy,normal lub hard uruchomi się gra na danym poziomie..

    ja myślę żeby użyć tych zmiennych globalnych

     

    „global.difficulty = 0” dla easy, 
    „global.difficulty = 1” dla medium 
    „global.difficulty = 2” dla hard.

    Tylko teraz patrze funkcji

    ds_list_create()

    nie można użyć...

     

    Co mam użyć żeby stworzyć menu poziomu trudności(nie mylić ze zwykłym menu)

     

  7. Coś mnie olśniło...

     

    w roomie osobnym,gdzie ustawie wybór poziomu trudności za nim rozpocznę grę mogę użyć taki kod;:

    korzystając z tablicy

    ds_list_create()

     

    „global.difficulty = 0” dla easy, 
    „global.difficulty = 1” dla medium 
    „global.difficulty = 2” dla hard.

     

  8. Przeciwników stawiam w danym roomie..scenerii.

    Właśnie kod potrzebuje żeby był jako odrębny obiekt umieszczony na mapie tam gdzie są wrogowie..

    Stąd też moje pytanie było zadane w taki sposób;-)

     

     

    Jasne bez sensu jest wklejać kod który nic nie mówi zgadzam się z tą tezą...

     

     

     

  9. Dzięki Chłopaki;-) będę operował na globalnej zmiennej:-)

    I teraz tak:

    Mam menu gry zbudowane w taki sposób jak poniżej:

    Teraz chciałbym po wybraniu New Game przejść do pokoju z wyborem trudności poziomu ok to oczywiste,ale czy mam w tym pokoju użyć funkcji ds_list_create?

    Jak to ma wyglądać?

     

    Przechodzę z New Game do pokoju,gdzie wybieram poziom trudności następnie po wybraniu pokoju trudności przechodzę już do samej gry.

     

    Teraz tak ten kod wyżej powinien znajdować się we wrogu? czy może on być jako odrębny obiekt umieszczony na mapie gry?

     

     

    Obj_menu

     

    CREATE

     

    options=ds_list_create()
    options[|0]=gmt("New game")
    options[|1]=gmt("Load game")
    options[|2]=gmt("Highscore")
    options[|3]=gmt("Options")
    options[|4]=gmt("Credits")
    options[|5]=gmt("Exit")
    
    selected=0
    
    gp_up=false
    gup_down=false
    gp_left=false
    gp_right=false
    
    //Używane do animacji menu
    animation_speed=room_speed/4
    for(var i=0; i<ds_list_size(options); i++) {
        animation[i]=0
    }

    STEP

     

    if(abs(gamepad_axis_value(0,gp_axislv))<0.3 && !keyboard_check(vk_anykey))
        {
        gp_up=0
        gp_down=0
        }
        
    if(abs(gamepad_axis_value(0,gp_axislh))<0.3 && !keyboard_check(vk_anykey))
        {
        gp_left=0
        gp_right=0
        }  
    
    if(keyboard_check_pressed(vk_down) || gamepad_button_check_pressed(0,gp_padd) || (gamepad_axis_value(0,gp_axislv)>0.7 && !gp_up)) {
        selected++
        if(selected>=ds_list_size(options)) {
            selected=ds_list_size(options)-1
        }
        gp_up=true
    }
    
    if(keyboard_check_pressed(vk_up) || gamepad_button_check_pressed(0,gp_padu) || (gamepad_axis_value(0,gp_axislv)<-0.7 && !gp_down)) {
        selected--
        if(selected<0) {
            selected=0
        }
        gp_down=true
    }
    
    if(keyboard_check_pressed(vk_enter) || gamepad_button_check_pressed(0,gp_face1)) {
        if(selected=0) {
            room_goto(inicjacja)
        } else if(selected=1) {
            if(file_exists("save.dat")){
                game_load( "Save.dat" );
            } else {
                show_message("Cannot find save.dat file. Please start a new game.");//tu daj po angielsku info,że nie znaleziono pliku
            }
            audio_stop_sound (dzwiek_menu_glowne_gry);
        } else if(selected=2) {
            room_goto(rm_highscore)
        } else if(selected=3) {
            room_goto(rm_options)
        } else if(selected=4) {
            room_goto(rm_credits)
        } else if(selected=5) {
            game_end()
        }
    }

    DRAW

     

    draw_set_valign(1)
    draw_set_halign(1)
    draw_set_font(fontIntro)
    
    var line_height=ceil(string_height("M")*1.1)
    
    for(var i=0; i<ds_list_size(options); i++) {
        if(i=selected) {
            //Wybrana opcja
            animation[i]=clamp(animation[i]+(1/animation_speed),0,1)
        } else {
            animation[i]=clamp(animation[i]-(1/animation_speed),0,1)
        }
        var color=merge_colour(c_black,c_red,animation[i])
        draw_text_transformed_color(x,y+(line_height*i),options[|i],1+animation[i]/5,1+animation[i]/5,0,color,color,color,color,1)
    }

     

  10. Cześć wszystkim,

     

    Zastanawiam się nad stworzeniem poziomu trudności

    czyli:

     

    - łatwy

    - normalny

    - trudny

     

    jak to najlepiej zrobić? użyć zmiennej globalnej?

     

    generalnie chciałbym żeby wyglądało to tak:

    uruchamiam grę pojawia się plansza osobnego roomu z wyborem trudności w tym przypadku trzy stopnie trudności

     

    łatwy

    z większa ilością żyć np 5 żyć z pełną energią i bardziej flegmatycznymi to ujmę pułapkami i wrogami;-) dostaje dużo broni w tym przypadku amunicji np 30

     

    Normalny

    czyli poziom ten co jest obecnie w grze;-) bez zmian

     

    Trudny

    ten poziom z połową energii lub 3/4 energii 3 życiami wrogowie są szybsi i dostaje też mniej broni amunicji 10

     

  11. Powoli rozgryzam ten kod;-) ktoś naprawdę nie źle się narobił.wszystko jest napisane w skryptach.

     

    Mam pytanie do mojego wyżej kodu.

    narysowałem sobie osobną grafikę textboxa..i chciałbym go wstawić zamiast tego co jest obecnie..teraz się zastanawiam której funkcji użyć i podmienić grafikę textboxa...

    jak najprościej to zrobić...?

    I jak wstawić w lewym rogu textboxa sprita? tak jak tu np

    https://marketplace.yoyogames.com/assets/2195/ctb-ced-s-textbox-demo

    Dołączyć Tag do każdego wiersza tekstu coś jak np [speaker = charactername]?

    
     

     

  12. Dzięki Piotrek

    Niestety nie działa

    Ja chyba coś spierdzieliłem...

     

    Ostatecznie

    wygląda to tak:

     

    scr.ini

    global.textq=ds_queue_create();
    global.imageq=ds_queue_create();
    global.text_get=true;

     

     

    add_text

     

    ds_queue_enqueue(global.textq,argument0);
    ds_queue_enqueue(global.textq,argument1);
    
    if !instance_exists(object309) then instance_create(0,0,object309);

     

    Obj_text

     

    Create

     

    alpha=0; //przeswitywalnosc
    step=0; //kolejne zadanie przez nas wykonywane - KROK
    text=''; //tekst jaki mamy wyswietlic
    image = -1 // obrazek jaki mamy wyswietlic
    leght = 0;

    Step

     

    if not ds_queue_empty(global.textq) and global.text_get=true
    //jezeli [kolejka] nie jest pusta i mozna [pobrac tekst]
        {
        global.text_get=false;//wylacz pobieranie tekstu, aby funkcja sie juz nie wywolala, dopuki znowu nie bedzie true
        text=ds_queue_dequeue(global.textq);//pobierz tekst z kolejki
        step=1;//ustaw zadanie na jeden
        image=ds_queue_dequeue(global.imageq);
        leght=0;
        }
    //KROK 1
    if step=1
        {
        //zmniejszamy przeswitywalnosc az do max. widocznosci (1)
        if alpha<1 then alpha+=0.1 else
            {
            //przeswitywalnosci juz nie ma, zatem skoncz wykonywanie tego skryptu
            alpha=1;
            step=2;
            }
        }
    //KROK 2
    if step=2
        {
        if leght<string_length(string(text)) then leght += 1; // Mozesz zmienic predkosc "drukowania" testu dodajac inna liczbe do zmiennej leght
        }
    
    //KROK 3
    if step=3
        {
        //teraz zwiekszaj przeswitywalnosc az do znikniecia (0)
        if alpha>0 then alpha-=0.1 else
            {
            //przeswituje juz tak ze bardziej nie moze
            alpha=0;
            text='';
            image = -1;
            global.text_get=true;//ustaw, ze mozna juz pobierac tekst
            step=0;
            }
        }

    Draw

     

    vx=view_xview[0];
    vy=view_yview[0];
    // ^^ dodatkowe zabezpieczenie gdybysmy wlaczyli viewy, jak nie ma wloczonych
    //i tak dziala jak nalezy
    
    //teraz malujemy tlo tekstu
    draw_set_alpha(alpha/2);
    draw_set_color(c_gray);
        draw_rectangle(vx+10,vy+550,vx+1000,vy+460,false);
      
    
    //teraz malujemy obwodke
    draw_set_alpha(alpha);
    draw_set_color(c_black);
        draw_rectangle(vx+10,vy+550,vx+1000,vy+460,true);
        //draw_rectangle(vx+10,vy+550,vx+1895,vy+460,true);
    //a teraz tekst, za pomoca draw_text_ext, zeby nie wyjechal poza prawa strone
    draw_set_color(c_black);
        draw_set_font(font_text);
        draw_set_halign(fa_left);
        draw_set_valign(fa_top);
    
        draw_text_ext(vx+12,vy+586-20-100-2,string_copy(string(text),1,round(leght)),-1,596);
        draw_set_alpha(1);
        
        
    if (image > -1) {
    draw_sprite(introcolor, 3, 35, 35); // alphę itd. sobie już dopisz sam w draw_sprite_ext ;)
    }

    Coś popierdzieliłem...

    Tylko hmmmm...patrząc na kod to obrazki będą się po prostu same zmieniać...bez względu na treść tekstu...A zależy mi na tym żeby obrazki zmieniały się po wyświetleniu danej części tekstu zgodnego z historią na obrazku..

     

×
×
  • Dodaj nową pozycję...