Skocz do zawartości
Opublikowano

Siema, jak edytować misje biologe, chodzi mi o to że oddajac zeba, mam cooldown jak na PLU, gdzie szukac wartosci ile musze oddac przykladowo zebów orka, i gdzie szukac cooldown, zeby dac jaki chce?

image.png.32b2f09e593c5d74503d8b3104b7e585.png

Rozwiązane przez Sevence

Przejdź do rozwiązania

Featured Replies

Opublikowano

Wszystko masz w zadaniu opublikuj go tu to ci wskażemy. 

Opublikowano
  • Autor
quest collect_quest_lv30  begin
    state start begin
        when login or levelup with pc.level >= 30 begin
            set_state(information)
        end
    end

    state information begin
        when letter begin
            local v = find_npc_by_vnum(20084)
            if v != 0 then
                target.vid("__TARGET__", v, gameforge.collect_herb_lv10._150_sayTitle)
            end
            send_letter(gameforge.collect_quest_lv30._10_sendLetter)
        end

        when button or info begin
            say_title(gameforge.collect_quest_lv30._10_sendLetter)
            say(gameforge.collect_quest_lv30._20_say)
        end

        when __TARGET__.target.click or    20084.chat.gameforge.collect_quest_lv30._30_npcChat begin
            target.delete("__TARGET__")
            say_title(gameforge.collect_herb_lv10._50_sayTitle)
            say(gameforge.collect_quest_lv30._40_say)
            wait()
            say_title(gameforge.collect_herb_lv10._50_sayTitle)
            say(gameforge.collect_quest_lv30._50_say)
            wait()
            say_title(gameforge.collect_herb_lv10._150_sayTitle)
            say(gameforge.collect_quest_lv30._60_say)
            set_state(go_to_disciple)
            pc.setqf("duration",0) 
            pc.setqf("collect_count",0)
            pc.setqf("drink_drug",0)
        end
    end


    state go_to_disciple begin
        when letter begin
            send_letter(gameforge.collect_quest_lv30._70_sendLetter)

        end
        when button or info begin
            say_title(gameforge.collect_quest_lv30._80_sayTitle)
            say(gameforge.collect_quest_lv30._90_say)
            say_item_vnum(30006)
            say_reward(string.format(gameforge.collect_quest_lv30._100_sayReward, pc.getqf("collect_count")))
                    end

        when 71035.use begin
            if get_time() < pc.getqf("duration") then
                say(gameforge.collect_quest_lv30._110_say)
                return
            end
            if pc.getqf("drink_drug")==1 then
                say(gameforge.collect_quest_lv30._120_say)

                return
            end
            if pc.count_item(30006)==0 then
                say_title(gameforge.collect_herb_lv10._50_sayTitle)
                say(gameforge.collect_quest_lv30._130_say)
                return
            end
            pc.remove_item(71035, 1)
            pc.setqf("drink_drug",1)
        end

        when 601.kill begin
            local s = number(1, 100)
            if s <= 5 then
                pc.give_item2(30006, 1)
            end 
        end


        when 20084.chat.gameforge.collect_quest_lv30._140_npcChat with pc.count_item(30006) >0   begin
            if get_time() > pc.getqf("duration") then
                if pc.count_item(30006) >0 then 
                say_title(gameforge.collect_herb_lv10._150_sayTitle)
                say(gameforge.collect_quest_lv30._150_say)
                pc.remove_item("30006", 1)
                pc.setqf("duration",get_time()+60*60*22) ---22Stunden
                wait()

                local pass_percent
                if pc.getqf("drink_drug")==0 then
                    pass_percent=60
                else
                    if true == pet.is_summon(34003) or true == pet.is_summon(34001) then
                        pass_percent=92
                    else
                        pass_percent=90
                    end
                end

                notice(pass_percent)

                local s= number(1,100)
                if s <= pass_percent  then
                   if pc.getqf("collect_count")< 9 then    
                        local index =pc.getqf("collect_count")+1
                        pc.setqf("collect_count",index)
                        say_title(gameforge.collect_herb_lv10._150_sayTitle)
                        say(string.format(gameforge.collect_quest_lv30._160_say, 10-pc.getqf("collect_count")))
                        pc.setqf("drink_drug",0)    
                        return
                    end
                    say_title(gameforge.collect_herb_lv10._50_sayTitle)
                    say(gameforge.collect_quest_lv30._170_say)
                    pc.setqf("collect_count",0)
                    pc.setqf("drink_drug",0)
                    pc.setqf("duration",0)
                    set_state(key_item)
                    return
                else
                say_title(gameforge.collect_herb_lv10._50_sayTitle)
                say(gameforge.collect_quest_lv30._180_say)
                pc.setqf("drink_drug",0)    
                return
                end
            else
                say_title(gameforge.collect_herb_lv10._50_sayTitle)
                --say(string.format(gameforge.collect_quest_lv30._190_say, item_name(30006)))
                say(gameforge.collect_quest_lv30._190_say)
                return
            end
        else
          say_title(gameforge.collect_herb_lv10._50_sayTitle)
          say(gameforge.collect_quest_lv30._200_say)
          return
        end

    end
end


    state key_item begin
        when letter begin
            send_letter(gameforge.collect_quest_lv30._210_sendLetter)

            if pc.count_item(30220)>0 then
                local v = find_npc_by_vnum(20084)
                if v != 0 then
                    target.vid("__TARGET__", v, gameforge.collect_herb_lv10._150_sayTitle)
                end
            end

        end
        when button or info begin
            if pc.count_item(30220) >0 then
                say_title(gameforge.collect_quest_lv30._220_sayTitle)
                                say_reward(gameforge.collect_quest_lv30._230_sayReward)
                                return
            end
            say_title(gameforge.collect_quest_lv30._220_sayTitle)
            say(gameforge.collect_quest_lv30._240_say)
            say_item_vnum(30220)
            say(gameforge.collect_quest_lv30._250_say)
        end

        when 631.kill or 632.kill or 633.kill or 634.kill or 635.kill or 636.kill or 637.kill  begin
            local s = number(1, 500)
            if s == 1 and pc.count_item(30220)==0 then
                pc.give_item2(30220, 1)
                send_letter(gameforge.collect_quest_lv30._260_sendLetter)
            end
        end

        when __TARGET__.target.click  or    20084.chat.gameforge.collect_quest_lv30._270_npcChat with pc.count_item(30220) > 0  begin
            target.delete("__TARGET__")
            if pc.count_item(30220) > 0 then 
                say_title(gameforge.collect_herb_lv10._150_sayTitle)
                say(gameforge.collect_quest_lv30._280_say)
                pc.remove_item(30220,1)
                set_state(__reward)
            else
                say_title(gameforge.collect_herb_lv10._150_sayTitle)
                --say(string.format(gameforge.collect_quest_lv30._290_say, item_name(30220)))
                say(gameforge.collect_quest_lv30._290_say)
                return
            end
        end

    end

    state __reward begin
        when letter begin
            send_letter(gameforge.collect_quest_lv30._300_sendLetter)

            local v = find_npc_by_vnum(20018)
            if v != 0 then
                target.vid("__TARGET__", v, gameforge.collect_quest_lv30._310_targetVid)
            end

        end
        when button or info begin
            say_title(gameforge.collect_quest_lv30._300_sendLetter)
            say(gameforge.collect_quest_lv30._320_say)
        end

        when __TARGET__.target.click  or    20018.chat.gameforge.collect_quest_lv30._330_npcChat  begin
            target.delete("__TARGET__")
            say_title(gameforge.collect_quest_lv30._340_sayTitle)
            say(gameforge.collect_quest_lv30._350_say)
            say_reward(gameforge.collect_quest_lv30._360_sayReward)

            affect.add_collect(apply.MOV_SPEED, 10, 60*60*24*365*60) --60Jahre
            pc.give_item2(50109)
            clear_letter()
            set_quest_state("collect_quest_lv40", "run")
            set_state(__complete)
        end

    end


    state __giveup__ begin
        when 20084.chat.gameforge.collect_quest_lv30._370_npcChat begin
            say_title(gameforge.collect_herb_lv10._50_sayTitle)
            say(gameforge.collect_quest_lv30._380_say)
            set_state(start)
         end
     end
    state __complete begin
    end
end

 

Opublikowano
  • Rozwiązanie
if pc.getqf("collect_count") < 9 then

Tu masz ilość do dostarczenia, powyżej 9 zadanie jest ukończone, czyli potrzeba oddać 10. 

 

 pc.setqf("duration",get_time()+60*60*22) 

Tu masz ustawiany czas, co 22 godziny. 

 

PS: Kolejnym razem kod wstawiaj w blok kodu masz w edytorze przycisk </> i on służy do wstawiania kodów. 

  • Sevence zmienił(a) tytuł na Jak zmienić czas i ilość sztuk do oddania w zadaniu biologa?
Opublikowano
  • Autor
9 minut temu, Sevence napisał(a):
if pc.getqf("collect_count") < 9 then

