Skip to content

Latest commit

 

History

History
137 lines (117 loc) · 8.87 KB

README.md

File metadata and controls

137 lines (117 loc) · 8.87 KB

Repozytorium Mrucznik-RP-obiekty 2.0

Repozytorium Mrucznik-RP-obiekty zostało stworzone, aby ułatwić wgrywanie na serwer obiektów (etc) za współpracą z osobami, z rangą mapper+.

Podstawowe pliki i foldery

W głównym folderze znajdziesz kilka podstawowych plików/folderów. Poniżej znajduje się ich przedstawienie:

  • W pliku stare_obiekty.pwn załączone są obiekty z folderu stare_obiekty. Są to obiekty pisane w starym formacie, nie zaleca się ich edycji.
  • W pliku nowe_obiekty.pwn załączone są pliki z folderu nowe_obiekty. Jest to nowy format, stworzony specjalnie pod mapę Mrucznik Role Play. Jeżeli chcesz dodać na serwer jakieś obiekty, kieruj się do tego pliku.
  • W pliku 3dtexty znajdziesz wszelkie 3dtexty użyte na serwerze, możesz je swobodnie zmieniać, usuwać, dodawać nowe.
  • W pliku actorsOnWorld znajdziesz wszystkich stworzonych actorów za pomocą nowego systemu. Wzorzec jak i objaśnienie znajduje się w tym pliku.
  • W pliku locale znajdziesz definie PLOCAL, które możesz wykorzystać w kodzie.
  • w pliku ikony znajdziesz wszelkie ikonki, które są dodane na mape (nie powiązując się z żadnym innym systemem)
  • W pliku pickupy znajdziesz wszelkie pickupy, które są dodane na mapę (nie powiązując się z żadnym innym systemem)
  • W pliku colandreas_removebuildings znajdziesz funkcje "CA_RemoveBuilding" z pluginu ColAndreas, które są odpowiednikiem "RemoveBuildingForPlayer".

Nazewnictwo

Nazewnictwo, które powinniśmy stosować do zmiennych jest przedstawione przy obiekty_zmienne. Nie zaleca się odbiegania od tych norm i tworzenia miliona zmiennych. Przykład poprawnie stworzonych obiektów na exampleObjects.

Jak poprawnie wgrać obiekty?

