Sie sind nicht angemeldet.

DeaD_EyE

Administrator

  • »DeaD_EyE« ist der Autor dieses Themas

Beiträge: 3 980

Wohnort: Hagen

Beruf: Mechatroniker (didaktische Systeme)

Rootserver vorhanden: Nein

  • Nachricht senden

1

Freitag, 31. August 2007, 19:29

Plugins selber kompilieren

Gegebenfalls ist es mal nötig selber Plugins zu kompilieren.

[WINDOWS]
Die Vorgehensweise bei Windows ist denkbar einfach.

1. Sourcemod herunterladen (.zip-Version)
2. Dateien entpacken
3. Quellcode vom Plugin (.sp) nach addons\sourcemod\scripting kopieren. ".inc"-Dateien kommen in das Unterverzeichnis include. Werden die Include-Dateien vergessen, kann das Plugin nicht kompiliert werden.
4. Hilfsprogramm compile.exe, dass im Verzeichnis scripting enthalten ist, ausführen.

Alle im Verzeichnis scripting enthaltene Plugins werden für Sourcemod in das ausführbare Pluginformat übersetzt. Die kompilierten Plugins befinden sich dann im Unterverzeichnis compiled.

Bei der zweiten Möglichkeit kann der Kompiler direkt verwendet werden. Er befindet sich auch im Verzeichnis addons\sourcemod\scripting.

Zuerst wechselt man im Dos-Promt (Windowstaste+R -> cmd > OK) zum Verzeichnis %pfad%\addons\sourcemod\scripting. Dort befindet sich der Kompiler spcomp.exe. Dieser wird mit 'spcomp.exe Dateiname' aufgerufen. Das kompilierte Plugin wird im gleichen Verzeichnis erstellt.

[LINUX]
Leider liegt bei der Linuxversion kein Hilfsprogramm bei, welches automatisch alle im Verzeichnis scripting enthaltenen Plugins kompiliert. Das lässt sich aber durch ein kleines Script automatisieren. Der Compiler spcomp befindet sich wie bei der Windowsversion im gleichen Verzeichnis addons\sourcemod\scripting. Die Vorgehensweise ist gleich bis zum 3. Punkt (.tar.gz-Version herunterladen). Per 'chmod u+x spcomp' muss der Kompiler als Ausführbar für den Besitzer gesetzt werden. Einzelne Plugins können mit './spcomp Dateiname' kompiliert werden. Um alle im Verzeichnis enthaltene Plugins zu übersetzen, kann ein Script verwendet werden.

compile.sh

Quellcode

1
2
3
4
5
6
if [ ! -f spcomp ]; then echo "Missing compiler spcomp. Wrong directory?"; exit; fi
if [ ! -x spcomp ]; then chmod u+x spcomp; fi
if [ -d compiled ]; then rm -R compiled; fi
find . -maxdepth 1 -name '*.sp' -exec ./spcomp '{}' \;
if [ ! -d compiled ]; then mkdir compiled; fi
mv *.smx compiled/


Bei jedem Aufruf werden alle im Verzeichnis scripting enthaltenen Plugins neu kompiliert und in das Verzeichnis compiled verschoben. Das Verzeichnis compiled wird vor der kompilierung gelöscht.

Amerkung: Falls Plugins sogenannte Extensions (Erweiterungen) benötigen, müssen die ".inc"-Dateien der Extensions auch mit in das include Verzeichnis. Verschiedene Plugins haben Abhängigkeiten und benötigen auch ".inc"-Dateien diverser anderer Plugins. Das ads-Plugin benötigt z.B. die Include-Dateien das IRC-Plugins. Oftmals steht auch nicht in der Beschreibung drin, welche Extension zum kompilieren benötigt wird. Es gibt auch Extensions, die nicht als Binärdatei auf dem Server benötigt werden.

Beiträge: 96

Wohnort: im schönen Münster / NRW

  • Nachricht senden

2

Montag, 1. Oktober 2007, 07:18

Re: Plugins selber kompilieren

Sorry für die wohl dumme Frage (obwohl es ja angeblich keine gibt bigri ) aber woran sehe ich ob ein Plugin kompiliert werden muss? Ist kompiliert richtig??? keinahn

Ich meine, ich hatte jetzt schon beim testen einige Plugins, wie z.B. den 1vs1 Messerkampf, die ich einfach nicht zum laufen bekommen habe. Kann das daran liegen???

Ach ja, super Job den Du, DeaD_EyE hier machst. Vielen Dank schonmal dafür... Natürlich auch alle anderen, die hier den Leuten helfen sich in ein neuen Mod reinzuarbeiten.
Grüsse,
tObIwAnKeNoBi

visitus @ http://www.hartz-fear-esports.de

3

Dienstag, 2. Oktober 2007, 16:26

Re: Plugins selber kompilieren

