Hitman-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
  • Guten Abend,
    Ich habe heute einen /contract Befehl geschrieben.
    Der funktioniert soweit auch, nur wie kann ich das jetzt machen das man den Contract einem Hitman zuteilen kann.
    Wie macht man das?
    Wäre nett wenn mir jemanden Helfen könnte.


    Hier mal der Code :


  • Dir fehlt noch im Befehl:
    PlayerInfo[pID][pContract] = kopfgeld; //kp wie bei dir die Variable heißt.. Damit der ausgewählte Spieler das Kopfgeld hat
    Beim /givehit befehl musst du eig nur machen: /givehit [ID vom Spieler miit Kopfgeld] [ID vom Hitman]

  • Aber wir könnte ich das jetzt so machen, das die Hitman wie folgt machen :


    /portable :


    - Aufträge
    usw...


    Dann schreibt man "Aufträge" dortrein.
    Wenn ein Auftrag da ist, soll er angezeigt werden, ungefähr so :


    Auftrag : Person : Mustermann, ID: 27, Kopfgeld: 20000$


    Dann kann ein Hitman /givehit [ID von einem Hitmen zum zuweisen]
    Dann geht der Auftrag weg und der Hitman bekommt den Punkt gesetzt wo die Person ist.


    Wie stellle ich das an?
    Es geht halt erstmal darum irgendwie den Contract zu speichern...


  • ocmd:givehit(playerid,params[])
    new hitman, auftrag;
    if(!IsPlayerConnected(auftrag)) return SendClientMessage(playerid,GRAU,"Dieser Spieler ist nicht online!");
    if(sscanf(params,"ui",hitman,auftrag)) return SendClientMessage(playerid,GRAU,"Verwende: /givehit [HitmanID][AuftragsID]");
    if(!SpielerInfo[hitman][pFraktion] == 1) return SendClientMessage(playerid,ROT,"Der angegebene Spieler ist kein Hitman!"); // Wenn er Hitman ist, hID = Hitman ID
    if(GetPVarInt(hitman,"Contract") > 0) return SendClientMessage(playerid,ROT,"Dieser Hitman hat bereits einen Auftrag!"); // Wenn er schon einen Contract hat, soll
    SetPVarInt(hitman,"Auftrag") == auftrag;
    // Hier brauchst du noch die Variable, in der das Kopfgeld gespeichert ist!
    SetPVarInt(hitman,"AuftragGeld") == GetPVarInt(auftrag,"Kopfgeld");



    Dann bei OnPlayerDeath:



    new Auftrag, Kopfgeld;
    Auftrag = GetPVarInt(killerid,"Auftrag");
    Kopfgeld = GetPVarInt(killerid,"AuftragGeld");
    if(Auftrag == playerid)
    SendClientMessage(playerid,WEISS,"Du wurdest von einem Hitman getötet!");
    GivePlayerMoney(killerid,Kopfgeld);
    SendClientMessage(killerid,FARBE,"Du hast dein Opfer erfolgreich eliminiert!");
    SetPVarInt(killerid,"Auftrag",0);
    SetPVarInt(killerid,"AuftragGeld",0);


    Habe ich jetzt mal so aus dem Kopf zusammengebastelt, musst du mal sehen ob das funktioniert...


  • mit einem loop kannst du das ganze auflisten solltest natürlich zusätzlich eine abfrage machen ob der spieler überhaupt die variabel sbesitzt wenn ja sendest eine nachricht an den spieler anderfalls fügst das ganze zu einem großen string zusammen und zeigst es in einem dialog an also MSG box
    oder wie du es auch willst.


    Zu dem solltest du auch dem "Auftrag/Opfer" eine variabel setzen zum beispiel mit dem geld weil so kannst du alles mit den spielerid
    regeln.