Aby poprawnie wgrać obiekty na nasz serwer postępuj zgodnie z poniższymi krokami:

  1. Wejdź na swojego branch'a (bądź go utwórz (dopuszczalne jest także współpracowanie na 1 branchu (np. 2.5.6))), pobierz wszystkie zmiany za pomocą polecenia "git pull".
  2. Wejdź w folder nowe obiekty, wybierz podfolder (bądź stwórz nowy) - nazwa powinna być krótka i prosta.
  3. Stwórz pliki (w świeżo utworzonym folderze) na przykładzie ExampleObjects, nazywając je tak samo jak główny folder. Bądź jeżeli dotyczą poszczególnych części - nazwij je tak.
  4. Dodaj swoje obiekty jako plik .db, a także wewnątrz utworzonego pliku .pwn (zgodnie z Example). Pamiętaj! Format tworzenia obiektów powinien być jako "CreateDynamicObject(..)".
  • W razie, gdy posiadasz obiekty, które nie zgadzają się z podanym wyżej formatem , skorzystaj z konwertera obiektów. Jako output wybierz "Icognito's Streamer Plugin". Jeżeli nie możesz sobie poradzić skontaktuj się z @Simeone, @Deduir,.
  • Plik .db dodajemy w celu łatwiejszej (późniejszej) edycji interioru/exterioru, na przyszłe potrzeby. Wyciągamy go z naszego kreatora (TextureStudio). Jeżeli używasz innego kreatora - pomiń ten krok.
  1. Dodaj do pliku Nowe_Obiekty.pwn linijkę odpowiadającą za wczytanie twojego pliku .pwn, możesz to zrobić używając "#include ścieżka/aaa.pwn". Następnie umiejść linijkę wywołującą Init i Connect (wywołują się one w 2 różnych miejscach Gamemode).
  • Dodajemy Init - ponieważ wykonuje się on przy wczytaniu naszego Gamemode.
  • Dodajemy Connect - ponieważ wykonuje się on przy każdym zalogowaniu gracza na playerid
  • Upewnij się, że w żadnym z plików nie pozostawiłeś błędnego kodowania (UTF-8 ETC), domyślnie powinno to być (ANSI/WINDOWS 1250)
  1. Jeżeli usuwałeś coś wykorzystując "RemoveBuildingForPlayer", dodaj odpowiadającą mu funkcję "CA_RemoveBuilding" z ColAndreas (https://github.com/Pottus/ColAndreas/wiki/Functions#ca_removebuilding) do pliku "colandreas_removebuildings.pwn".
  2. Sprawdź wszystko za pomocą specjalistycznego gamemode'a zamieszczonego w folderze "skrypt"
  • UWAGA! Przy edycji jednego pliku, bądź dodaniu jednego interioru/exterioru od razu wrzucaj to na git'a stosując "git commit", jako opis ustawiaj to, co zmieniłeś. Pozwoli nam to zaoszczędzić czasu przy Review.
  • UWAGA! Narzędzie edycji na stronie github.com zmienia domyślnie kodowanie na UTF-8! Nie korzystaj z tego!

Nie umiem przygotować obiektów do wgrania, co teraz?

Jeżeli masz problem z przygotowaniem swoich obiektów do wgrania zgłoś się do obecnego kierownika mapy - w celu wyjaśnień.

Dodatkowe pliki w folderze

Zachęcamy do umieszczania dodatkowych plików w folderze (.md - opisy takie jak ten, .png - zrzuty ekranu interioru [...]).

Jak dodać do mojego kodu bramę?

Jeżeli chcesz umieścić w swoim interiorze / exteriorze bramę, należy wykorzystać funkcję "DodajBrame" w wywołaniu "Init". Schemat funkcji DodajBrame, wygląda następująco: DodajBrame(fobiekt, Float:fx1, Float:fy1, Float:fz1, Float:frx1, Float:fry1, Float:frz1, Float:fx2, Float:fy2, Float:fz2, Float:frx2, Float:fry2, Float:frz2, Float:fspeed, Float:frange, fuprtyp=0, fuprval=0, bool:flag=false);

  • fobiekt - to obiekt, który chcemy ustawić jako bramę.
  • fx1 - pozycja naszej bramy zamknięta X
  • fy1 - pozycja naszej bramy zamknięta Y
  • fz1 - pozycja naszej bramy zamknięta Z
  • frx1 - pozycja naszej bramy zamknięta RX
  • fry1 - pozycja naszej bramy zamknięta RY
  • frz1 - pozycja naszej bramy zamknięta RZ
  • fx1 - pozycja naszej bramy otwarta X
  • fy1 - pozycja naszej bramy otwarta Y
  • fz1 - pozycja naszej bramy otwarta Z
  • frx1 - pozycja naszej bramy otwarta RX
  • fry1 - pozycja naszej bramy otwarta RY
  • frz1 - pozycja naszej bramy otwarta RZ
  • fspeed - szybkość otwierania bramy
  • frange - odległość w jakiej zadziała komenda /brama
  • fuprtyp - TYP (BRAMA_UPR_TYPE_FRACTION, BRAMA_UPR_TYPE_FAMILY, BRAMA_UPR_TYPE_ALLPLAYERS, BRAMA_UPR_TYPE_BUSINESS)
  • fuprval - wartość typu, jeżeli chcemy dopisać bramę dla frakcji nr 1 - ustawiamy to jako "1"
  • flag - pozycja otwarta/zamknięta (domyślnie tego nie dopisywać)
  • WAŻNE! Nie ustawiaj VirtualWorldu obiektu bramy jako -1, to samo z interiorem. Stosuj wartości stałe (0+)
  • WAŻNE! VirtualWorld, który służy do sprawdzenia czy gracz jest OBOK tej bramy jest wyciągany z fobiekt
  • Nie stosuj CreateDynamicObject w fobiekt, przypisuj do zmiennej CreateDynamicObject, a następnie wykorzystuj to linijkę poniżej w fobiekt.

Jeżeli chcesz stwworzyć bramę podwójną, użyj funkcji DualGateAdd.

DualGateAdd(

  • object1,//Obiekt pierwszej bramy
  • Float:fx1,//Pozycja pierwszej bramy X
  • Float:fy1,//Pozycja pierwszej bramy Y
  • Float:fz1, //Pozycja pierwszej bramy Z
  • Float:frx1, //Pozycja pierwszej bramy rX
  • Float:fry1, //Pozycja pierwszej bramy rY
  • Float:frz1, //Pozycja pierwszej bramy rZ
  • Float:fx2, //Pozycja pierwszej bramy po przesunięciu X
  • Float:fy2, //Pozycja pierwszej bramy po przesunięciu Y
  • Float:fz2, //Pozycja pierwszej bramy po przesunięciu Z
  • Float:frx2, //Pozycja pierwszej bramy po przesunięciu RX
  • Float:fry2, //Pozycja pierwszej bramy po przesunięciu rY
  • Float:frz2, //Pozycja pierwszej bramy po przesunięciu rZ
  • object2, //Obiekt pierwszej bramy
  • Float:f2x1, //Pozycja drugiej bramy X
  • Float:f2y1, //Pozycja drugiej bramy Y
  • Float:f2z1, //Pozycja drugiej bramy Z
  • Float:f2rx1, //Pozycja drugiej bramy rX
  • Float:f2ry1, //Pozycja drugiej bramy rY
  • Float:f2rz1, //Pozycja drugiej bramy rZ
  • Float:f2x2, //Pozycja drugiej bramy po przesunięciu X
  • Float:f2y2, //Pozycja drugiej bramy po przesunięciu Y
  • Float:f2z2, //Pozycja drugiej bramy po przesunięciu Z
  • Float:f2rx2, //Pozycja drugiej bramy po przesunięciu rX
  • Float:f2ry2, //Pozycja drugiej bramy po przesunięciu rY
  • Float:f2rz2, //Pozycja drugiej bramy po przesunięciu rZ
  • Float:fspeed, // brama speed
  • Float:frange, // brama range
  • fuprtyp1=0, //Uprawnienia do bram
  • fuprval1=0, //Value (wartość) uprawnień
  • accessCard = 0, //Karta dostępu
  • bool:flg=false);
  • WAŻNE! Nie ustawiaj VirtualWorldu obiektu bramy jako -1, to samo z interiorem. Stosuj wartości stałe (0+)
  • WAŻNE! VirtualWorld, który służy do sprawdzenia czy gracz jest OBOK tej bramy jest wyciągany z fobiekt

Jak dodać do mojego kodu wejście?

Aby dodać wejście powinieneś wykorzystać funkcję DodajWejscie, która została przedstawiona poniżej.

DodajWejscie(Float:fx1, Float:fy1, Float:fz1, Float:fx2, Float:fy2, Float:fz2, vw1=0, int1=0, vw2=0, int2=0, nazwain[]="", nazwaout[]="", wejdzUID=0, playerLocal=255, bool:specialCome=false);

fx1 - pozycja wejścia X fy1 - pozycja wejścia Y fz1 - pozycja wejścia Z fx2 - pozycja wyjścia X fy2 - pozycja wyjścia Y fz2 - pozycja wyjścia Z vw1 - Virtual World wejścia int1 - Interior wejścia vw2 - Virtual World wyjścia int2 - Interior wyjścia nazwain - nazwa interioru nazwa out - nazwa wyjścia z interioru wejdzUID - dodatkowy skrypt (domyślnie 0) playerLocal - ustawianie przy wejściu pLocalu (domyślnie użyj definicji PLOCAL_DEFAULT) specialCome - jeżeli wejścia są bardzo blisko siebie, a argument ten ustawiony jest na True - wtedy aby wejść będziemy musieli stać bardzo blisko fx1,fy1,fz1.

  • Funkcja ta pozwala na dodanie automatyczne i wejścia i wyjścia.
  • Jeżeli pozostawimy nazwain/nazwaout jako "" - wtedy w tym miejscu pojawi się ikonka "i".
  • Przy dodawaniu specjalistycznego skryptu należy skontaktować się ze skrypterem, aby poszerzył wejdzUID.