Geldtransporter System

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
  • Da ich sehe das viele ein Geldtransporter System wollen, habe ich mich dazu durchgebracht mein geliebtes System zu "veröffentlichen"...


    Achtung: Es ist ein Geldtransporter System für LoH! Wer will kann es natürlich umschreiben. Alle Abfragungen basieren auf LoH Abfragen.


    Es ist eigentlich ganz einfach und simple gemacht.


    Schritt 1:


    Am Anfang müsst ihr ein paar Sachen definieren:


    //TransporterKlau
    new CarRob[MAX_PLAYERS]; //Eine variable für das Abfragen ob der Spieler den Transporter klaut.
    new Transporter[5]; //Sehen wir später mehr zu. Das ist nur für die Fahrzeuge.


    #define TEAM_BLUE_COLOR 0x8D8DFF00 // Eine der Farben die wir später brauchen.
    #define COLOR_RED 0xAA3333AA // Noch eine der Farben die wir später brauchen.


    Schritt 2:


    Nun erstellen wir unter OnGameModeInit die Geldtransporter und noch ein paar Objecte zur Verschönerung :D


    public OnGameModeInit()
    {
    Transporter[1] = AddStaticVehicleEx(428,1531.46948242,-1006.67529297,24.32791519,195.99908447,7,7,15); //Geldtransporter 1
    Transporter[2] = AddStaticVehicleEx(428,1527.69299316,-1009.80389404,24.32791519,223.99908447,7,7,15); //Geldtransporter 2
    Transporter[3] = AddStaticVehicleEx(428,1536.12683105,-1005.45129395,24.32012558,177.99597168,7,7,15); //Geldtransporter 3
    Transporter[4] = AddStaticVehicleEx(428,1540.00598145,-1005.41644287,24.32012558,177.99597168,7,7,15); //Geldtransporter 4


    CreateObject(3881,1531.77624512,-1028.67895508,24.84796333,0.00000000,0.00000000,336.00000000); //object(airsecbooth_sfse) (1)
    CreateObject(2933,1524.44018555,-1028.68688965,24.55014801,0.00000000,0.00000000,336.00000000); //object(pol_comp_gate) (1)
    CreateObject(3852,1520.82092285,-1015.57202148,24.75112915,0.00000000,0.00000000,0.00000000); //object(sf_jump) (1)
    CreateObject(3666,1517.84216309,-1031.71252441,23.30518532,0.00000000,0.00000000,0.00000000); //object(airuntest_las) (1)
    CreateObject(3666,1528.67578125,-1036.61425781,23.30782890,0.00000000,0.00000000,0.00000000); //object(airuntest_las) (2)
    CreateObject(9241,1434.68164062,-988.94183350,58.57452393,0.00000000,0.00000000,268.00000000); //object(copbits_sfn) (1)
    CreateObject(8132,1503.36340332,-1024.02246094,25.41958618,0.00000000,0.00000000,276.00000000); //object(vgschurch03_lvs) (1)
    CreateObject(987,1535.78820801,-1025.68835449,23.07812500,0.00000000,0.00000000,66.00000000); //object(elecfence_bar) (1)
    CreateObject(987,1543.14392090,-1009.20489502,23.07812500,0.00000000,0.00000000,65.99487305); //object(elecfence_bar) (3)
    CreateObject(1411,1519.94177246,-1024.83801270,24.43064117,0.00000000,0.00000000,280.00000000); //object(dyn_mesh_1) (1)
    CreateObject(1411,1519.70825195,-1023.70733643,24.43012428,0.00000000,0.00000000,279.99755859); //object(dyn_mesh_1) (2)
    CreateObject(987,1539.56542969,-1017.34942627,23.07812500,0.00000000,0.00000000,65.99487305); //object(elecfence_bar) (6)


    return 1;
    }


    Schritt 3:


    Damit abgefragt wird, ob der Spieler das Fahrzeug klaut, müssen wir unter OnPlayerStateChange folgendes einfügen.
    Hier wird der Raub "richtig" gestartet:



    if(veh == Transporter[1] || veh == Transporter[2] || veh == Transporter[3] || veh == Transporter[4]) //Fragt ab ob das Auto in das man gerade einsteigt ein Transporter ist
    {
    new cops=0; // Variable zum Abfragen wieviele Cops online sind
    for(new i = 0; i < MAX_PLAYERS; i++) // EIne for Schleife damit alle User abgefragt werden.
    {
    if(IsPlayerConnected(i))
    {
    if(IsACop(i)) // Hier wird abgefragt ob der User ein Cop ist
    {
    cops++; // und hier wird unsere Variable um 1 erhöht. Das brauchen wir zur Abfrage ob 2 Cops online sind.
    }
    }
    }
    if(cops>1) // Hier wird geprüft ob 2 Cops oder mehr Online sind
    {
    new robname[MAX_PLAYER_NAME]; // Variable für den Namen des "Diebes"
    GetPlayerName(playerid,robname,sizeof(robname)); // Hier Ermitteln wir den Namen des "Diebes"
    SetPlayerCheckpoint(playerid,-1573.6975,127.5690,3.2554,5.0); // Setzt einen Checkpoint im SF Hafen
    GameTextForPlayer(playerid,"Raub gestartet!",5000,1); // Gametext für den Spieler "Raub gestartet!"
    CarRob[playerid]=1; // Nun wird unsere "Raub" Variable auf 1 gesetzt. Das heißt der Spieler klaut den Transporter
    SendClientMessage(playerid,0xFF9933FF,"Du klaust einen Geldtransporter!"); // InfoText für den Spieler
    SendClientMessage(playerid,0xFF9933FF,"Bringe den Geldtransporter zur Makierung und bekomm das Geld!"); // InfoText für den Spieler
    cops=0; // Die Variable Cops wird wieder auf 0 gesetzt damit neue "Diebe" die Einsteigen auch wieder bei 0 Anfangen zu zählen
    for(new i = 0; i < MAX_PLAYERS; i++) // wieder eine For Schleife für den Text der Cops
    {
    if(IsPlayerConnected(i)) // Fragt ab ob der Spieler Connected und Gespawnt ist
    {
    if(IsACop(i)) // Fragt ab ob der Spieler ein Cop ist
    {
    new RobText[100]; //Variable für den Text
    format(RobText, sizeof(RobText), "HQ: Verbrechen: Geldtransporter-Klau, Gesuchter: %s",robname); // Hier setzten wir den Text ein, da ein Name eingesetzt wird, brauchen wir dafür ein format, da SendClientMessage das sonst nicht anzeigen kann.
    SendClientMessage(i,TEAM_BLUE_COLOR,"HQ: Achtung Alle Einheiten! Eine Meldung vom Bank Security System!"); // Weiterer Info Text für die Cops
    SendClientMessage(i,TEAM_BLUE_COLOR,RobText); // Hier sendet das Script die oben definierte Nachricht an den User
    SendClientMessage(i,TEAM_BLUE_COLOR,"HQ: Begeben sie sich sofort zum SF Hafen!"); // Weiterer Info Text für die Cops
    }
    }
    }
    return 1;
    }
    else // Falls keine 2 Cops online sind
    {
    SendClientMessage(playerid,COLOR_RED,"Du kannst den Transporter nicht klauen, da keine 2 Cops online sind!"); // InfoText warum man den Transporter nicht klauen kann
    TogglePlayerControllable(playerid,false); // Freezt den Spieler
    TogglePlayerControllable(playerid,true); // Unfreezt den Spieler damit er sich wieder bewegen kann.
    RemovePlayerFromVehicle(playerid); // Falls der Spieler es ins Auto geschafft hat wird er wieder "rausgeworfen" :D
    return 1;
    }
    }



    Gleich folgt der 2. Teil des Tuts...
    Der passt hier aufgrund der Längenbegrenzung leider nichtmehr hin.

  • 2. Teil des Tutorials


    Schritt 4:


    Nun kommen ein paar Abfrahen ob der Spieler das Auto verlassen hat oder gestorben ist .
    Falls er Disconnectet brauchen wir da die Variable ja nicht extra zurück setzen, da er ja weg ist :D


    Als 1. Fragen wir mal ab ob er das Auto verlassen hat.
    Dafür gehen wir nach OnPlayerExitVehicle:


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    if(CarRob[playerid] == 1) // Fragt ab ob der Spieler den Transporter geklaut hat
    {
    new veh = GetPlayerVehicleID(playerid); // Ermittelt die Vehicle ID des Autos, indem er saß.
    GameTextForPlayer(playerid,"Raub gescheitert!",5000,1); // Der Info Text für den Spieler, das er den Raub abgebrochen hat.
    SendClientMessage(playerid,COLOR_RED,"Du hast den Transporter verlassen! Du bekommst kein Geld!"); // Noch ein Info Text für den Spieler, das er den Raub abgebrochen hat.
    DisablePlayerCheckpoint(playerid); // "Deaktiviert" Die Checkpoints für den Spieler, da er ja sonst mit einem anderen Auto in den Checkpoint fahren könnte.
    CarRob[playerid]=0; // Setzt die "Raub" Variable auf 0, somit Raubt er den Transporter nicht mehr.
    SetVehicleToRespawn(veh); // Respawnt den Transporter
    RemovePlayerFromVehicle(playerid); // Wirft den Spieler nochmal aus dem Fahrzeug falls er durch einen Bug drinnen geblieben ist.
    }
    return 1;
    }


    Zum Abfragen ob der Spieler gestorben ist geben wir nach OnPlayerDeath:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(CarRob[playerid] == 1) // Fragt ab ob der Spieler den Transporter geklaut hat
    {
    new veh = GetPlayerVehicleID(playerid); // Ermittelt die Vehicle ID des Autos, indem er saß.
    GameTextForPlayer(playerid,"Raub gescheitert!",5000,1); // Der Info Text für den Spieler, das er den Raub abgebrochen hat.
    SendClientMessage(playerid,COLOR_RED,"Du bist gestorben!"); // Noch ein Info Text, das er während des Raubes gestorben ist, und der Raub beendet wurde
    DisablePlayerCheckpoint(playerid); // "Deaktiviert" Die Checkpoints für den Spieler, da er ja sonst mit einem anderen Auto in den Checkpoint fahren könnte.
    CarRob[playerid]=0; // Setzt die "Raub" Variable auf 0, somit Raubt er den Transporter nicht mehr.
    SetVehicleToRespawn(veh); // Respawnt den Transporter
    RemovePlayerFromVehicle(playerid); // Wirft den Spieler nochmal aus dem Fahrzeug falls er durch einen Bug drinnen geblieben ist.
    }
    return 1;
    }


    Schritt 5:


    Nun kommen wir mal zum Positiven :D
    Wenn der Spieler ohne zu Sterben oder ohne auszusteigen am Checkpoint angekommen ist.
    Dies fragen wir unter OnPlayerEnterCheckpoint ab:


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(CarRob[playerid] == 1 && IsPlayerInRangeOfPoint(playerid,5.0,-1573.6975,127.5690,3.2554)) // Fragt ab ob der Spieler einen Transporter klaut und ob er am Checkpoint am SF Hafen ist.
    {
    new robtext[128]; // Variable für einen Robtext (siehe weiter unten)
    new rand = random(15000); // Ermittelt eine Zufallszahl von 0 bis 15000. Das heißt man kann mal $100 bekommen und mal $12000 (Zufall eben :D)
    new veh = GetPlayerVehicleID(playerid); // Ermittelt die Vehicle ID für den Respawn des Fahrzeuges
    GameTextForPlayer(playerid,"Raub gelungen!",5000,1); // Info Text für den SPieler, das ihm der Raub gelungen ist.
    format(robtext,sizeof(robtext),"Raub gelungen! Du raubst $%d.",rand); // Hier definieren wir den Text für den Spieler mit der Oben erstellten Variable.
    SendClientMessage(playerid,COLOR_RED,robtext); // Der Gerade Definierte Robtext für an den Spieler gesendet.
    GivePlayerMoney(playerid,rand); // Hier wird dem Spieler das gearde geklaute Geld gegeben.
    DisablePlayerCheckpoint(playerid); // Alle Checkpoints werden "deaktiviert"
    CarRob[playerid]=0; // Auch die "Raub" variable wird auf 0 gesetzt.
    RemovePlayerFromVehicle(playerid); // Der Spieler wird aus dem Auto "geworfen" :D
    SetVehicleToRespawn(veh); // Der Transporter wird zurück an seinen Platz gespawnt.
    }
    return 1;
    }


    Ich hoffe mein Kleines Tutorial hat euch geholfen und ich konnte eure Fragen über diese Systeme beantworten.
    Wenn ihr weitere Fragen zu Erweiterungen oder anderem habt, könnt ihr mir gerne eine PN schicken oder es hier drunter schreiben.


    Hier noch der Pastebin Link für Leute, die es überhaupt nicht hinbekommen haben.
    Pastebin.com - Link


    Gruß Deo

  • Gerne.


    Wenn du Fragen oder Probleme hast, schreib mir ne PN oder hier unter den Thread.


    Gruß Deo

  • Recht gutes tutorial :)=
    ich gebe dir 7/10 Punkten....

  • Danke =)
    Ist auch mein erstes :D
    Naja wie gesagt bei Fragen und Probs -> Ask me.


    Gruß Deo

  • Naja es ist nicht für jeden Server was...


    Aber wer seinen Usern ein bisschen Spaß gönnen möchte kann es ja einbauen :D


    Gruß Deo

  • Geiles Tutorial hat mir sehr geholfen
    1000/10
    EInach GEILLL

  • meine errors


    C:\Users\justin\Desktop\script\tsl-justin.pwn(3440) : error 032: array index out of bounds (variable "Transporter")



    die zeilen


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new veh = GetPlayerVehicleID(playerid); // Ermittelt die VehicleID
    if(veh == Transporter[1] || veh == Transporter[2] || veh == Transporter[3] || veh == Transporter[4]) //Fragt ab ob das Auto in das man gerade einsteigt ein Transporter ist
    {das zeile 3440

  • Sieht nice aus,
    aber es funktioniert nicht?? ftw??


    Nja habs nicht getestet, und habs auch nicht vor, hab ja mein eigenes :D


    Mfg