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

C++ Questowy event "when upgrade"


Rekomendowane odpowiedzi

Opublikowano

Otwórz char_item.cpp i wyszukaj:

sys_log(0, "PayPee End %d", cost);

po tym dodaj:

quest::CQuestManager::instance().upgrade(GetPlayerID(), item);

########################################################

 

Otwórz quest.h i wyszukaj:

QUEST_ITEM_INFORMER_EVENT,

po tym dodaj:

QUEST_UPGRADE_EVENT,

########################################################

 

Otwórz questnpc.cpp i wyszukaj:

    bool NPC::OnItemInformer(PC& pc, unsigned int vnum)

po tym dodaj:

    bool NPC::OnUpgrade(PC& pc, LPITEM item)
    {
        return HandleEvent(pc, QUEST_UPGRADE_EVENT);
    }

########################################################

 

Otwórz questnpc.h i wyszukaj:

bool    OnItemInformer(PC& pc,unsigned int vnum);

po tym dodaj:

bool    OnUpgrade(PC& pc,LPITEM item);

########################################################

 

Otwórz questmanager.cpp i wyszukaj:

m_mapEventName.insert(TEventNameMap::value_type("item_informer", QUEST_ITEM_INFORMER_EVENT));

po tym dodaj:

m_mapEventName.insert(TEventNameMap::value_type("upgrade", QUEST_UPGRADE_EVENT));

Teraz wyszukaj:

void CQuestManager::ItemInformer(unsigned int pc,unsigned int vnum)

po tym dodaj:

    void CQuestManager::upgrade(unsigned int pc, LPITEM item)
    {
        PC * pPC;
 
        if ((pPC = GetPC(pc)))
        {
            if (!CheckQuestLoaded(pPC))
                return;
 
            SetCurrentItem(item);
            m_mapNPC[QUEST_NO_NPC].OnUpgrade(*pPC,item);
        }
        else
            sys_err("QUEST no such pc id : %d", pc);
    }

########################################################

 

Otwórz questmanager.h i wyszukaj:

void    ItemInformer(unsigned int pc, unsigned int vnum);

po tym dodaj:

void    upgrade(unsigned int pc, LPITEM item);

########################################################

 

Przykładowy quest:

 

M6UqXx8.png

 

########################################################

 

Jak to wygląda w grze:

 

p6VJQL4.gif

 
 

Jeśli znajdziesz jakiś błąd to proszę napisz w temacie lub na PW.

Jakby ktoś miał wątpliwości to temat na devie z tym poradnikiem jest mój.

 

 

Pozdrawiam,
TheMadMan9512

417711489342956987022.png

Opublikowano

Zaje.iste na 100% się przyda dzięki za wstawkę.

 

btw. Działa to też na magiczny metal i bodzia?

Nie. Możesz to zrobić samemu jeśli chcesz.

 

Otwórz char_item.cpp i wyszukaj tego, następnie dodaj:

 

quest::CQuestManager::instance().upgrade(GetPlayerID(), item);

 

Jeśli chcesz żeby podczas wykonywania eventu można było zwracać informacje o ulepszonym przedmiocie np. vnum,bonusy,sockety czy slot w eq (ulepszony, a przed ulepszeniem to dwa oddzielne itemy wg. metina) to musisz pozamieniać:

quest::CQuestManager::instance().upgrade(GetPlayerID(), item);
na
quest::CQuestManager::instance().upgrade(GetPlayerID(), pkNewItem);
w całym char_item.cpp (łącznie z tym co dodałeś powinny być tylko dwie takie linijki)
No i oczywiście event wykonuje się tylko przy pomyślnym ulepszeniu (zapomniałem dopisać, ale chyba można po nazwie angielskiej wywnioskować).
 
Pozdrawiam

417711489342956987022.png

Opublikowano

Nie widzę trochę jak to można by zastosować w praktyce, komuś może się przyda. Przejrzyście napisane +

"Proste, że czuję różnice do reszty i pewnie dlatego ich drażni mój śmiech."

Opublikowano

Nie widzę trochę jak to można by zastosować w praktyce, komuś może się przyda. Przejrzyście napisane +

Pierwszy lepszy pomysł system osiągnięć z informacją na chat("Gracz Inix stworzył Legendarną Broń Penta! Gratulujemy.") :) jak dla mnie mnóstwo zastosowań, teraz jest możliwość np. zrobienia statystyk ulepszonych przedmiotów w DT, albo zrobić ranking najlepszego Kowala na serwerze, do tego można zrobić umiejętność kowalstwa poprzez quest np. pobiera poziom przedmiotu dzieli go przez 2 i dostajemy tyle pkt.. Kolejny pomysł quest w którym musimy ulepszyć coś dla jakiegoś npc. Zastosowań jest masa jak ktoś ma pomysły.

