Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Bonusy stałe z misji dziwny błąd


Rekomendowane odpowiedzi

Opublikowano

Mam problem z bonusem stałym na potwory z misji w której musimy ubić określoną ilość metinów, dodatkowo po wgraniu chyba 3 questa w konsoli "Segmentation fault core dumped error occurred on compile".

quest metin15 begin
	state start begin
		when login or levelup with pc.level >= 15 begin
			set_state(one2)
		end
	end
	state one2 begin
		when letter begin
			send_letter("Kamienie Metin - III")
		end
		when button or info begin
			say_title("Kamienie Metin - III:")
			say("")
			say("Jak już pewnie zdążyłeś zauważyć ")
			say("na obrzeżach wioski spadają ")
			say("groźne kamienie metin, które sieją ")
			say("zniszczenie oraz zarażają zwierzęta.")
			say("")
			wait()
			say_title("Kamienie Metin - III:")
			say("")
			say("Twoim zadaniem jest pokonanie 10 metinów")
			say("bitwy. Występują one w 1 wiosce.")
			say("")
			say("Powodzenia!")
			say("")
			set_state(two2)
		end
	end
	state two2 begin
		when letter begin
			send_letter("Metiny Bitwy")
		end
		when button or info begin
			say_title("Metiny Bitwy:")
			say("")
			say("Twoim zadaniem jest pokonanie")
			say("dziesięciu metinów bitwy.")
			say("")
			say("Pozostało: "..10-pc.getqf("ile").." Metinów do pokonania.")
			say("")
		end
		when 8003.kill begin
			local count = pc.getqf("ile") + 1
			pc.setqf("ile", count)
			q.set_counter("Pozostało", 10 - count)
			if pc.getqf("ile") == 10 then
				set_state(three2)
			end
		end
	end
	state three2 begin
		when letter begin
			send_letter("Metiny pokonane")
		end
		when button or info begin
			say_title("Metiny pokonane:")
			say("")
			say("Gratulacje ! Ukończyłeś kolejną misję związaną ")
			say("z kamieniami metin. Przyjmij tą nagrodę w")
			say("zamian za Twój trud.")
			say("")
			wait()
			say_title("Nagroda:")
			say("")
			say("Za wykonanie misji otrzymujesz:")
			say("")
			say_reward("300.000 Yang")
			say_reward("Rękawica Złodzieja (30min)")
			say_reward("Bonus stały: Silny przeciwko potworom +1%. ")
			say("")
			set_state(koniec2)
			clear_letter()
			pc.change_money(300000)
			pc.give_item2(72005)
			affect.add_collect(63, 1, 60*60*24*365*60)
			set_quest_state("metin20","one3")
		end
	end
	state koniec2 begin
	end
end

affect.add_collect(63, 1, 60*60*24*365*60) jest aktualnie, z którejś misji bonus zaskoczył bo w navicacie sprawdziłem tabelę affect i doszedł nowy wpis, dodatkowo w grze DMG wzrósł, lecz bonus został dodany tylko raz na 4 wykonane misje, w misji z metinem 5, 10, 15 i 20 lvl jest ta sama nagroda i wartość itd czyli bon na potwory, wcześniej użyłem affect.add w zwykłej wersji czyli ATT_BONUS_TO_MONSTER ale również nie działało tzn misje można wykonać, otrzymam nagrode czyli yangi itd ale bonusu nie przypisuje, druga sprawa z tym segmentation fault bo coś dziwne że tak nagle by zaczęło wywalać błędy przy wgrywaniu kolejnych tych samych misji edytowanych jedynie pod względem lvl'a i id metina do pokonania. Za pomoc dam limit like.

 

// EDIT : POMIMO TEGO SEGMENTATION FAULT ... QUESTY SIĘ WGRYWAJĄ I W GRZE WSZYSTKO CHODZI TAK JAK NORMALNIE.

Opublikowano

jezeli masz bon np

2% na ludzi w misji na 10 poziom

i

2% na ludzi w misji na 20 poziom

 

to bonus zostanie dodany ale po relogu zniknie ci 2% [nadpisze sie]

 

oczywiscie mozna to naprawic w game

1797821.jpeg

Opublikowano

Tutaj masz nowa funkcje do questów od endymiona, która daje Ci bonusy.

 

 

int affect_add_new_bonus(lua_State * L){
    CQuestManager & q = CQuestManager::instance();
    LPCHARACTER ch = q.GetCurrentCharacterPtr();
        if (ch==NULL) return 0;
    
    ch->AddAffect(lua_tonumber(L, 1), aApplyInfo[(BYTE)(lua_tonumber(L, 2))].bPointType, lua_tonumber(L, 3), 0, lua_tonumber(L, 4), 0, false);
    return 0;
}

 

