Jump to content
  • Nowy serwer Pokemod na IC - Saffron

    IP: 145.239.133.23:27015

    Info
  • Nowy serwer na IC - Paintball CTF

    IP: 145.239.133.23:27021

Sign in to follow this  
Deather

Jak tworzyć pluginy sourcemod? - środowisko VS Code

Recommended Posts

Właściciel

Cześć, postanowiłem stworzyć dwa dodatkowe, bardzo przydatne (nie tylko w sourcemod) poradniki do naszego kursu administrowania. Jest to mocne rozszerzenie tematu bo chodzi tu o pisanie pluginów :) 


Dzisiaj zajmiemy się środowiskiem Visual Studio Code, stworzonym przez Microsoft i w pełni darmowym. Tworzenie pluginów w tym środowisku niesie ze sobą wiele plusów, nie będę się za bardzo rozpisywał, zobaczycie sami!

 

Instalacja VS Code:

  1. Pobieramy najnowszą wersję: https://code.visualstudio.com
  2. Instalujemy i gotowe :)

 

Opis interfejsu:

image.thumb.png.796d29ec5c896069a594ef3cafcc50ed.png

 

  1. Zakładka drzewa plików
  2. Wyszukiwanie
  3. System kontroli wersji (o tym w innym poradniku)
  4. Debuger
  5. Pluginy
  6. Katalogi i pliki naszego projektu
  7. Pole edycji pliku
  8. Okno zawiera kilka zakładek, nas interesuje tylko terminal który będzie pokazywał błędy oraz informacje o kompilacji.
  9. Pasek systemu kontroli wersji (o tym w innym poradniku)
  10. Ustawienia


Jak widać środowisko jest bardzo proste, szybko się ładuję, co jest jego główną zaletą :) 

Jeśli wygląd środowiska nie pokrywa się z tym co jest u mnie, należy zmienić styl: Ikonka ustawień(10) -> Color Theme -> Dark+
 

Bardzo ważne jest menu znajdujące się pod klawiszem F1 z niego możemy wykonywać komendy oddziałujące na projekt i środowisko.

 

Tworzenie projektu

W tym środowisku, projekt jest równoważny z katalogiem posiadającym odpowiedni folder poprzedzony kropką. 

Stwórzmy nowy folder na dowolnym dysku (najlepiej innym niż systemowy) o nazwie "Projekty". W tym folderze stwórzmy folder "test-project". W naszym środowisku wybierzmy File -> Open Folder przejdźmy do katalogu "Projekty", zaznaczmy folder "test-project" i wciśnijmy "Wybierz folder". Gotowe, projekt stworzony! :D 

We wstępie wspomniałem o folderze poprzedzonym kropką, chodzi o .vscode, jest to folder zawierający pliki konfiguracyjne danego projektu, obecnie nic nie ustawiliśmy więc takowego nie mamy :) 

Tworzenie projektu sourcemod

Przed przystąpieniem do tworzenia projektu nalezy pobrać i rozpakować przygotowany przeze mnie plik: 
template.rar

To archiwum to szablon projektu skonfigurowany pod sourcemoda - aby oszczędzić wam masy kliknięć :D

Struktura szablonu:

image.png.1757f06adfc9e6e4ac947d27a70c4d97.png

.compiler/ - tu znajduje się kompilator sourcemod, mozemy go dowolnie aktualizować nadpisując pliki nową wersją.
.vscode/ - tu znajdują się pliki odpowiedzialne za konfiguracje projektu (podpowiadanie funkcji, możliwość kompilacji skrótem klawiszowym).

files/ - jest to folder stworzony do przechowywania modeli, materiałów, cząsteczek i dzwięków używanych w naszym projekcie (jest to mój wymysł, nie związany z sourcemodem).

source/ - ten katalog jest odpowiednikiem katalogu addons/ z naszego serwera, analogicznie wszystkie podfoldery odpowiadają tym serwerowym :) 

.gitignore - działanie tego pliku opiszę w kolejnym poradniku.

 

Jedyna różnica między serwerowym addons/ a projektowym source/ to fakt ze nie ma tam kompilatora.

 

Ok, wiem co jest do czego. Przechodzimy do stworzenia projektu sourcemod. 

  1. Tworzymy projekt jak w poprzednim punkcie (folder Projekty/test-project) bądź używamy stworzonego wcześniej.
  2. Kopiujemy zawartość paczki template i wklejamy do folderu test-project, tak aby nasze ścieżki wyglądały w ten sposób:
    • Projekty/test-project/.compiler
    • Projekty//test-project/.vscode
    • Projekty/test-project/source
    • i tak dalej...


W VSCode powinno wyglądać to tak:
image.png.c309fb8286f4622071d71d41628156ef.png

 

Gotowe projekt stworzony!

 

Edycja i kompilowanie pluginów:

Przed przystąpieniem do tworzenia pluginów należy w zakładce VSCode - Pluginy (nr. 5 na wcześniejszym obrazku) upewnić się że plugin C++ InteliSense autorstwa Microsoft jest włączony:

image.png.0e22c171228f7eb94f060478cb00f625.png

 

Tworzymy nowym plik test.sp w folderze source/scripting - mozemy to zrobić z pozycji VSCode klikając prawy na folder scripting -> New File

image.png.0d40120eac7716b73772079c0bc43b8d.png

 

Wypełniamy go kodem:

#include <sourcemod>
 
#pragma semicolon 			1
#pragma tabsize 			0
#pragma newdecls required 		// tylko nowa składnia - https://wiki.alliedmods.net/SourcePawn_Transitional_Syntax
  
public Plugin myinfo =
{
	name = "My First Plugin",
	author = "Me",
	description = "My first plugin ever",
	version = "1.0",
	url = "http://www.sourcemod.net/"
};
 
public void OnPluginStart()
{
	PrintToServer("Hello world!");
}

 

Następnie wciskamy CTRL + SHIFT + B - skrót wywołuje zadanie kompilujące aktualnie edytowany plik.

 

W folderze plugins/ pojawi się nasz wykompilowany plugin text.smx 

image.png.3c22316386e64f76980c8345cf7cf845.png

 

Jest on gotowy do wrzucenia na serwer :) 

 

Uwaga: Wszystkie domyślne biblioteki znajdują się w folderze .compiler/include/, dla rozdzielenia domyślnych i dodatkowych stworzyłem folder source/scripting/include/ który również jest uwzględniany przy kompilacji jako folder bibliotek :) 

 

Krótki opis plików z folder .vscode:

settings.json - jest to plik nadpisujący domyślną konfiguracje środowiska na przestrzeni tego projektu.

c_cpp_properties.json - plik odpowiedzialny za podpowiedzi (wskazujemy w nim skąd mają być brane).

tasks.json - plik odpowiedzialny za to co dzieje się po wciśnięciu CTRL + SHIFT + B (czyli w tym wypadku kompilujemy dany plik do folderu plugins).

 

Przydatne linki:

Wstęp do pisania pluginów: https://wiki.alliedmods.net/Introduction_to_SourceMod_Plugins

Wstęp do języka SourcePawn: https://wiki.alliedmods.net/Introduction_to_SourcePawn

Tworzenie pluginów w SourcePawn - różne funkcje i przykłady: https://wiki.alliedmods.net/index.php/Category:SourceMod_Scripting

Dokumentacja sourcemod: https://sm.alliedmods.net/new-api/

Nowa składnia: https://wiki.alliedmods.net/SourcePawn_Transitional_Syntax

 

Jeśli poradnik się spodobał, polub posta :)
W razie pytań zapraszam do komentowania :P 

~Deather

 

  • Lubie to! 3

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...