Opublikowano

Pierwszy lepszy pomysł system osiągnięć z informacją na chat("Gracz Inix stworzył Legendarną Broń Penta! Gratulujemy.") :) jak dla mnie mnóstwo zastosowań, teraz jest możliwość np. zrobienia statystyk ulepszonych przedmiotów w DT, albo zrobić ranking najlepszego Kowala na serwerze, do tego można zrobić umiejętność kowalstwa poprzez quest np. pobiera poziom przedmiotu dzieli go przez 2 i dostajemy tyle pkt.. Kolejny pomysł quest w którym musimy ulepszyć coś dla jakiegoś npc. Zastosowań jest masa jak ktoś ma pomysły.

 

No jak zobaczyłem to na devie to sam nie mogłem nic wymyślić ale masz racje zastosowań jest sporo.

Opublikowano

Bardzo ciężko wzorować się na istniejących już eventach, naprawdę szczyt umiejętności. To jest podstawa podstaw, ale i tak będzie wow, szok i szał.

 

P.S. Zazdroszczę.

Opublikowano

Przykładowy quest dał mi raka. Jak już chcesz brać plus ulepszenia przedmiotu na podstawie ostatniej cyfry w vnum przedmiotu to rób to tak:

tonumber(string.sub(item.get_vnum(), -1))

 

Opublikowano

 

Przykładowy quest dał mi raka. Jak już chcesz brać plus ulepszenia przedmiotu na podstawie ostatniej cyfry w vnum przedmiotu to rób to tak:

tonumber(string.sub(item.get_vnum(), -1))

-10 działa bo zwykły miecz, pomyślmy co się stanie przy mieczu o id np. 20, ciekawe  :rolleyes:

Opublikowano

-10 działa bo zwykły miecz, pomyślmy co się stanie przy mieczu o id np. 20, ciekawe  :rolleyes:

Dlatego mówię o takim użyciu jak podałem. A co do Twojej prośby o dowód, że on to dał na deva:

 

 

 

ln8q9Q5.png

Jest to link do profilu użytkownika TheMadMan9512 na mpc. :P

 

 

 

Opublikowano

Bardzo ciężko wzorować się na istniejących już eventach, naprawdę szczyt umiejętności. To jest podstawa podstaw, ale i tak będzie wow, szok i szał.

 

P.S. Zazdroszczę.

Podstawą podstaw jest skompilowanie source, a do dziś wielu się to nie udaje.

 

 

Przykładowy quest dał mi raka. Jak już chcesz brać plus ulepszenia przedmiotu na podstawie ostatniej cyfry w vnum przedmiotu to rób to tak:

tonumber(string.sub(item.get_vnum(), -1))

Zapamiętam na przyszłość i dziękuję za wytknięcie "błędu"? Jakkolwiek by to nazwać.

 

 

-10 działa bo zwykły miecz, pomyślmy co się stanie przy mieczu o id np. 20, ciekawe  :rolleyes:

Będzie ID o 10 wyższe niż powinno, ale przecież to nie tutorial o pisaniu questów prawda?

417711489342956987022.png

Opublikowano

@FreeLancer•

 

1. Quest nie jest w code, a na obrazku.

2. Nad obrazkiem widnieje napis OAiOhPs.png, nie każę go nikomu używać.

3. Wraz z "małą aktualizacją" tutaj, przykładowy quest przestaje w ogóle pełnić swoją funkcję, a mimo to widzisz żebym dodał jakąś notkę odnośnie tego? Nie, bo wierzę że człowiek zajmujący się Lua ogarnie jak użyć danego eventu/funkcji i nie będzie potrzebował pełnego poradnika opisanego krok po kroku jak, co i gdzie wstawić. Wiary człowieku, wiary.. Ludzie nie są tacy głupi za jakich ich uważasz, poradzą sobie tylko daj im chwilę pomyśleć.

417711489342956987022.png

Opublikowano

Wiary człowieku, wiary.. Ludzie nie są tacy głupi za jakich ich uważasz, poradzą sobie tylko daj im chwilę pomyśleć.

 

XDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

 

JESTES TUTAJ OD 2013 I NADAL SIE NIE NAUCZYLES ?

Opublikowano

@Ashsz

 

Jakby podliczyć moje stare konta to jestem tutaj od maja 2010, w metinie siedziałem do początku roku 2012 - tak dla sprostowania.

Poza tym skoro ktoś nie wie jak użyć czegoś co wgrywa i to jeszcze na source, to nasuwa się jedno zasadnicze pytanie. Po co?

417711489342956987022.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...