Command mit eigener Einstellung (inGame)

  • Command mit eigener Einstellung (inGame)

    Hallo,
    jetzt zeige ich euch, wie es möglich ist ein "dynamischen Command" zu erstellen. :)

    Wir wollen:
    Einen Command welcher mit inGame-Einstellungen funktioniert, wir nehmen dazu den Befehl: /einsperren [ID] in Verbindung mit PVar's. :)

    Info:
    Ein PVar's Tutorial folgt bald. :)

    Los geht's:
    Wir definieren die Variable "Geldstrafe" für alle vorerst auf 0 und setzen diese bei OnGameModeInit auch auf 0 - sprich wir speichern diese nicht, das könnt ihr gerne machen wenn es euch wichtig ist.
    Oben:
    [pwn]new Geldstrafe = 0;[/pwn]

    OnGameModeInit:
    [pwn]Geldstrafe = 0;[/pwn]

    Zum Einstellungsbefehl:
    Wir nutzen dazu OCMD (Tutorial OCMD - Das wohl übersichtlichste!) um es so übersichtlich wie möglich zu gestalten. :)
    [pwn]ocmd:setarrestmoney(playerid, params[])//Command
    {
    new Geldmenge;//Definition von dem späterem Parameter "Geldmenge"
    if(sscanf(params, "d", Geldmenge)) return SendClientMessage(playerid, Farbe, "/setarrestmoney [Strafe]");//sscanf-Abfrage
    //Hier könnte eine Fraktionsabfrage oder Leaderabfrage hinein :)
    if(Geldmenge > 0 && Geldmenge < 10000)//Die Geldmenge muss also über 0 und unter 10'000 sein.
    {
    new str[64];//Definierung vom String
    Geldstrafe = Geldmenge;//Wir setzen die Geldstrafe auf den angegebenen Parameter
    format(str,sizeof(str),"Neu: %d $", Geldmenge);//Formatieren einen Text ...
    SendClientMessage(playerid, Farbe, str);//... und senden diesen an den Spieler
    }
    return 1;//Befehlsreturn
    }[/pwn]
    Soweit sollte es klar sein. :)

    Jetzt zum dazugehörigen "/einsperren"-Befehl, welchen wir auch mit OCMD schreiben.
    Wir möchten also das er pro Fahndungslevel was der Spieler hat Geld zahlen muss, sprich bei 1000$ Geldstrafe & 3 Wanteds => 3000$ Geldstrafe.
    [pwn]ocmd:einsperren(playerid, params[])
    {
    new pID;//Definierung der "pID" /des Parameters
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid, Farbe, "/einsperren [ID]");//sscanf-Abfrage
    //Hier eine Fraktionsabfrage oder Leaderabfrage o.ä. wenn gewünscht
    if(Geldstrafe != 0)//Wenn die Geldstrafe alles aber NICHT 0 ist
    {
    new wantedlevel, str[128];//Definierung vom Wantedlevel & String
    wantedlevel = GetPlayerWantedLevel(pID);//Hier 'getten' wir das Wantedlevel der pID
    new gesamt = Geldstrafe*wantedlevel;//Hier die Zusammenfassung was ausschlaggebend ist
    GivePlayerMoney(playerid, -gesamt);//Hier kriegt der Spieler (pID) das Geld abgezogen
    format(str,sizeof(str),"Jemand wurde für %d eingesperrt (Wantedlevel: %d \/\ Geldstrafe pro Wanted: %d",gesamt,wantedlevel,Geldstrafe);//Arreststring
    SendClientMessageToAll(Farbe, str);//Arrestmessage
    }
    return 1;
    }
    [/pwn]

    Ich hoffe es ist soweit klar. :)
    Viel Spaß, bei Fragen stehe ich zur Verfügung. :)

    Grüße.
    "Das müsste jetzt funktionieren..."

    ---
    Mit freundlichen Grüßen,
    Vincent Petritz
  • Ja das ist wohl die einfachste Methode, natürlich kann man auch etwas schwerer und Resourcen schonender machen, aber ich glaube es ist nicht nötig :D.

    Ich werde demnächst auch ein Tutorial drüber schreiben.

    iPsy

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von iPsy ()