normalerweise wenn du ein plugin über den "Get Plugin" Link von der sourcemod seite saugst wird das plugin auf dem webserver kompiliert und dir als frisch kompilierte version gegeben.
sollte bei einem Plugin lediglich eine .zip datei sein ist es empfehlenswert das plugin selber zu kompilieren um sicher zu gehen dass es keine kompabilitätsprobleme mit deiner sourcemod version gibt.

4

Samstag, 9. Januar 2016, 23:33

Hilfe

Guten Tag,
Vermutlich bin ich einfach zu dumm :D
Deshalb möchte ich mal nach Hilfe betteln.

Ich habe sourcemod instaliert und kriege auch alle plugins zum laufen <- das ist ja auch der einfache part

Nun denn, jetzt will ich ein plugin integrieren welches kompiliert werden muss.
Die datein pfade ist auch kein ding.
Aber wie kann ich denn, wenn ich mich mit dem Server via FTP verbunden habe die datein kompilieren.

Ich verstehe weder, wo ich chmod u+x spcomp
eintragen soll, noch wie ich die spcompile zunutze machen kann - ich kann diese doch lediglich runterladen???


Und meine compile.sh sieht auch etwas anders aus:

#!/bin/bash
cd "$(dirname "$0")"

test -e compiled || mkdir compiled

if [[ $# -ne 0 ]]; then
for i in "$@";
do
smxfile="`echo $i | sed -e 's/\.sp$/\.smx/'`";
echo -e "Compiling $i...";
./spcomp $i -ocompiled/$smxfile
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
exit 1;
fi
done
else
for sourcefile in *.sp
do
smxfile="`echo $sourcefile | sed -e 's/\.sp$/\.smx/'`"
echo -e "Compiling $sourcefile ..."
./spcomp $sourcefile -ocompiled/$smxfile
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
exit 1;
fi
done
fi


Schonmal danke, für das Tuturial auch wenn ich trotzdem noch zu blöd bin ;(
[LINUX]
Leider liegt bei der Linuxversion kein Hilfsprogramm bei, welches automatisch alle im Verzeichnis scripting enthaltenen Plugins kompiliert. Das lässt sich aber durch ein kleines Script automatisieren. Der Compiler spcomp befindet sich wie bei der Windowsversion im gleichen Verzeichnis addons\sourcemod\scripting. Die Vorgehensweise ist gleich bis zum 3. Punkt (.tar.gz-Version herunterladen). Per 'chmod u+x spcomp' muss der Kompiler als Ausführbar für den Besitzer gesetzt werden. Einzelne Plugins können mit './spcomp Dateiname' kompiliert werden. Um alle im Verzeichnis enthaltene Plugins zu übersetzen, kann ein Script verwendet werden.

compile.sh

Quellcode

1
2
3
4
5
6
if [ ! -f spcomp ]; then echo "Missing compiler spcomp. Wrong directory?"; exit; fi
if [ ! -x spcomp ]; then chmod u+x spcomp; fi
if [ -d compiled ]; then rm -R compiled; fi
find . -maxdepth 1 -name '*.sp' -exec ./spcomp '{}' \;
if [ ! -d compiled ]; then mkdir compiled; fi
mv *.smx compiled/


Bei jedem Aufruf werden alle im Verzeichnis scripting enthaltenen Plugins neu kompiliert und in das Verzeichnis compiled verschoben. Das Verzeichnis compiled wird vor der kompilierung gelöscht.

Amerkung: Falls Plugins sogenannte Extensions (Erweiterungen) benötigen, müssen die ".inc"-Dateien der Extensions auch mit in das include Verzeichnis. Verschiedene Plugins haben Abhängigkeiten und benötigen auch ".inc"-Dateien diverser anderer Plugins. Das ads-Plugin benötigt z.B. die Include-Dateien das IRC-Plugins. Oftmals steht auch nicht in der Beschreibung drin, welche Extension zum kompilieren benötigt wird. Es gibt auch Extensions, die nicht als Binärdatei auf dem Server benötigt werden.

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

5

Sonntag, 10. Januar 2016, 01:18

Nutze die Anleitung für Windows. Die entstandene .smx Datei ist unabhängig vom Betriebssystem auf dem sie erstellt wurde. Was möchtest du denn kompilieren und wieso?

6

Sonntag, 10. Januar 2016, 01:23

Ich bin momentan mit dem rpg plugin zugange
https://github.com/peace-maker/smrpg

dafür muss ich ein paar .sp datein kompilieren.

Ich habe mir testweise mal die windows source auf den desktop gezogen und von dort die datein über den compilor kompiliert aber dann gabs logischer weiße auf dem server dann error logs (Pfad zu meinem desktop etc)

Daraus hab ich dann geschlossen das ich die smx datein direkt auf dem server generieren muss

Impact

Super Moderator

Beiträge: 1 276

Rootserver vorhanden: Nein

  • Nachricht senden

7

Sonntag, 10. Januar 2016, 01:27

Das würde nur den Pfad in der Fehlermeldung ändern. Ich kenne mich mit dem besagten Plugin zwar nicht aus, vielleicht kann dir aber jemand anderes helfen wenn du die Meldungen in einem neuen Thread postest?