Gamemode als Plugin in C++

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Abend zusammen,


    mich würde mal interessieren, ob hier schon einmal jemand versucht hat, einen kompletten Gamemode als Plugin (C++) zu realisieren. Der Vorteil der Objektorientierung wäre enorm, ich konnte jetzt aber nicht finden das das jemand schon geschafft hat.



    LG

  • Geht auch alles problemlos was die Objektorientierung angeht?
    Kannst du ganz normal ohne größeren Aufwand alle Funktionen nutzen, die SAMP bereitstellt wie z.B. GetPlayerPos und alles andere, oder kann man nicht alles mit einem Plugin bewerkstelligen? Wie sieht's mit den Callbacks aus?


    Ich frage mich halt, wenn das wirklich machbar ist, warum ich bisher nie solch ein Projekt gesehen hab. Objektorientierung würde einem das Leben sowas von einfacher machen.

  • GetPlayerPos und alles andere, oder kann man nicht alles mit einem Plugin bewerkstelligen


    Das funktioniert Problemlos - man nutzt entweder die Invoke Funktionen (etwas komplizierter), aber sehr effektiv.
    Oder an nutzt einfach das SA:MP GDK, mit dem ich auch mein Dialogplugin geschrieben habe ;)



    Wie sieht's mit den Callbacks aus?


    Callbacks sollten besser gehooked werden ;)


    Dazu am Besten das Lesen ;)
    [ SCRIPTING ] Includes richtig erstellen | Hooking ganz einfach

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Wie sieht das Performancemäßig aus?


    Das kommt aber eher darauf an, wie sehr du C++ kannst und wie gut/schlecht du arbeitst.


    Ich kann dir jetzt sagen, das die Performence ziehmlich gut ist, dann arbeitest du vielleicht unsauber und schlecht, das die Performence eingeschränkt ist.
    Von daher kann man das nicht so genau sagen.


    Aber Allgemein ist der verarbeitung durch ein Plugin besser als durch ein PAWN Script ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Du wirst in C++ nicht die gleiche Leistung bzw. Geschwindigkeit erzielen können, die du in PAWN erreichst. Warum? Ganz einfach: Das Plugin ruft nur die nativen PAWN-Funktionen auf, die der Server bereitstellt, du hast also die selbe Zeit wie dein Script + die Zeit, die C++ zum Verarbeiten braucht. Im Endeffekt ist es also sinnvoller PAWN direkt und C++ nur für die Dinge, die in PAWN nicht möglich sind zu nutzen.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Soweit ich mich erinnern kann hat Zeex (Schreiber von ZCMD) etwas auf seiner Github Seite veröffentlicht, ich such dir nachher mal schnell den Link raus


    Edit:
    Ich habe e snoch nie verwendet/angesehen, kann dir also nur sagen was im Titel steht:


    Zitat


    sampgdk
    sampgdk allows you to write SA:MP game modes in C/C++


    Link: https://github.com/Zeex/sampgdk


    Edit @dead Genau ;)

  • Du meinst sicher das SAMP GDK?
    https://github.com/Zeex/sampgdk

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Der einzige Grund für mich, C++ zu benutzen, ist OOP. Mit Klassen arbeiten usw. kann man ja mit PAWN nunmal nicht.


    Im Endeffekt ist es also sinnvoller PAWN direkt und C++ nur für die Dinge, die in PAWN nicht möglich sind zu nutzen.


    Wenn man dann aber mit Objekten arbeitet, wird man das nicht wirklich zusammen mit PAWN nutzen können.

  • Wie genau du das nutzt ist deine Sache. Ich sage nur wie und warum es so ist.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Habe mir mal paar Threads im englischen SAMP-Forum durchgelesen, unter anderem ist mir aufgefallen, das das SAMP-GDK wohl nicht ganz perfekt funktioniert und zu Bugs führt. Auch gibt es wohl Probleme und ein Durcheinander, wenn 2 Plugins gleichzeitig laufen. :S


    Und die Invoke-Variante ist .. naja.. der Code am Ende sieht nicht so ellegant aus, wenn man sowas schreiben muss bei jedem GetPlayerName-Aufruf zum Beispiel:


    Code
    g_Invoke->callNative(&PAWN::GetPlayerName, params[1], name);


    Also so ganz sauber scheint das nicht zu gehen oder? Schade eigentlich!

  • Du könntest das mit anderen Funktionen umschreiben. Also eine neue Funktion namens GetPlayerName, die nicht mehr macht als die Funktion zu auszuführen und deren Return-Wert zurückzugeben. Wenn du das sowieso schon so machst, kannst du das auch direkt in Klassen gliedern (z.B. Klasse Player, Funktion getName).

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Ich habe mich nie wirklich mit dem sampgdk auseinander gesetzt, aber so wie das aussieht ist daran grob gesehen nichts anders. Es ist nur eine Art Framework. Der Begriff ist hier zwar nicht ganz korrekt, aber drückt es am besten aus. Das GDK (ich denke mal das steht (wie gewöhnlich) für Game(mode) Development Kit) umschreibt die Funktionen des SAMP SDKs nur.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.