[SAMMELTHREAD] Kleine Scripting Fragen

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Moin


    Brauche einen Carinfo Befehl (/carinfo)


    Funktion : /Carinfo [ID] *
    ID = Die Fahrzeug ID bei /dl


    Rein Sollte : Besitzer / Model / ID Beispiel : http://gyazo.com/7a783c74f1cf6d5a67bf598e09000e6a


    enum cInfo
    {
    CarId,
    CarOwner[MAX_PLAYER_NAME],
    CarModel,
    Float:CarPos_x,
    Float:CarPos_y,
    Float:CarPos_z,
    Float:CarRotate,
    CarNitro,
    CarHyd,
    CarWheel,
    CarAusp,
    CarSideL,
    CarSideR,
    CarFB,
    CarRB,
    CarSpoiler,
    CarRoof,
    CarHood,
    CarVents,
    CarLamps,
    CarPJ,
    CarC1,
    CarC2,
    CarPreis,
    CarTank,
    CarMaxTank,
    CarState
    }
    new PlayerCar[MAX_PLAYERS][MaxVeh][cInfo];

    Lg
    Jeffry @:Jeffry Jeffry ne idee?

  • Naja, um an den Index zu kommen:
    new id;
    for(new i=0; i<MaxVeh;i++)
    {
    if(PlayerCar[playerid][i][CarId] == GetPlayerVehicleID(playerid))
    {
    id = i;
    break;
    }
    }
    //Und dann hier eben alles auslesen, zum Beispiel "PlayerCar[playerid][id][CarOwner]" oder so...



    Pr0x: Das scheint ein Sprite zu sein, sonst wüsste ich nicht wie das geht. Kannst ja mal schauen ob du da eins findest.



    EDIT:
    Crocky:
    Das was du mir geschickt hast, etwas erweitert:

    Spoiler anzeigen
    ocmd:carinfo(playerid, params[])
    {
    new pID;
    if(!Spieler[playerid][Team] == 7)return SendClientMessage(playerid,ROT,"Du bist kein Ordnungsbeamter!");
    if(sscanf(params, "u", pID)) return SendClientMessage(playerid,ROT,"/carinfo [Spieler]");
    //Abfragen ob der Spieler online ist...
    new id;
    for(new i=0; i<MaxVeh;i++)
    {
    if(PlayerCar[pID][i][CarId] == GetPlayerVehicleID(pID))
    {
    id = i;
    break;
    }
    }
    new str[512];
    format(str, sizeof(str), "Besitzer: %s (ID: %D)\n", SpielerName(pID), pID);
    format(str, sizeof(str), "%sTank: %d\n", str, PlayerCar[pID][id][CarTank]);
    format(str, sizeof(str), "%sPreis: %d\n", str, PlayerCar[pID][id][CarPreis]);
    //...
    ShowPlayerDialog(playerid, DIALOG_CARINFO, DIALOG_STYLE_MSGBOX, "Carinfo", str, "Ok", "");
    return 1;
    }


    Das sollte reichen damit du den Rest fertig machen kannst. Ansonsten einfach hier Bescheid geben.
    PMs kann ich dir keine mehr schicken, da du es auf "Nur Freunde" umgestellt hast.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Ich habe dieses Include in mein Script eingefügt: [ INCLUDE ] Anti-Cheat v3.3.1 - Der sichere Weg, den Server zu schützen!
    Seitdem ich das include eingespielt hab, wird die Kamera nicht mir gesetzt.
    Habe ein include, Namens camfix drinnen, kann das sein das sich das include irgendwie überschneidet?


  • Hey, Also, es klappt zwar (Dialog kommt)
    Aber habe eine Frage ...
    Wollte den Befehl so, das man das per CAR ID (Die erste bei DL - Auf dem Bild 241 ******
    Sprich /carinfo 241 -> Dann soll es den Besitzer Anzeigen.
    P.s Tank/Preis werden nicht Angezeigt, da steht "0"


    ***
    MfG :D

  • Das Problem ist ohne dieses Anticheat Include funktioniert alles !


    Der Anti Cheat an sich hat sehr viele Probleme (je nach dem wie viele bereits behoben sind), und wenn es ohne den geht dann liegt es wohl daran, ja.
    Ich kann mir vorstellen, dass da ein Hook nicht klappt, oder eine Funktion nicht richtig aufgerufen oder durchgeführt wird. Am besten du kontaktierst ErikSon direkt, oder du debuggst das alles mal, aber das ist, je nach dem wie groß dein Code ist, ein ziemlicher Aufwand.



    Crocky:
    Dann musst du es so schreiben:

    Spoiler anzeigen
    ocmd:carinfo(playerid, params[])
    {
    new vID;
    if(!Spieler[playerid][Team] == 7)return SendClientMessage(playerid,ROT,"Du bist kein Ordnungsbeamter!");
    if(sscanf(params, "d", vID)) return SendClientMessage(playerid,ROT,"/carinfo [VehicleID]");
    //Abfragen ob der Spieler online ist...
    new id, pID;
    for(new p = 0; p<MAX_PLAYERS; p++)
    {
    if(IsPlayerConnected(p))
    {
    for(new i=0; i<MaxVeh;i++)
    {
    if(PlayerCar[p][i][CarId] == vID)
    {
    id = i;
    pID = p;
    break;
    }
    }
    }
    }
    new str[512];
    format(str, sizeof(str), "Besitzer: %s (ID: %D)\n", SpielerName(pID), pID);
    format(str, sizeof(str), "%sModel ID: %d\n", str, PlayerCar[pID][id][CarModel]);
    format(str, sizeof(str), "%sTank: %d\n", str, PlayerCar[pID][id][CarTank]);
    format(str, sizeof(str), "%sPreis: %d\n", str, PlayerCar[pID][id][CarPreis]);
    //...
    ShowPlayerDialog(playerid, DIALOG_CARINFO, DIALOG_STYLE_MSGBOX, "Carinfo", str, "Ok", "");
    return 1;
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()


  • Funktioniert - Danke :)
    ocmd:carinfo(playerid, params[])
    {
    new vID;
    new id, pID;
    new str[512];
    if(!Spieler[playerid][Team] == 7)return SendClientMessage(playerid,ROT,"Du bist kein Ordnungsbeamter!");
    if(sscanf(params, "d", vID)) return SendClientMessage(playerid,ROT,"/carinfo [VehicleID]");
    for(new p = 0; p<MAX_PLAYERS; p++)
    {
    if(IsPlayerConnected(p))
    {
    for(new i=0; i<MaxVeh;i++)
    {
    if(PlayerCar[p][i][CarId] == vID)
    {
    id = i;
    pID = p;
    break;
    }
    }
    }
    }
    format(str, sizeof(str), "Besitzer: %s (ID: %d)\n", SpielerName(pID), pID);
    format(str, sizeof(str), "%sModel ID: %d | Name %s \n", str, PlayerCar[pID][id][CarModel],PlayerCar[pID][id][Name]);
    format(str, sizeof(str), "%sTank: %d/%d\n", str, PlayerCar[pID][id][CarTank],PlayerCar[pID][id][CarMaxTank]);
    format(str, sizeof(str), "%sNeupreis: %d\n", str, PlayerCar[pID][id][CarPreis]);
    ShowPlayerDialog(playerid, DIALOG_CARINFO, DIALOG_STYLE_MSGBOX, "Carinfo", str, "Ok", "");
    return 1;
    }
    Frage : Kannst du mir noch Helfen, das wenn es keinem Spieler Gehört - die Fraktion angezeigt wird?
    Fraktions IDS Wären

    else if(team == 1){ ftext ="Polizei"; }
    else if(team == 2){ ftext ="FBI"; }
    else if(team == 3 ){ ftext ="Sanitäter"; }
    else if(team == 4 ){ ftext ="Hitman"; }
    else if(team == 5 ){ ftext ="News Reporter"; }
    else if(team == 6 ){ ftext ="Transport GmbH"; }
    else if(team == 7 ){ ftext ="Ordnungsamt"; }
    else if(team == 8 ){ ftext ="Russen Mafia"; }
    else if(team == 9 ){ ftext ="Yakuza"; }
    else if(team == 10){ ftext ="Ballas"; }
    else if(team == 11){ ftext ="Grove Street"; }
    else if(team == 12){ ftext ="Los Chickos Malos "; }
    else if(team == 13){ ftext ="Feuerwehr"; }
    else if(team == 14){ ftext ="Bundeswehr"; }
    else if(team == 15){ ftext ="SWAT"; }
    else if(team == 16){ ftext ="Punkx Bikergang"; }
    else if(team == 17){ ftext ="Aztecas"; }
    else if(team == 18){ ftext ="Vagos"; }
    else if(team == 19){ ftext ="West Coast Custom"; }
    else if(team == 20){ ftext ="Präsident"; }
    else if(team == 21){ ftext ="Al Qaida"; }


    Fahrzeug Definierungen :

    new lspdcars[22];
    new praesicars[11];
    new gmbhcars[4];
    new gmbhcars4[4];
    new Ballascars[22];
    new fbicars[19];
    new sanicars[18];
    new hitmancars[17];
    new newscars[11];
    new oamtcars[15];
    new Yakucars[12];
    new LCMcars[12];


    Wenn es keiner Fraktion gehört könnte da noch stehen das es ein Adminfahrzeug ist?
    Wäre mega :D

  • Kanns dir nur ziemlich allgemein sagen, aber so sollte es passen:

    Spoiler anzeigen
    ocmd:carinfo(playerid, params[])
    {
    new vID;
    new id, pID=-1, team=-1, ftext[32];
    new str[512];
    if(!Spieler[playerid][Team] == 7)return SendClientMessage(playerid,ROT,"Du bist kein Ordnungsbeamter!");
    if(sscanf(params, "d", vID)) return SendClientMessage(playerid,ROT,"/carinfo [VehicleID]");
    for(new p = 0; p<MAX_PLAYERS; p++)
    {
    if(IsPlayerConnected(p))
    {
    for(new i=0; i<MaxVeh;i++)
    {
    if(PlayerCar[p][i][CarId] == vID)
    {
    id = i;
    pID = p;
    break;
    }
    }
    }
    }
    if(pID != -1)
    {
    format(str, sizeof(str), "Besitzer: %s (ID: %d)\n", SpielerName(pID), pID);
    format(str, sizeof(str), "%sModel ID: %d | Name %s \n", str, PlayerCar[pID][id][CarModel],PlayerCar[pID][id][Name]);
    format(str, sizeof(str), "%sTank: %d/%d\n", str, PlayerCar[pID][id][CarTank],PlayerCar[pID][id][CarMaxTank]);
    format(str, sizeof(str), "%sNeupreis: %d\n", str, PlayerCar[pID][id][CarPreis]);
    }
    else
    {
    for(new i=0; i<sizeof(lspdcars); i++)
    {
    if(lspdcars[i] == vID)
    {
    team = 1; //jeweils anpassen
    goto AFTERALLLOOPS;
    }
    }
    //usw...mit allen deinen Fahrzeugvariablen für die Fraktionen


    AFTERALLLOOPS:
    if(team == 1){ ftext ="Polizei"; }
    else if(team == 2){ ftext ="FBI"; }
    else if(team == 3 ){ ftext ="Sanitäter"; }
    else if(team == 4 ){ ftext ="Hitman"; }
    else if(team == 5 ){ ftext ="News Reporter"; }
    else if(team == 6 ){ ftext ="Transport GmbH"; }
    else if(team == 7 ){ ftext ="Ordnungsamt"; }
    else if(team == 8 ){ ftext ="Russen Mafia"; }
    else if(team == 9 ){ ftext ="Yakuza"; }
    else if(team == 10){ ftext ="Ballas"; }
    else if(team == 11){ ftext ="Grove Street"; }
    else if(team == 12){ ftext ="Los Chickos Malos "; }
    else if(team == 13){ ftext ="Feuerwehr"; }
    else if(team == 14){ ftext ="Bundeswehr"; }
    else if(team == 15){ ftext ="SWAT"; }
    else if(team == 16){ ftext ="Punkx Bikergang"; }
    else if(team == 17){ ftext ="Aztecas"; }
    else if(team == 18){ ftext ="Vagos"; }
    else if(team == 19){ ftext ="West Coast Custom"; }
    else if(team == 20){ ftext ="Präsident"; }
    else if(team == 21){ ftext ="Al Qaida"; }

    if(team != -1)
    {
    format(str, sizeof(str), "Fraktion: %s (ID: %d)\n", ftext, team);
    //Für mehr Informationen musst du es wie bei den PlayerCars machen...
    }
    else
    {
    format(str, sizeof(str), "Admincar\n");
    //Für mehr Informationen musst du es wie bei den PlayerCars machen...
    }
    }
    ShowPlayerDialog(playerid, DIALOG_CARINFO, DIALOG_STYLE_MSGBOX, "Carinfo", str, "Ok", "");
    return 1;
    }


    Nutze für solche Fragen übrigens ab nächstes mal einen eigenen Thread, da dies definitiv keine kleine Scripting Frage ist, wie du auch an der Länge des Codes sehen kannst.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry () aus folgendem Grund: Fehlendes = hinzugefügt.


  • Hey,
    C:\Users\Dome\Desktop\Gamemode.pwn(3826) : error 001: expected token: ";", but found "-"
    C:\Users\Dome\Desktop\Gamemode.pwn(3826) : warning 215: expression has no effect
    C:\Users\Dome\Desktop\Gamemode.pwn(3826) : error 017: undefined symbol "ftext"
    C:\Users\Dome\Desktop\Gamemode.pwn(3826) : warning 215: expression has no effect
    C:\Users\Dome\Desktop\Gamemode.pwn(3826) : error 001: expected token: ";", but found "]"
    C:\Users\Dome\Desktop\Gamemode.pwn(3826) : fatal error 107: too many error messages on one line


    Zeile :
    new id, pID=-1, team-1, ftext[32];
    mFG

  • Zitiere doch bitte nicht den ganzen Post mit allen Codes, das wird so unübersichtlich und man muss meterlang scrollen. Danke. :|


    Zwecks der Errors, mein Fehler:
    new id, pID=-1, team-1, ftext[32];
    zu:
    new id, pID=-1, team=-1, ftext[32];


    Da hat das Gleichzeichen gefehlt.

  • Wie kann ich bei dem folgenden Code einfügen, dass auch ein bestimmter Name den Befehl ausführen kann:
    if(!strcmp(cmdtext, "aconfig", true))
    {
    if(GetPVarInt(playerid,"SpielerAdmin")<MAX_ADMIN_LEVEL) return SendRightError(playerid,MAX_ADMIN_LEVEL);
    SetPVarInt(playerid,"PlayerStep",1);
    return ShowPlayerDialogEx(playerid,ConfigDialog,DIALOG_STYLE_LIST,"Admin.config",ConfigMenuText,"Wählen","Zurück");
    }

  • Beitrag von Kinimod ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.