Ta odpowiedź cieszy się zainteresowaniem. PoweredDragon 1016 Opublikowano 6 maja 2014 Ta odpowiedź cieszy się zainteresowaniem. Udostępnij Opublikowano 6 maja 2014 (edytowane) Witam. W tym poradniku przedstawię po kolei jak zrobić naszego własnego NPC od podstaw. W kolejnych częściach będziemy dodawać mu zastosowania :p Na starcie tworzymy naszą komendę!Poradnik będzie składał się z kilku części:1. Jak w ogóle mam stworzyć NPC?!2. Mój NPC może zostać przeunięty przez gracza i nie atakuje! 3. Ten NPC tylko stoi. Niech on w końcu zacznie coś robić!a ) Handlarz[sprzedaje różne rzeczy...]- Rzeczy ustalane dla każdego NPC o tym samym imieniu- Rzeczy ustalane dla każdego NPC z osobnab ) Rozmówca[Np. Podpowiada o różnych rzeczach]c ) Najemnik[Podróżuje za nami za opłatą]4. Pomyliłem się! Chciałbym coś zmienić... Prawdopodobnie będę skakał po częściach poradnika(Tj. Podpunkt 2 poradnika 3a może się nie pojawić, a część 4 już będzie :p... Część pierwsza -> Jak w ogóle mam stworzyć NPC?!command /npc [<text>] [<text>] [<text>] [<text>] [<text>] [<text>]: permission: npc.* permission message: Nie masz uprawnien do tworzenia NPC! trigger:Standardową komendę mamy...command /npc [<text>] [<text>] [<text>] [<text>] [<text>] [<text>]: -> Trzeba wpisać komendę, w której moze znaleźć się do sześciu argumentówpermission: -> permisja wymagana do wyegzekwowania komendypermission message: -> wiadomoćć, którą otrzyma gracz bez permisjitrigger: -> Otwarcie części podrzędnej komendy argument 1 is "create": argument 2 is set: spawn villager at location of player set the name of spawned entity to "%coloured argument 2%"argument 1 is "create" -> Komenda zostanie wyegzekwowana tylko, gdy napiszemy /npc createargument 2 is set: -> Komenda zostanie wyegzekwowana tylko, gdy napiszemy /npc create spawn villager at location of player -> Spawnuje przy nas osadnikaset the name of spawned entity to "%coloured argument 2%" - Zmienia nazwe zespawnowanego osadnika na pokolorowany argument drugi. argument 3 is not number: set {movepool.length.%spawned entity%} to 0 apply slowness 100 to spawned entity else if argument 3 is "0": set {movepool.length.%spawned entity%} to 0 apply slowness 100 to spawned entity else: set {movepool.length.%spawned entity%} to argument 3 set {movepool.center.%spawned entity%} to location of spawned entity set {movepool.owner.%{movepool.center.%spawned entity%}%} to spawned entity argument 4 is not set: apply ressistance 100 to spawned entity for 1000000000 days argument 4 is "true" or "tak" or "-": apply ressistance 100 to spawned entity for 1000000000 days argument 5 is not set: set {damaging.%spawned entity%} to true set {damage.%spawned entity%} to 1 stop argument 5 is "true" or "tak" or "-": set {damaging.%spawned entity%} to true argument 6 is set: set {damage.%spawned entity%} to argument 6 else: set {damage.%spawned entity%} to 1 else: set {damaging.%spawned entity%} to falseargument 3 is not number -> Sprawdza, czy argument trzeci jest numerem, czy nieset {movepool.length.%spawned entity%} to 0 -> Ustawia zmienną na domyślną wartość - 0. jest to zakresruchów naszego NPCelse if argument 3 is "0": -> Sprwadza, czy argument 3 nie jest zeremelse: - przeciwieństwo powyższego warunkuset {movepool.length.%spawned entity%} to argument 3 -> Ustawia zmienną na wartość wpisaną w argumencie trzecimset {movepool.center.%spawned entity%} to location of spawned entity -> Ustawia centrum zakresu ruchow naszego NPC w miejscu jego zespawnowaniaset {movepool.owner.%{movepool.center.%spawned entity%}%} to spawned entity -> Zmienia wlasciciela centrum movepoolu na NPC przypisanego do centrum movepoolu(Wymagane w pozniejszym etapie!)argument 4/5 is not set: -> sprawdza czy argument 4 lub 5 są ustawione czy nie. Jeśli nie -> Ustawia na domyślną wartośćargument 4/5 is "true" or "tak" or "-": -> sprawdza czy argument 4 lub 5 są określone jako true, tak lub -. Zmienia wtedy poniższą zmienną.set {damaging.%spawned entity%} to true/false -> Ustawia możliwość zadawania obrażeń dla naszego npcapply effect to spawned entity for x seconds/minutes/days -> Ustawia efekt na naszego NPC(Domyślnie, po napisaniu /npc create <nazwa> jest to spowolnienie 100 i odpornosc 100set {damage.%spawned entity%} to argument 6 -> Ustawia wartość obrażeń naszego NPC(1 - jedno serce)argument 6 is set: - Sprawdza czy argument 6 jest ustawiony Tyle w pierwszej części. Nasz NPC egzystuje. Na chwilę obecną nie możemy w niego ingerować Część druga -> Mój NPC może zostać przesunięty przez gracza i nie atakuje!every minute: loop all entities: loop-entity is villager:every minute -> Efekt wywoła się co minutę, przy spełnieniu warunkówloop all entities -> Zapętli wszystkie bytyloop-entity is villager -> Sprawdza, czy zapętlone byty to osadnicy {movepool.length.%loop-entity%} is 0: {movepool.center.%loop-entity%} is set: location of loop-entity is not {movepool.center.%loop-entity%}: teleport loop-entity to {movepool.center.%loop-entity%}{movepool.length.%loop-entity%} is 0: -> sprawdza, czy nasz NPC może się poruszać{movepool.center.%loop-entity%} is set: -> sprawdza, czy nasz NPC ma zaznaczony swój spawnpointlocation of loop-entity is not {movepool.center.%loop-entity%}: -> sprawdza, czy nasz NPC stoi gdzie powinienteleport loop-entity to {movepool.center.%loop-entity%} -> teleportuje NPC na miejsce jego Spawnu else: {movepool.center.%loop-entity-1%} is set: loop entities in radius {movepool.length.%loop-entity-1%} of {movepool.center.%loop-entity-1%} {movepool.owner.%{movepool.center.%loop-entity-1%}%} is loop-entity-2: stop teleport loop-entity-1 to {movepool.center.%loop-entity-1%}else: -> Zaprzeczamy poprzedniemu warunkowi{movepool.center.%loop-entity%} is set: -> sprawdza, czy nasz NPC ma zaznaczony swój spawnpointloop entities in radius {movepool.length.%loop-entity%} of {movepool.center.%loop-entity%}-> Zapętla byty wokół spawnpointu bytu pierwszego{movepool.owner.%{movepool.center.%loop-entity-1%}%} is loop-entity-2: -> Sprawdza, czy zapętlony byt jest właścicielem spawnpointu bytu pierwszego. Jeśli nie, oznacza to iż nasz byt wyszedł poza granicę swojego movepoolustop -> Wstrzymuje dalszy kodteleport loop-entity-1 to {movepool.center.%loop-entity-1%} -> Teleportuje naszego NPC do jego spawnpointu, gdyż wyszedł poza swój movepool Teraz sprawa zadawania DMG...on damage: victim is villager: {damaging.%victim%} is true: make victim damage attacker by {damage.%victim%}on damage -> Efekt wywoła się, gdy ktoś otrzyma obrażeniavictim is villager -> Efekt wywoła się, gdy tym kimś jest osadnik{damaging.%victim%} is true -> Efekt wywoła się, gdy ta zmienna, którą można przypisać tylko do naszego NPC jest prawdziwamake victim damage attacker by {damage.%victim%} -> Sprawia, że nasz NPC atakuje Atakującego za {damage.%victim%}(zmienna przechowująca numer) serc Część trzecia -> Ten NPC tylko stoi. Niech on wkońcu zacznie coś robić! To już kolejna część poradnika. Ta jedna zostanie podzielona na trzy części:a ) Handlarz[sprzedaje różne rzeczy...]b ) Rozmówca[Np. Podpowiada o różnych rzeczach]c ) Najemnik[Podróżuje za nami za opłatą] a) Handlarz, czyli jak zrobić NPC, który coś sprzedaje!- Rzeczy, które można ustalić dla każdego NPC o tym samym imieniuZaczniemy od tego, że mamy już naszego NPC. Jak więc wywołać efekt? Na początku skryptu dodajemy:on load: file "plugins/Skript/scripts/NPC/config.yml" is not exists: create file "plugins/Skript/scripts/NPC/config.yml"Otwieramy utworzony po załadowaniu skryptu config i wpisujemy do niego:NPC: nazwaNPC: numeroferty: waluta: przedmiot, ktorym placimy(miedzy apostrofami) towar: przedmiot, za ktory placimy(miedzy apostrofami) numeroferty: waluta: przedmioty, ktorymi placimy(miedzy apostrofami, oddzielone 'AND') towar: przedmiot, za ktory placimy(miedzy apostrofami)np.NPC: Handlarz: 1: waluta: 1 'diamond' towar: 1 'emerald' 2: waluta: 1 'coal and charcoal' towar: 15 'charcoal'Teraz musimy jakoś załadować ową ofertę dla określonego NPC :pon load: set {npc::*} to configuration section "NPC" get of "plugins/Skript/scripts/NPC/config.yml" loop {npc::*} set {_NPC} to "%loop-value%" set {npc.%loop-number%} to {_NPC} set {oferty.%{_NPC}%::*} to configuration section "NPC.%{_NPC}%" get of "plugins/Skript/scripts/NPC/config.yml" set {_ilosc} to size of {oferty.%{_NPC}%::*} loop {_ilosc} times: set {waluta.%{_NPC}%::%loop-number%} to value "NPC.%{_NPC}%.%loop-number%.waluta" get of "plugins/Skript/scripts/NPC/config.yml" set {towar.%{_NPC}%::%loop-number%} to value "NPC.%{_NPC}%.%loop-number%.towar" get of "plugins/Skript/scripts/NPC/config.yml"Ogółem:Pobieramy z configu listę NPC, podpisujemy każdemu z osobna ofertę, walutę dla przypisanej oferty i towar dla przypisanej oferty on rightclick on villager: set {_size} to size of {npc::*} loop {npc::*}: name of clicked entity is {npc.%loop-number%}: stop loop loop-number is {_size}: stop wait 1 second set {_oferta} to size of {oferty.%name of clicked entity%::*} loop {_oferta} times: clear trade of clicked entity add trade {waluta.%name of clicked entity%::%loop-number%} for {towar.%name of clicked entity%::%loop-number%} to clicked entity with 999999999 max uses on rightclick on villager: -> Efekt wywoła się po naciśnięciu PPM na Osadnikaset {_size} to size of {npc::*} -> Zamienia zmienną tymczasową {_size} na rozmiar(ilość pozycji w) zmiennej {npc::*}loop {npc::*} -> Zapętla wszystkich NPC utworzonych w configuname of clicked entity is {npc.%loop-number%::*} -> Sprawdza czy dla klikniętego villagera jest przypisane miejsce w configustop loop -> Jeśli tak, to kończy pętlę i przechodzi do ustawiania mu ofertloop-number is {_size}: -> Sprawdza, czy zapętlono ostatniego NPC(bez znalezienia tego, na którego kliknęliśmy)stop -> Jeśli tak, to zatrzymuje kolejne efektyset {_oferta} to size of {oferty.%name of clicked entity%::*} -> Jeśli nasz NPC znajduje się w configu, to zmienna {_oferta} zmienia się na ilość ofert, które ma on posiadaćloop {_oferta} times: -> Tworzy pętlę, aby wyznaczyć do każdej oferty walutę i towarclear trade of clicked entity -> Usuwa oferty naszego NPCadd trade {waluta.%name of clicked entity%::%loop-number%} for {towar.%name of clicked entity%::%loop-number%} with 999999999 uses -> Dodaje nieskończoną(W zasadzie to skończoną, ale miliard użyć jest raczej nieosiągalny...) wymianę przedmiotu ustawionego jako walutę pod numerem pętli(czyli za pierwszym razem jeden, za drugim dwa, za trzecim trzy, itd.) za towar pod numerem pętli. Wymagane dodatki:Sk+RandomSkWildSkript Notatka od autora: Nie wiem jak szybko uda mi się dodać 3b, ale powiem, że to będzie trochę bardziej innowacyjne :p I skomplikowane Edytowane 29 czerwca 2014 przez PoweredDragon MrxJoint, ToNy, herhor67 i 15 innych 18 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/ Udostępnij na innych stronach Więcej opcji udostępniania...
LeviBoyPL 161 Opublikowano 6 maja 2014 Udostępnij Opublikowano 6 maja 2014 No nie powiem musiales sie nameczyc. Leci /| Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3385 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 6 maja 2014 Autor Udostępnij Opublikowano 6 maja 2014 Namęczyć? To 1/5 całego poradnika :P Jeszcze będzie: Customizacja stworzonych NPC(zmiana nazwy, Movepoolu, DMG, śmiertelności), pomoc do komendy oraz dodawanie funkcji NPC :P xFreku, AboundPL i Norbi 3 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3388 Udostępnij na innych stronach Więcej opcji udostępniania...
LeviBoyPL 161 Opublikowano 6 maja 2014 Udostępnij Opublikowano 6 maja 2014 No wiesz, tlumaczenie kazdej linijki jest strasznie nude i zmudne... Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3389 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 7 maja 2014 Autor Udostępnij Opublikowano 7 maja 2014 Kolejna część jest. Wiele rzeczy oprócz samego kodu(Raz wywala błedy, raz nie. Jadę na tym samym silniku...) w tym strona się bugują więc różnie widać to co w kodzie jest ujęte :P AboundPL, xFreku i Norbi 3 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3435 Udostępnij na innych stronach Więcej opcji udostępniania...
XziomekX 18 Opublikowano 8 maja 2014 Udostępnij Opublikowano 8 maja 2014 Dobry poradnik, + Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3483 Udostępnij na innych stronach Więcej opcji udostępniania...
AboundPL 17 Opublikowano 8 maja 2014 Udostępnij Opublikowano 8 maja 2014 Super poradnik! Daję + :D NikoShow 1 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3488 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 8 maja 2014 Autor Udostępnij Opublikowano 8 maja 2014 Bardzo dziękuję za te oceny :D xFreku i Norbi 2 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3525 Udostępnij na innych stronach Więcej opcji udostępniania...
LeviBoyPL 161 Opublikowano 8 maja 2014 Udostępnij Opublikowano 8 maja 2014 Czekamy dalsze czesci:) Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3530 Udostępnij na innych stronach Więcej opcji udostępniania...
ToNy 548 Opublikowano 8 maja 2014 Udostępnij Opublikowano 8 maja 2014 Super, bardzo fajny poradniczek. Jestem pewien że każdy w jakimś stopniu z niego skorzysta ;)Łap PoweredDragon 1 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3558 Udostępnij na innych stronach Więcej opcji udostępniania...
LeviBoyPL 161 Opublikowano 9 maja 2014 Udostępnij Opublikowano 9 maja 2014 Dodaj jak np. zrobic z niego sklep (show) ;) Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3602 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 9 maja 2014 Autor Udostępnij Opublikowano 9 maja 2014 Kolejna część dodana. Krótka, bo to 1/3 całej trzeciej części(Funkcje NPC :P) xFreku i Norbi 2 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-3624 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 12 czerwca 2014 Autor Udostępnij Opublikowano 12 czerwca 2014 @REF Zrobiony mini-update kosmetyczny. Do tego wspomnę, że do przyszłej środy mam wystawione oceny, więc tak postaram się przed wakacjami, dodać kolejną część :D Norbi 1 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-7368 Udostępnij na innych stronach Więcej opcji udostępniania...
herhor67 916 Opublikowano 14 czerwca 2014 Udostępnij Opublikowano 14 czerwca 2014 @REF Zrobiony mini-update kosmetyczny. Do tego wspomnę, że do przyszłej środy mam wystawione oceny, więc tak postaram się przed wakacjami, dodać kolejną część :Dwygląda fajnie, łap + P.S. required addons? Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-7572 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 14 czerwca 2014 Autor Udostępnij Opublikowano 14 czerwca 2014 @UPDzięki -> Dodałem dodatki, bo jest tylko jeden(I prawdopodobnie zmieni się to niedługo, na rzecz wyjścia WS 1.5 :P) Norbi 1 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-7597 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 29 czerwca 2014 Autor Udostępnij Opublikowano 29 czerwca 2014 Robię refa(bo mogę xD) i informuję o drastycznej zmianie w części trzeciej. Wizualnie jest przyjemna dla oka, aczkolwiek wymaga RandomSk ;) Norbi i xFreku 2 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-9645 Udostępnij na innych stronach Więcej opcji udostępniania...
herhor67 916 Opublikowano 30 czerwca 2014 Udostępnij Opublikowano 30 czerwca 2014 do czego? i pytanko, w końcu sk+ i ws się nie gryzą? Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-9850 Udostępnij na innych stronach Więcej opcji udostępniania...
PoweredDragon 1016 Opublikowano 4 lipca 2014 Autor Udostępnij Opublikowano 4 lipca 2014 Część trzecia została zmieniona na zmianę ofert za pomocą RandomSk :P WS i SK+ gryzą się tylko w niektórych miejscach(np. on any movement, on enchant, itp.) Norbi 1 Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-10625 Udostępnij na innych stronach Więcej opcji udostępniania...
Norbi 1337 Opublikowano 11 lipca 2014 Udostępnij Opublikowano 11 lipca 2014 Poradnik niezły, przyda mi się. Łap kilka likow Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-11704 Udostępnij na innych stronach Więcej opcji udostępniania...
stoner1 0 Opublikowano 12 lipca 2014 Udostępnij Opublikowano 12 lipca 2014 O, z pewnością sie przyda. Dzięki! Odnośnik do komentarza https://skript.pl/temat/565-custom-npc/#findComment-12023 Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi