Spawn richtig umlegen | Skinauswahl umgehen

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
  • Guten Abend.
    Ich habe soeben im Easy-Scripting Forum ein Tutorial geschrieben, was ich euch nicht vorenthalten möchte - Konnte es hier noch nicht Posten, da ich keinen Zugriff hatte/ ich die Website nicht aufrufen könnte.
    ---
    Guten Tag.
    Heute möchte ich euch erklären, wie ihr den Spawn via "AddPlayerClass" umlegen oder ihr die komplette Skinauswahl umgehen könnt! Dazu braucht es nicht viel, ausser:

    • Etwas Geduld
    • Grundwissen
    • Samp Debug

    ---

    Der Anfang

    Als erstes öffnen wir "SAMP Debug", welches wir in unserem original Grand Theft Auto San Andreas Verzeichnis finden. Dort suchen wir uns nun einen Platz aus, wo wir anschließend "/save [Kommentar]" eingeben & abschicken. Danach bewegen wir uns ein, zwei Schritte vor & tippen wieder "/save [Kommentar]" ein. Nun können wir SAMP Debug schliessen & suchen nach "User Files" - Normalerweise dürfte nach kurzer Zeit "San Andreas User Files" als Suchergebniss auftauchen - Darin finden wir den Ordner "SAMP", diesen öffnen wir & sehen eine .txt Datei namens "savepositions". Nachdem wir diese geöffnet haben, finden wir nun zwei Zeilen namens "AddPlayerClass" auf. Doch bevor es nun ins Script geht, sehen wir uns das genauer an!


    AddPlayerClass
    AddPlayerClass(SkinID,XCoord,YCoord,ZCoord,Rotation,Waffe1,Muni1,Waffe2,Muni2,Waffe3,Muni3);
    SkinID steht für den Skin den der Spieler haben soll. Dort können wir eine "0" hineinschreiben, dann hat der Spieler den normalen CJ Skin.
    XCoord,YCoord,ZCoord stehen für die X,Y & Z Koordinaten. Dort ist die Position, in Koordinaten, wo der Spieler Spawn'd.
    Rotation steht für den Blinkwinkel des Spieler. Wohin der Spieler schaut.
    Waffe1, Muni1, .. steht jeweils für die Waffe & die Munition der Waffe. Fügen wir nun eine WaffenID bei Waffe1 ein, bekommt der Spieler diese Waffe. Bei Muni1 tragen wir nun eine Zahl, zb. 500, ein, dann bekommt der Spieler zu der ersten Waffe auch 500 Munition.
    Nun wissen wir, was es mit "AddPlayerClass" auf sich hat & können es richtig anwenden - AddPlayerClass setzen wir unter "OnGameModeInit" ein!


    Unter "OnPlayerRequestClass"

    public OnPlayerRequestClass(playerid, classid)//Der Callback
    {
    SetPlayerPos(playerid,X,Y,Z);//Wir setzen die Position des Spieler
    SetPlayerCameraPos(playerid,X,Y,Z);//Wir setzen die Kamera Position
    SetPlayerCameraLookAt(playerid,X,Y,Z);//Wir setzen fest, wo die Kamera hinzeigt
    SetPlayerFacingAngle(playerid,Rotation);//Wir setzen fest, in welche Richtung der Kopf des Spielers zeigt
    return 1;
    }
    Nun geht es ans eigentliche Scripten! Am ende sollte es wie folgt aussehen - Doch wie bekommen wir den Spawn richtig verlegt?
    Erstmal legen wir fest, wo der Spieler gespawn'd werden soll - Hierfür nehmen wir die X,Y & Z Koordinaten aus der Funktion "AddPlayerClass", die ich zuvor erklärt hatte.
    public OnPlayerRequestClass(playerid, classid)//Der Callback
    {
    SetPlayerPos(playerid,X,Y,Z);//Wir setzen die Position des Spieler


    return 1;
    }
    Danach setzen wir die Position der Kamera fest. Hierzu nehmen wir die X,Y & Z Koordinaten aus der Zeile in der saveposition.txt als wir ein o. zwei Schritte vor gegangen sind (!).
    public OnPlayerRequestClass(playerid, classid)//Der Callback
    {
    SetPlayerPos(playerid,X,Y,Z);//Wir setzen die Position des Spieler
    SetPlayerCameraPos(playerid,X,Y,Z);//Wir setzen die Kamera Position

    return 1;
    }
    Nun legen wir fest, wohin die Kamera zeigt (Damit wir den Spieler auch sehen). Dazu nehmen wir die gleichen Koordinaten wie bei "SetPlayerCameraPos".
    public OnPlayerRequestClass(playerid, classid)//Der Callback
    {
    SetPlayerPos(playerid,X,Y,Z);//Wir setzen die Position des Spieler
    SetPlayerCameraPos(playerid,X,Y,Z);//Wir setzen die Kamera Position
    SetPlayerCameraLookAt(playerid,X,Y,Z);//Wir setzen fest, wo die Kamera hinzeigt

    return 1;
    }
    Zum schluss setzen wir noch fest, wohin der Kopf des Spielers zeigt. Dazu einfach die Rotation aus "AddPlayerClass" nehmen.
    public OnPlayerRequestClass(playerid, classid)//Der Callback
    {
    SetPlayerPos(playerid,X,Y,Z);//Wir setzen die Position des Spieler
    SetPlayerCameraPos(playerid,X,Y,Z0);//Wir setzen die Kamera Position
    SetPlayerCameraLookAt(playerid,X,Y,Z);//Wir setzen fest, wo die Kamera hinzeigt
    SetPlayerFacingAngle(playerid,Rotation);//Wir setzen fest, in welche Richtung der Kopf des Spielers zeigt
    return 1;
    }
    Nun könntet ihr euch natürlich noch Fragen, was "playerid" bedeutet (?) - Ganz einfach! "playerid" steht dafür, das es nur für den Spieler ausgeführt wird, der gerade diese Aktion durchführt! Das werdet ihr aber später noch besser Lernen. Nun haben wir den Spawn (+Skinauswahl) erfolgreich verlegt!

    ---

    Skinauswahl überspringen/ Entfernen
    "AddPlayerClass" ist aber nicht für jedes Gamemode erfreulich & geeignet. Weshalb man die Skinauswahl Überspringen & man den Spieler direkt Spawnen kann. SetSpawnInfo(playerid,Gruppe,SkinID,XCoord,YCoord,ZCoord,Rotation,Waffe1,Muni1,Waffe2,Muni2,Waffe3,Muni3);
    SpawnPlayer(playerid);

    & so sollte das ganze Aussehen. Nun erkläre ich euch diese Funktion noch etwas genauer!
    "SetSpawnInfo" steht dafür, das ihr die SpawnInformationen speichert & später durch "SpawnPlayer(playerid);" durchführen könnt.
    SkinID steht für den Skin den der Spieler haben soll. Dort können wir eine "0" hineinschreiben, dann hat der Spieler den normalen CJ Skin.
    "Gruppe" steht für die Fraktion, die der Spieler beim Spawn haben soll. Dies müsst ihr an euer Script anpassen (FraktionsID einfügen).
    XCoord,YCoord,ZCoord stehen für die X,Y & Z Koordinaten. Dort ist die Position, in Koordinaten, wo der Spieler Spawn'd.
    Rotation steht für den Blinkwinkel des Spieler. Wohin der Spieler schaut.
    Waffe1, Muni1, .. steht jeweils für die Waffe & die Munition der Waffe. Fügen wir nun eine WaffenID bei Waffe1 ein, bekommt der Spieler diese Waffe. Bei Muni1 tragen wir nun eine Zahl, zb. 500, ein, dann bekommt der Spieler zu der ersten Waffe auch 500 Munition.
    Fügen wir diesen Code also unter "OnPlayerRequestClass" ein, überspringen wir die Skinauswahl & Spawnen den Spieler mit allen wichtigen Informationen.

    ---
    So das war mein kleines Tutorial zum Spawnen der Spieler. Ich hoffe ihr konntet es Verstehen & ich habe es für Anfänger gut erklärt


    MfG


    //Edit2: Alte Edits entfernt (nichtmehr zutreffend) + Skinchange System entfernt (Hat nie funktioniert)
    //Edit3: PAWN-Quelltext verändert um C&P vorzubeugen

    3 Mal editiert, zuletzt von Sebrawr ()

  • Ich versteh nicht wirklich den Sinn dahinter.
    Wenn ich also /skaufen mache und auch in der nähe von einem Binco bin,dann werden 20 neue Klassen hinzugefügt. Die sind aber für jeden Spieler vorhanden und jeder kann sie nutzen. Probier ich nochmal /skaufen aus,werden wieder 20 neue Klassen hinzugefügt. Ich hätte jetzt also mindestens 41. Jeder würde diese Klassen sehen und du kannst sie auch nicht mehr löschen. Was bringt mir also dieses "Skinauswahl" ? :|

  • Ich versteh nicht wirklich den Sinn dahinter.
    Wenn ich also /skaufen mache und auch in der nähe von einem Binco bin,dann werden 20 neue Klassen hinzugefügt. Die sind aber für jeden Spieler vorhanden und jeder kann sie nutzen. Probier ich nochmal /skaufen aus,werden wieder 20 neue Klassen hinzugefügt. Ich hätte jetzt also mindestens 41. Jeder würde diese Klassen sehen und du kannst sie auch nicht mehr löschen. Was bringt mir also dieses "Skinauswahl" ? :|


    Ich habs nicht getestet, es ist nur ausm Kopf geschrieben - Ich glaub ich hab da was total Falsches draus gemacht :D. Ich werds bearbeiten ;)


    MfG

  • Mir sind gerade auch noch ein paar Fehler aufgefallen :D


    if (strcmp("/skaufen", cmdtext, true, 7) == 0)


    Mach aus der 7 mal eine 8, da der / auch zu dem String gehört ;)


    AddPlayerClass solltest du wirklich in keinem Befehl verwenden, sondern nur in OnGameModeInit, damit die Klasse wirklich nur einmal erstellt wird.


    Im Befehl solltest du einfach irgendeine Variable am besten auf 1 setzen oder so und dass man dann mit den Tasten einen Skin wählen kann ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Schönes tutorial gefällt mir sehr sehr gut :)


    mfg: RaZ3r

    Danke.


    Okay danke für die Tips. - Normalerweise arbeite ich auch mit OCMD & nich mit strcmp, weshalb der Fehler da drin ist^^ & das mit den Skins auswählen war ich sowieso am Rätseln, dachte aber, das es so Funktioniert. Werde es noch bearbeiten.


    MfG

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Hey.
    Ich habs gerade mal getestet - ich bin erschüttert.
    Es funktioniert nicht.
    Ich stehe zwar vor dem Spiegel, kann aber nichts auswählen.
    Und fixxen würde ich es auch...


    Ich war bis vor kurzem Inaktiv und entschuldige mich für die späte Antwort. Ich habe das Skinchange System rausgenommen, weil es nie Funktionieren konnte. Aus zeitlichen Gründen konnte ich es früher auch nicht Fixxen und jetzt muss ich erstmal wieder reinfinden. Vielleicht im nächsten Tutorial.


  • Ich war bis vor kurzem Inaktiv und entschuldige mich für die späte Antwort. Ich habe das Skinchange System rausgenommen, weil es nie Funktionieren konnte. Aus zeitlichen Gründen konnte ich es früher auch nicht Fixxen und jetzt muss ich erstmal wieder reinfinden. Vielleicht im nächsten Tutorial.


    Zu dem Tutorial muss man sagen gibt es einige nachteile, welche dann für hacker sehr interessant sind so fern man in der lage ist dementsprechend
    das potenzial von sobeit auszunutzen. Zwar wirst du gespawnt und da ist auch der kleine Fehler sieht man auch zum beispiel an purerp
    da man die möglichkeit hat das login/Register zu umgehen und sollte man dann noch eine abfrage im gamemode haben das die anticheatsystem nur
    leute bannt die eingeloggt sind also dennen ein bestimmter wert zugeordnet wird , wenn sie sich einloggen. Ist so was natürlich fatal für das anticheatsystem.
    Daher gibts noch eine andere möglichkeit die ich vorziehe und zwar TogglePlayerSpectating dann kann man natürlich auch noch die camera perspektive
    ändern was jedoch nur mit einem timer dann möglich ist warum genau das nicht danach aufgerufen wird keine Ahnung.
    Jedoch zurück zu dem punkt das wenn ein spieler versucht das ganze zu umgehen und nicht gespant wird bevor ihm die spawninformationen gesetzt werden
    bekommt er einen crash.