Tu masz ilość do dostarczenia, powyżej 9 zadanie jest ukończone, czyli potrzeba oddać 10. 

 

 pc.setqf("duration",get_time()+60*60*22) 

Tu masz ustawiany czas, co 22 godziny. 

 

PS: Kolejnym razem kod wstawiaj w blok kodu masz w edytorze przycisk </> i on służy do wstawiania kodów. 

Jak ustawic w takim razie przykladowo 30 minut?

 

Opublikowano
2 minuty temu, eksyyy napisał(a):

Jak ustawic w takim razie przykladowo 30 minut?

 

30*60

Opublikowano
2 minuty temu, eksyyy napisał(a):

Jak ustawić w takim razie przykładowo 30 minut?

Wtedy usuwasz jedno *60 i wtedy masz minuty. Po zmianie musisz skompilować zadanie i zrestartować serwer. 

 

pc.setqf("duration", get_time() + 60 * 30)
Opublikowano
  • Autor
12 minut temu, Sevence napisał(a):

Wtedy usuwasz jedno *60 i wtedy masz minuty. Po zmianie musisz skompilować zadanie i zrestartować serwer. 

 

pc.setqf("duration", get_time() + 60 * 30)

image.png.155ff61658d89a4af3be27da07971d75.pngczy cos zle zrobilem? bo ustawilem na minute i dalej cooldown

Opublikowano

Jeśli wcześniej oddałeś przedmiot z poprzednim czasem to ten stan zapisuje się w tabeli quest. Musiał byś usunąć tam i wtedy ponownie oddać. Zadanie musisz wcześniej skompilować, aby zmiany weszły w życie. 

Opublikowano
  • Autor
22 minuty temu, Sevence napisał(a):

Jeśli wcześniej oddałeś przedmiot z poprzednim czasem to ten stan zapisuje się w tabeli quest. Musiał byś usunąć tam i wtedy ponownie oddać. Zadanie musisz wcześniej skompilować, aby zmiany weszły w życie. 

Gdzie dokladnie znajde te tabele? bo zrobilem nowa postac i dalej to samo.

Opublikowano
1 minutę temu, eksyyy napisał(a):

Gdzie dokladnie znajde te tabele? bo zrobilem nowa postac i dalej to samo.

W bazie danych -> baza player -> tabela quest. Tylko to pisałem odnośnie tamtej postaci, na nowej powinno działać z nowym czasem. 

Czy skompilowałeś questa? 

Opublikowano
  • Autor

 

wlasnie, nie dziala mozliwe ze cos zle napisalem?image.png.ceaac7356b62ef5af6157a586a3531bc.png

 

Opublikowano
  • Autor

image.png.d9728006b9fb589c2596227e06201d51.png

tylko to mam

Opublikowano
  • Autor

image.png.4097d28c7eb64534bfcddd583526bc96.pngi nic wiecej nie ma

Opublikowano

@eksyyy Nie odpowiedziałeś na kluczowe pytanie, które ci zadaję po raz enty. Czy skompilowałeś to zadanie? 

Opublikowano
  • Autor
8 minut temu, Sevence napisał(a):

@eksyyy Nie odpowiedziałeś na kluczowe pytanie, które ci zadaję po raz enty. Czy skompilowałeś to zadanie? 

ZAPOMNIALEM, teraz dziala, dzięki wielkie za pomoc ❤️

Opublikowano
  • Autor
9 minut temu, Sevence napisał(a):

@eksyyy Nie odpowiedziałeś na kluczowe pytanie, które ci zadaję po raz enty. Czy skompilowałeś to zadanie? 

A gdzie ustawic szanse na 100% na oddanie?

Opublikowano
11 minut temu, eksyyy napisał(a):

A gdzie ustawic szanse na 100% na oddanie?

local pass_percent
if pc.getqf("drink_drug") == 0 then
	pass_percent = 60
else
	if true == pet.is_summon(34003) or true == pet.is_summon(34001) then
		pass_percent = 92
	else
		pass_percent = 90
	end
end

W tym miejscu pass_percent = 60% bez użycia eliksiru poszukiwacza. Jak użyjesz eliksir poszukiwacza wtedy wzrasta do 90%, ale gdy masz przywołany pet o id 34003 lub 34001 to masz 92% xD

Opublikowano
16 minut temu, eksyyy napisał(a):

A gdzie ustawic szanse na 100% na oddanie?

Wyszukaj w quescie percent (zobacz tylko czy masz w quescie eliksir bo wtedy masz dwie wartości procentowe) szukaj tego mniejszego i zamień przykładowo 60 na 100 

  • Sevence zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.