W quescie ma to wyglądać tak:

 

affect.add_new_bonus(LiczbaPorządkowa, ID Bonusu, Wartość, Czas)

Opublikowano

Tutaj masz nowa funkcje do questów od endymiona, która daje Ci bonusy.

int affect_add_new_bonus(lua_State * L){
    CQuestManager & q = CQuestManager::instance();
    LPCHARACTER ch = q.GetCurrentCharacterPtr();
        if (ch==NULL) return 0;
    
    ch->AddAffect(lua_tonumber(L, 1), aApplyInfo[(BYTE)(lua_tonumber(L, 2))].bPointType, lua_tonumber(L, 3), 0, lua_tonumber(L, 4), 0, false);
    return 0;
}

W quescie ma to wyglądać tak:

 

affect.add_new_bonus(LiczbaPorządkowa, ID Bonusu, Wartość, Czas)

 

rozumiem, że całą tą funkcję wklejam do quest_functions i jak ta funkcja się ma do tego co napisał kolega wyżej tzn czy po relogu te bonusy nadal będą na postaci i nie znikną ? 

Opublikowano

 

Tutaj masz nowa funkcje do questów od endymiona, która daje Ci bonusy.

int affect_add_new_bonus(lua_State * L){
    CQuestManager & q = CQuestManager::instance();
    LPCHARACTER ch = q.GetCurrentCharacterPtr();
        if (ch==NULL) return 0;
    
    ch->AddAffect(lua_tonumber(L, 1), aApplyInfo[(BYTE)(lua_tonumber(L, 2))].bPointType, lua_tonumber(L, 3), 0, lua_tonumber(L, 4), 0, false);
    return 0;
}

W quescie ma to wyglądać tak:

 

affect.add_new_bonus(LiczbaPorządkowa, ID Bonusu, Wartość, Czas)

 

rozumiem, że całą tą funkcję wklejam do quest_functions i jak ta funkcja się ma do tego co napisał kolega wyżej tzn czy po relogu te bonusy nadal będą na postaci i nie znikną ? 

 

 

Ta funkcja jest do kodu źródłowego, do quest_func dodajesz tylko affect.add_new_bonus

Jak to się ma do tego? Każdy swój bonus będzie miał swój unikalny numer (numer porządkowy), dzięki temu nie będą się one nadpisywać. Tylko przy każdym nowym bonusie tego samego rodzaju (również w innych questach) musisz dopisywać inny numer porządkowy

Opublikowano

 

 

Tutaj masz nowa funkcje do questów od endymiona, która daje Ci bonusy.

int affect_add_new_bonus(lua_State * L){
    CQuestManager & q = CQuestManager::instance();
    LPCHARACTER ch = q.GetCurrentCharacterPtr();
        if (ch==NULL) return 0;
    
    ch->AddAffect(lua_tonumber(L, 1), aApplyInfo[(BYTE)(lua_tonumber(L, 2))].bPointType, lua_tonumber(L, 3), 0, lua_tonumber(L, 4), 0, false);
    return 0;
}

W quescie ma to wyglądać tak:

 

affect.add_new_bonus(LiczbaPorządkowa, ID Bonusu, Wartość, Czas)

 

rozumiem, że całą tą funkcję wklejam do quest_functions i jak ta funkcja się ma do tego co napisał kolega wyżej tzn czy po relogu te bonusy nadal będą na postaci i nie znikną ? 

 

 

Ta funkcja jest do kodu źródłowego, do quest_func dodajesz tylko affect.add_new_bonus

Jak to się ma do tego? Każdy swój bonus będzie miał swój unikalny numer (numer porządkowy), dzięki temu nie będą się one nadpisywać. Tylko przy każdym nowym bonusie tego samego rodzaju (również w innych questach) musisz dopisywać inny numer porządkowy

 

 

o to mi chodziło, jeszcze ostatnie pytanko w plikach terenzo wklejam tę funkcję do którego pliku ? Dopiero zaczynam i sorki za takie pytanie bo dla Ciebie może to banał :P

Opublikowano

 

@harnaś

Dzięki harnaś, ciekawa funkcja również mi się przyda. 

 

@Visx

Musisz dodać tą funkcję do kodu źródłowego (source) jeśli twój serwer stoi na skompilowanym game to nie da rady, więcej informacji na temat source odsyłam Cię do tematu noname

http://www.mpcforum.pl/topic/1357786-kod-%C5%BAr%C3%B3d%C5%82owy-gry-metin2/

 

pokombinuje coś z tym source, dzieki za nakierowanie

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...