Skinauswahl mit Leertaste und Enter

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
  • Hallo Com,


    Ich würde gerne eine Skinauswahl machen nach dem Invite undzwar soll man mit Leertaste zwischen den Fraktionsskins switchen können und mit Enter Bestätigen und Spawnen! Ich habe schon mal im Forum gesucht aber leider nichts gefunden ich hoffe ihr könnt mir weiterhelfen ??


    MfG


    uzii

    3 Mal editiert, zuletzt von _Flex_ () aus folgendem Grund: Text

  • Speicher halt in einem Bool, ob sich der Spieler in deiner gebauten Skin-Selection befindet.
    Wenn ja, dann gehst du über die interrupts vom OnPlayerKeyStateChange.
    Speichere zuvor die Skins in einem Array und lese aus diesem beim drücken der Leertaste.
    Die Skinauswahl an sich besteht aus einem Freeze, einer Spielerposition + Spielerrotation und einer CameraPos mit CameraLookAt.



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )

  • Was soll denn diese Frage bedeuten??
    Hau die Skins in ein Array, damit kannst du ja schonmal anfangen.
    Den Boolean kannst du direkt danach erstellen.


    Danach kannst du dir mal die Koordinaten für deine Class-Selection besorgen (PlayerPos, CamPos, CamLookAt, InteriorID, etc..)



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )

  • Ich geb dir mal einen kleinen Happen ;)


    Das Skin Array:

    new skins[/*Hier bitte die Anzahl der Skins eintragen*/] = { 2,3,5,6 };//SkinIDs eintragen, wie im Beispiel..


    Die Variable:

    new IsPlayerInSkinSel[MAX_PLAYERS];


    Variable unter OnPlayerConnect auf "false" setzen: (man weiß ja nie, ob nicht ein vorheriger Spieler mit derselben ID den Server mit "true" verlassen hat)

    IsPlayerInSkinSel[playerid]=-1;//-1 ist jetzt mal für uns false, da wir eigentlich noch eine zweite Variable benötigen, ich diese aber gerade einsparen möchte..


    Nun zu unserer KeyAbfrage:

    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(IsPlayerInSkinSel[playerid]!=-1)//Wenn Spieler in SkinSelection..
    {


    if ((newkeys & KEY_SPRINT) && !(oldkeys & KEY_SPRINT))//Spieler hat leertaste gedrückt
    {
    if(IsPlayerInSkinSel[playerid]+1>sizeof(skins)){IsPlayerInSkinSel[playerid]=0;}else{IsPlayerInSkinSel[playerid]++;}
    SetPlayerSkin(playerid,skins[IsPlayerInSkinSel[playerid]);
    }


    if ((newkeys & KEY_SECONDARY_ATTACK) && !(oldkeys & KEY_SECONDARY_ATTACK))//Spieler hat enter gedrückt
    {
    SetCameraBehindPlayer(playerid);//Cam wieder hinter Spieler setzen.
    TogglePlayerControllable(playerid, true);//Spieler entfreezen
    //SpawnPlayer(playerid);//Spieler spawnen lassen ?? vielleicht lieber Position setzen..
    //Das Skin setzen könnte sich beißen mit der normalen Skin-Selection, von daher benutze doch anschließend noch SetSpawnInfo.
    }
    }
    return 1;
    }


    Jetzt brauchen wir nurnoch den Weg hin zur Class-Selection..
    Dies kann über ein Pickup, einen Command, ein Menü oder sonstwas geschehen.


    Egal wie, es wird trotzdem mindestens Folgendes dafür benötigt:

    SetPlayerPos(playerid, X,Y,Z);//Werte für Spielerpos ersetzen
    SetPlayerFacingAngle(playerid, R);//Ersetzen durch Rotation des Spielers


    SetPlayerCameraPos(playerid, X,Y,Z);//CameraPosition (ersetzen)
    SetPlayerCameraLookAt(playerid, X,Y,Z);//Und auch hier durch den gewünschten Blickwinkel ersetzen.


    //SetPlayerInterior(playerid, I); - Nicht zwingend notwendig, sofern im selben Interior, wie sich der Spieler ohnehin schon befindet.


    TogglePlayerControllable(playerid, false);//Spieler bewegungsunfähig machen.


    Das ist jetzt aber wirklich genug Häppchen ;)
    (Um die Zeit und für "aus dem Kopf geschrieben" gibts keine Garantie :P )



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )