Mechaniker Script

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
  • Hi Leutz,


    ich wollte mal fragen, wie ich es mache, wenn ich jetzt jemanden was anbiete und er es dann annhemen kann.
    Damit ihr es euch bildlicher vorstellen könnt ein kleines beispiel:


    Spieler A ist Mechaniker
    Spieler B ist Kunde


    Spieler B hat ein Kaputtes auto und hat Spieler A gefragt, ob er es reparieren kann. A macht /reparieren (ID von Spieler B). Spieler B macht /akzeptieren reparatur.
    Auto von Spieler B wird repariert.


    Also ich habs mir ungefähr so vorgestellt:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(Reparieren, 10, cmdtext);
    dcmd(Annehmen, 8, cmdtext);
    return 1;
    }


    dcmd_Reparieren(playerid, params[])
    {
    if (IsPlayerConnected(playerid))
    {
    if (PlayerInfo[playerid][pJob] == 3)
    {
    new pID;
    new String1[128];
    new String2[128];
    new CmdPlayer[MAX_PLAYER_NAME];
    new ThePlayer[MAX_PLAYER_NAME];
    if (sscanf(params, "d", pID))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Reparieren >SpielerID<");
    }
    if (!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Reparieren >SpielerID<");
    }
    GetPlayerName(playerid, ThePlayer, sizeof(ThePlayer));
    format(String1, sizeof(String1), "Du hast %s eine reperatur angeboten", ThePlayer);
    SendClientMessage(playerid, Farbe_Gruen, String1);
    GetPlayerName(playerid, CmdPlayer, sizeof(CmdPlayer));
    format(String2, sizeof(String2), "%s hat dir eine reperatur angeboten", CmdPlayer);
    SendClientMessage(pID, Farbe_Gruen, String2);
    }
    }
    return 1;
    }


    dcmd_Annehmen(playerid, params[])
    {
    if (IsPlayerConnected(playerid))
    {
    new ?;
    if (sscanf(params, "u ", ?)
    {
    SendClientMessage(playerid, Farbe_WEis, "SERVER: /Annehmen >?<");
    SendClientMessage(playerid, Farbe_Grad1, "?: Reperatur");
    }
    if (? == Reperatur)
    {
    // ...
    }
    }
    return 1;
    }
    // Edit: Jo hab mir grad nomma gedanken gemacht und n bissel bearbeitet. Blos weiter weis ich nicht mehr XD


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

    Einmal editiert, zuletzt von SmArTi ()

  • Eine globale Variable erstellen:
    new Accept[MAX_PLAYERS];


    Im Befehl auf 1 setzen. Dann beo OnPlayerText:
    public OnPlayerText(playerid,text[])
    {
    if(Accept[playerid] == 1)
    {
    if(strcmp(text,"annehmen reperatur") == 0)
    {
    // hier wenn er die reperatur annimmt
    }
    else if(strcmp(text,"ablehnen reperatur") == 0)
    {
    // hier wenn er ablehnt
    }
    return 1;
    }


    Dann halt ncoh beim Befehl hinschreiben, wie er annehmen oder ablehnen kann :D
    Dann geht das auch ohne Befehl, kann er einfach nur "annehmen reperatur" schreiben :D

  • 1. check ich jetzt net wirklich. n bissel erklärung wäre cool.
    2. Bringt mir nix, weil wenn Spieler B mehrere angebote bekommt wie z. B. ticket oda dorgen oda waffen oda so
    dann soll er unter denen auswählen können.


    Nagut mal anders:


    Spieler A ist Mechaniker
    Spieler B ist Kunde


    Spieler B hat ein Auto und möchte es von Spieler A umlakieren lassen. A macht /Lakieren (ID von Spieler B) (Farbe1) (Farbe2). Spieler B macht /akzeptieren lakierung.
    Auto von Spieler B wird in Farbe1 und Farbe2 die Spieler A ausgewählt hat umlakiert.


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

    Einmal editiert, zuletzt von SmArTi ()

  • Kann mir niemand helfen?


    Okay nach dem ich eh schon eine Verwarnung wegen dem Angeblichen PUSH bekommen habe (was ich nach 2 Tagen warten unfair finde) kann ich ja nochmal bearben ;)


    Ich hab mich jetzt nochmal dahinter gesetzt und versucht es zum laufen zu bringen. So sieht es eigendlich alles okay aus aber es klappt einfach nicht.
    new gLFarbe1[MAX_PLAYERS];
    new gLFarbe2[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    gLFarbe1[playerid] = 127;
    gLFarbe2[playerid] = 127;
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    dcmd(Lackieren, 9, cmdtext);
    return 1;
    }


    dcmd_Lackieren(playerid, params[])
    {
    if (PlayerInfo[playerid][pJob] == 3)
    {
    new String1[128];
    new String2[128];
    new pID, Farbe1, Farbe2;
    new CmdPlayer[128];
    new ThePlayer[128];
    if (sscanf(params, "ddd", pID, Farbe1, Farbe2))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Lackieren >SpielerID< >Farbe 1 (-1 bis 126)< >Farbe 2 (-1 bis 126)<");
    }
    if (!IsPlayerConnected(pID))
    {
    return SendClientMessage(playerid, Farbe_Grad1, "Die SpielerID ist nicht vergeben!");
    }
    if (Farbe1 <= -1 || Farbe1 >= 126)
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Lackieren >Farbe 1 (-1 bis 126)<");
    }
    if (Farbe2 <= -1 || Farbe2 >= 126)
    {
    return SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Lackieren >Farbe 2 (-1 bis 126)<");
    }
    gLFarbe1[pID] = Farbe1;
    gLFarbe2[pID] = Farbe2;
    GetPlayerName(pID, CmdPlayer, sizeof(CmdPlayer));
    GetPlayerName(playerid, ThePlayer, sizeof(ThePlayer));
    format(String1, sizeof(String1), "Du hast %s die Farben #%d und #%d zur Lackierung angeboten", ThePlayer);
    SendClientMessage(playerid, Farbe_Gruen, String1);
    format(String2, sizeof(String2), "%s hat dir die Farben #%d und #%d zur Lackierung angeboten", CmdPlayer);
    SendClientMessage(pID, Farbe_Gruen, String2);
    SendClientMessage(pID, Farbe_Gruen, "Du kannst mit /Annehmen >Lackierung< das Angebot annehmen");
    }
    return 1;
    }


    dcmd_Annehmen(playerid, params[])
    {
    if (IsPlayerConnected(playerid))
    {
    new Angebot;
    new Lackierung, Vertrag;
    if (sscanf(params, "s", Angebot))
    {
    SendClientMessage(playerid, Farbe_Grad1, "SERVER: /Annehmen >Angebot<");
    SendClientMessage(playerid, Farbe_Grad1, "Angebote: Lakierung | Vertrag");
    }
    if (Angebot == Lackierung)
    {
    if (gLFarbe1[playerid] != 127 && gLFarbe2[playerid] != 127)
    {
    ChangeVehicleColor(GetPlayerVehicleID(playerid), gLFarbe1[playerid], gLFarbe2[playerid]);
    SendClientMessage(playerid, Farbe_Gruen, "Du hast das Auto erfolgreich umlackiert");
    }
    else
    {
    SendClientMessage(playerid, Farbe_Rot, "Du hast kein Angebot bekommen");
    }
    }
    }
    return 1;
    }
    Ich hab keine ahnung warum es nicht klappt


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

    Einmal editiert, zuletzt von SmArTi ()

  • if (Angebot == Lackierung)
    funktioniert nicht, wie es mit sscanf jetzt aussieht, weiß ich nicht, dafür aber mit strget^^
    if(!strcmp(strget(params,0),"lackierung")) {
    Und am besten machst du auch noch etwas, damit der Server weiß, dass dir jemand eine Lackierung angeboten hat:
    new lackierungsangebot[MAX_PLAYERS]//oder so^^

  • 1. Danke das du es versucht hast
    2. strok kenn ich mich net aus wäre cool wenn du mir helfen könntest. ich schreib dir ne pm
    3. ich wollte auch das es erst ma klappt bevor ich so was wie Lackierungsangebot mach ;)


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • Ich muss das hier noch mal ausgraben, also ich möchte so machen das wenn das auto bei einem bestimmten health quasi wenn das schwarz raucht das kommen soll: Dein Auto is schrott du musst ein Mechaniker rufen!
    und das es ein dann freezt und wenn er wieder einsteigt das es halt immer freezt.
    //edit: geht auch gleich das die nachricht automatisch an ein on duty mechaniker geht?


    MfG HEiTZER

    Einmal editiert, zuletzt von KiiiiNG HEiiiiTZER ()