Wstęp do pisania modułów: Difference between revisions
(Created page with "Moduły są rozszerzeniami rdzenia MTA Lua, które umożliwiają integrację i używanie niestandardowych funkcji Lua, które zostały napisane w C++ i skompilowane jako plik DLL lub SO. Moduły są powszechnie używane do tworzenia funkcji do takich celów, których brakuje w Multi Theft Auto, takich jak gniazda. ==Wprowadzenie== TODO") |
m (Added english reference) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
==Wprowadzenie== | ==Wprowadzenie== | ||
Żeby zacząć pisać nowe moduły trzeba mieć przynajmniej podstawową wiedzę z programowania w językach C/C++.<br/> | |||
Poradnik ten '''nie uczy''' o tym, jak zacząć przygodę z C++.<br/> | |||
Zacznijmy od pobrania szablonu przeznaczonego do stworzenia naszego własnego modułu. | |||
Możemy zrobić to na 2 sposoby: | |||
===Poprzez terminal=== | |||
Upewnij się, że masz zainstalowany pakiet kontroli źródła [https://git-scm.com/downloads GIT]. | |||
Otwórz wiersz poleceń (Win+R -> CMD) i wpisz tą komendę: | |||
<pre<includeonly/>> | |||
<span style="color:yellow">git</span> clone https://github.com/TracerDS/mtasa-modules.git | |||
</pre> | |||
===Poprzez stronę WWW=== | |||
Wchodzimy na stronę [https://github.com/TracerDS/mtasa-modules przykładowego modułu] i pobieramy go (Zielony przycisk "Code" -> "Download ZIP") | |||
Rozpakuj archiwum | |||
==Jak zacząć?== | |||
Wejdź do folderu <pre>./mtasa-modules/ml_example</pre> | |||
===Windows=== | |||
Otwórz wiersz polecenia w tym folderze i uruchom skrypt <code>.\newModule.bat NazwaTwojegoModułu</code> np. <code>.\newModule.bat MojModul</code> | |||
===Linux=== | |||
Otwórz terminal w tym katalogu i uruchom skrypt <code>./newModule.sh NazwaTwojegoModułu</code> np. <code>./newModule.sh MojModul</code> | |||
Po uruchomieniu skryptu powinien utworzyć się nowy folder o nazwie "'''NazwaTwojegoModułu_module'''". | |||
W tym folderze został również utworzony automatycznie projekt Visual Studio <span style="color:red">'''ORAZ plik README, który NALEŻY KONIECZNIE przeczytać.'''</span> | |||
==Co się znajduje w tym szablonie?== | |||
<!--<div class="mw-collapsible">--> | |||
<ul><h3>Struktura szablonowego modułu</h3> | |||
<li><span style="color:#177eff">'''include'''</span></li><ul> | |||
<!----><li><span style="color:#177eff;background-color:#880000">'''init'''</span><ul> | |||
<!------><li><span style="color:#16c80c;background-color:#880000">Common.h</span></li> | |||
<!------><li><span style="color:#16c80c;background-color:#880000">ILuaModuleManager.h</span></li> | |||
<!------><li><span style="color:#16c80c;background-color:#880000">lauxlib.h</span></li> | |||
<!------><li><span style="color:#16c80c;background-color:#880000">luaconf.h</span></li> | |||
<!------><li><span style="color:#16c80c;background-color:#880000">lua.h</span></li> | |||
<!------><li><span style="color:#16c80c;background-color:#880000">lua.hpp</span></li> | |||
<!------><li><span style="color:#16c80c;background-color:#880000">lualib.h</span></li> | |||
<!----></ul></li> | |||
<!----><li><span style="color:#16c80c">CFunctions.h</span></li> | |||
<!----><li><span style="color:#16c80c;background-color:#880000">CLuaArgument.h</span></li> | |||
<!----><li><span style="color:#16c80c;background-color:#880000">CLuaArguments.h</span></li> | |||
<!----><li><span style="color:#16c80c">ml_nazwamodulu.hpp</span></li></ul> | |||
<li><span style="color:#177eff;background-color:#880000">'''lib'''</span><ul> | |||
<!----><li><span style="color:#16c80c;background-color:#880000">lua5.1.lib</span></li> | |||
<!----><li><span style="color:#16c80c;background-color:#880000">lua5.1_64.lib</span></li></ul> | |||
<li><span style="color:#177eff">'''src'''</span></li><ul> | |||
<!----><li><span style="color:#16c80c">CFunctions.cpp</span></li> | |||
<!----><li><span style="color:#16c80c;background-color:#880000">CLuaArgument.cpp</span></li> | |||
<!----><li><span style="color:#16c80c;background-color:#880000">CLuaArguments.cpp</span></li> | |||
<!----><li><span style="color:#16c80c">ml_example.cpp</span></li></ul> | |||
<li><span style="color:#16c80c">ml_nazwamodulu.sln</span></li> | |||
<li><span style="color:#16c80c">ml_nazwamodulu.vcxproj</span></li> | |||
<li><span style="color:#16c80c">ml_nazwamodulu.vcxproj.filters</span></li> | |||
<li><span style="color:#16c80c">ml_nazwamodulu.vcxproj.user</span></li> | |||
<li><span style="color:#16c80c">README</span></li> | |||
</ul> | |||
<hr/> | |||
<span style="color:#16c80c">Zieloną czcionką</span> oznaczono pliki<br/> | |||
<span style="color:#177eff">'''Pogrubioną niebieską czcionką'''</span> oznaczono katalogi<br/> | |||
<span style="background-color:#880000">Czerwonym tłem</span> oznaczono <span style="color:#16c80c;background-color:#880000">pliki</span> lub <span style="color:#177eff;background-color:#880000">'''foldery'''</span>, które '''nie powinny''' być modyfikowane. | |||
==Do czego służy ___?== | |||
'''P:''' Folder '''init'''?<br/> | |||
'''O:''' Tego folderu nie ruszamy. Tam są przechowywane nagłówki potrzebne do wstępnego zainicjowania modułu. | |||
'''P:''' Plik '''CFunctions.h'''?<br/> | |||
'''O:''' Tam są przechowywane deklaracje funkcji stworzonych przez użytkownika. | |||
W pliku '''CFunctions.cpp''' przechowywane są definicje tychże funkcji. | |||
'''P:''' Folder '''lib'''?<br/> | |||
'''O:''' Tego folderu '''absolutnie''' nie tykamy. W nim są przechowywane biblioteki potrzebne do połączenia między C++ a Lua. | |||
'''P:''' Pliki '''CLuaArgument/s.h/.cpp'''?<br/> | |||
'''O:''' Te pliki służą do poprawnej obsługi parametrów z C++ do Lua | |||
<span style="font-weight:bold;font-size:large">[[Wstęp_do_pisania_modułów_2|Część 2]]</span> | |||
[[en:Modules Introduction]] |
Latest revision as of 07:25, 7 June 2022
Moduły są rozszerzeniami rdzenia MTA Lua, które umożliwiają integrację i używanie niestandardowych funkcji Lua, które zostały napisane w C++ i skompilowane jako plik DLL lub SO. Moduły są powszechnie używane do tworzenia funkcji do takich celów, których brakuje w Multi Theft Auto, takich jak gniazda.
Wprowadzenie
Żeby zacząć pisać nowe moduły trzeba mieć przynajmniej podstawową wiedzę z programowania w językach C/C++.
Poradnik ten nie uczy o tym, jak zacząć przygodę z C++.
Zacznijmy od pobrania szablonu przeznaczonego do stworzenia naszego własnego modułu.
Możemy zrobić to na 2 sposoby:
Poprzez terminal
Upewnij się, że masz zainstalowany pakiet kontroli źródła GIT. Otwórz wiersz poleceń (Win+R -> CMD) i wpisz tą komendę:
git clone https://github.com/TracerDS/mtasa-modules.git
Poprzez stronę WWW
Wchodzimy na stronę przykładowego modułu i pobieramy go (Zielony przycisk "Code" -> "Download ZIP") Rozpakuj archiwum
Jak zacząć?
Wejdź do folderu
./mtasa-modules/ml_example
Windows
Otwórz wiersz polecenia w tym folderze i uruchom skrypt .\newModule.bat NazwaTwojegoModułu
np. .\newModule.bat MojModul
Linux
Otwórz terminal w tym katalogu i uruchom skrypt ./newModule.sh NazwaTwojegoModułu
np. ./newModule.sh MojModul
Po uruchomieniu skryptu powinien utworzyć się nowy folder o nazwie "NazwaTwojegoModułu_module".
W tym folderze został również utworzony automatycznie projekt Visual Studio ORAZ plik README, który NALEŻY KONIECZNIE przeczytać.
Co się znajduje w tym szablonie?
- include
- init
- Common.h
- ILuaModuleManager.h
- lauxlib.h
- luaconf.h
- lua.h
- lua.hpp
- lualib.h
- CFunctions.h
- CLuaArgument.h
- CLuaArguments.h
- ml_nazwamodulu.hpp
- lib
- lua5.1.lib
- lua5.1_64.lib
- src
- CFunctions.cpp
- CLuaArgument.cpp
- CLuaArguments.cpp
- ml_example.cpp
- ml_nazwamodulu.sln
- ml_nazwamodulu.vcxproj
- ml_nazwamodulu.vcxproj.filters
- ml_nazwamodulu.vcxproj.user
- README
Struktura szablonowego modułu
Zieloną czcionką oznaczono pliki
Pogrubioną niebieską czcionką oznaczono katalogi
Czerwonym tłem oznaczono pliki lub foldery, które nie powinny być modyfikowane.
Do czego służy ___?
P: Folder init?
O: Tego folderu nie ruszamy. Tam są przechowywane nagłówki potrzebne do wstępnego zainicjowania modułu.
P: Plik CFunctions.h?
O: Tam są przechowywane deklaracje funkcji stworzonych przez użytkownika.
W pliku CFunctions.cpp przechowywane są definicje tychże funkcji.
P: Folder lib?
O: Tego folderu absolutnie nie tykamy. W nim są przechowywane biblioteki potrzebne do połączenia między C++ a Lua.
P: Pliki CLuaArgument/s.h/.cpp?
O: Te pliki służą do poprawnej obsługi parametrów z C++ do Lua