[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Außerdem kannst du das so schreiben:
    if((newstate == PLAYER_STATE_DRIVER) || (newstate == PLAYER_STATE_PASSENGER))
    {
    PlayerTextDrawShow(playerid, textdraw_0[playerid]);
    //etc...
    }
    //hier die andere if-Abfrage


    Du musst nicht x mal die gleiche Abfrage hinschreiben, pro Zeile.

  • Habe alle Textdraws jetzt komplett auf playertextdraws geändert aber irgendwie wenn ich in ein Auto steige passiert nichts



    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Hey,


    bin gerade dabei ein Drive-By-System zu schreiben bei dem man den Drive-By Modus beenden und erneut starten kann.


    Das beenden klappt, das erneute starten, nun...




    Code
    if(newkeys & KEY_CROUCH){
    	    if(IsPlayerInAnyVehicle(playerid) && GetPlayerState(playerid) == PLAYER_STATE_PASSENGER){
    	        if(GetPlayerCameraMode(playerid) == 55){
    				dPlayerWeapons[playerid] = GetPlayerWeapon(playerid);
    				SetPlayerArmedWeapon(playerid, 1);
    				ApplyAnimation(playerid, "ped", "CAR_sit", 4.1, 0, 0, 0, 0, 0, 0);
    				SetPlayerArmedWeapon(playerid, dPlayerWeapons[playerid]);
    	        }
    	    }
    	}


    Ich frage über GetPlayerCameraMode ab ob der Spieler überhaupt im Drive-By Modus ist. Dann setze ich die Sitz-Animation für ihn damit er mit dem Drive-By aufhört.


    Das Hauptproblem ist nun, dass anscheinend der Drive-By Modus nicht wirklich beendet ist. Ich habe bereits mit printf den Kamera-Modus nach Beendigung des Drive-By ausgeben lassen und er gibt mir 55 aus was bedeutet, dass er immer noch im Drive-By ist.


    Meine Frage ist nun, ob und wie man den Drive-By Modus vollständig beenden kann (ohne den dabei Spieler aus dem Fahrzeug zu werfen usw.).

    Einmal editiert, zuletzt von Domain_26 ()

  • ich hätte da spontan 2 Ideen.
    Entweder einfach SetCameraBehindPlayer benutzen oder SetPlayerDrunkLevel auf einem niedrigen Wert benutzen.

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

    Margarete Stokowski

  • Deine Ansätze haben nicht geklappt, aber hab es trotzdem hingekriegt.


    GetPlayerCameraMode war doch nicht 55 als ich den Drive-By beendet habe (es war 18 -> Fahrzeug Kamera)


    Ich musste erst mit GetPlayerWeaponData alle Waffen speichern und die letzte Waffe in der Hand in einer Variable, dann ResetPlayerWeapons, nach einem Timer (kA wieso, aber ohne Funktionierts nicht) alle Waffen wieder zurück geben und mit SetPlayerArmedWeapon die letzte Waffe wieder auf die Hand geben.

  • Habe gemerkt das ich zu wenig Informationen angegeben habe, eigentlich müsste er mir den Dialog anzeigen macht er aber nicht.




    Ganz Oben

    Code
    new PlayerText:textdraw_0[MAX_PLAYERS];





    OnGameModeInit

    OnPlayerDisconnect

    Code
    PlayerTextDrawHide(playerid, textdraw_0[playerid]);

    Und das unter StateChange

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Du hast doch ganz oben nur ein Textdraw definiert:



    new PlayerText:textdraw_0[MAX_PLAYERS];


    Aber du willst die unten mit textdraw_1, textdraw_2, etc anzeigen.. Kann ja nicht funktionieren.


    Mach es einfach so:

    PlayerText:textdraw[6][MAX_PLAYERS];


    Dann musst du natürlich unten auch alles anpassen: (Beispiel)



    PlayerTextDrawHide(playerid, textdraw[0][playerid]);
    PlayerTextDrawHide(playerid, textdraw[1][playerid]);
    PlayerTextDrawHide(playerid, textdraw[2][playerid]);
    ...

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen

  • Code
    PlayerTextDrawHide(playerid, textdraw[0][playerid]);
    	PlayerTextDrawHide(playerid, textdraw[1][playerid]);
    	PlayerTextDrawHide(playerid, textdraw[2][playerid]);
    	PlayerTextDrawHide(playerid, textdraw[3][playerid]);
    	PlayerTextDrawHide(playerid, textdraw[4][playerid]);
    	PlayerTextDrawHide(playerid, textdraw[5][playerid]);

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Code
    public OnPlayerConnect(playerid)
    {
    	PlayerTextDrawShow(playerid, textdraw[0][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[1][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[2][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[3][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[4][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[5][playerid]);

    Geht immer noch nicht

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Code
    public OnPlayerConnect(playerid)
    {
    	PlayerTextDrawShow(playerid, textdraw[0][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[1][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[2][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[3][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[4][playerid]);
    	PlayerTextDrawShow(playerid, textdraw[5][playerid]);

    Geht immer noch nicht

    Du sollt die Textdraws dort erstellen und nicht anzeigen ._.



    for(new i=0; i<MAX_PLAYERS; i++)
    {
    textdraw[2][i] = CreatePlayerTextDraw(i, 561.000000, 354.000000, "");
    PlayerTextDrawFont(i, textdraw[2][i], 2);
    PlayerTextDrawLetterSize(i, textdraw[2][i], 0.183329, 1.300001);
    PlayerTextDrawTextSize(i, textdraw[2][i], 400.000000, 17.000000);
    PlayerTextDrawSetOutline(i, textdraw[2][i], 1);
    PlayerTextDrawSetShadow(i, textdraw[2][i], 4);
    PlayerTextDrawAlignment(i, textdraw[2][i], 2);
    PlayerTextDrawColor(i, textdraw[2][i], -1);
    PlayerTextDrawBackgroundColor(i, textdraw[2][i], 255);
    PlayerTextDrawBoxColor(i, textdraw[2][i], 50);
    PlayerTextDrawUseBox(i, textdraw[2][i], 0);
    PlayerTextDrawSetProportional(i, textdraw[2][i], 1);
    PlayerTextDrawSetSelectable(i, textdraw[2][i], 0);
    }

  • Da musst du das Leerzeichen auslesen und mit einem "_" ersetzen.


    Edit// Hab Grade gesehen das du die Fahrzeug Namen vordefiniert hast. Dann ändere die Leerzeichen einfach in _ um:



    getVehicleName(v_model)
    {
    new carNames[212][] = {"Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
    "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
    "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
    "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
    "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
    "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
    "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
    "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
    "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
    "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
    "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
    "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
    "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
    "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
    "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
    "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
    "Stair Trailer","Boxville","Farm Plow","Utility Trailer"};
    new string[60];
    format(string, sizeof(string), "%s", carNames[v_model-400]);
    return string;
    }

  • Aber _ sieht hässlich aus gibt es da nicht eine andere Lösung das da wirklich ein Leerzeichen ist?

    Versuch es einfach mal, es sollte trotzdem ein Leerzeichen angezeigt werden.

  • Du sollt die Textdraws dort erstellen und nicht anzeigen ._.

    Danke dir!♥

    for(new i=0; i<MAX_PLAYERS; i++)

    Achtung!
    Bei OnPlayerConnect nicht den Code mit Schleife für alle Spieler einfügen, sonst wird jedes mal wenn ein Spieler den Server betritt, für alle Spieler ein neues Textdraw angelegt.


    Der Code muss so sein:
    textdraw[2][playerid] = CreatePlayerTextDraw(playerid, 561.000000, 354.000000, "");
    PlayerTextDrawFont(playerid, textdraw[2][playerid], 2);
    //etc...



    Wenn dort Wörter mit Leerzeichen sind dann ist das so

    Erhöhe die 17 bei der PlayerTextDrawTextSize zu 50 oder so.