Kann mir jemand diesen Code erklären?

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,


    Ich habe ein Stück Code gefunden und es ist genau das was ich schon immer gesucht habe, allerdings verstehe ich eine Sache nicht ganz und ich möchte ihn gerne so umschreiben, das bestimmte Fahrzeuge von Spielern gespawnt werden können, aber ALLE von Admins gespawbn werden können. Der Sinn sollte klar sein.


    Dieser Code ist von "BlackHuhn" aus dem Thread "Nützliche Codeschnipsel": Was ich nicht verstehe, ist mir Kommentren versehen.


    {
    new Float:vehx,Float:vehy,Float:vehz;
    new vehid,cc1,cc2,string[128]; //Werden in diesem New 4 Variablen definiert?
    if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, rot,"Benutzung: /veh [Vehicle ID] [Farbe 1] [Farbe 2]"); // Woher weiß das Script was VehID,cc1,cc2 hier bedeutet. Wo ist es definiert?
    GetPlayerPos(playerid,vehx,vehy,vehz);
    new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1);
    SetVehicleNumberPlate(carid,"~>Admin<~");
    PutPlayerInVehicle(playerid, carid, 0);
    format(string,sizeof(string),"[AdmCmd] Du hast ein Admincar gespawnt! (FahrzeugID :%d)",GetVehicleModel(GetPlayerVehicleID(playerid)));
    SendClientMessage(playerid,rot,string);
    return 1;
    }

  • {
    new Float:vehx,Float:vehy,Float:vehz; //neue Koordinaten werden erstellt
    new vehid,cc1,cc2,string[128]; //neue vehicleid + 2 farben + string wird definiert
    if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, rot,"Benutzung: /veh [Vehicle ID] [Farbe 1] [Farbe 2]"); // hier wird abgefragt ob man den befehl richtig eingegeben hat. iii steht für zahl,zahl,zahl (carid,color1,color2)
    GetPlayerPos(playerid,vehx,vehy,vehz); //Position vom Spieler wird ermittelt.
    new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1); //neues auto mit der position vom spieler und den Farbzahlen die oben eingeben wurden wird erstellt, + variable new carid wird genutzt um zB weitere Attribute des Autos zu verändern
    SetVehicleNumberPlate(carid,"~>Admin<~"); //NUmmernschild wird gesetzt
    PutPlayerInVehicle(playerid, carid, 0); //Spieler wird in Fahrzeug (carid, was gerade erstellt wurde) gesetzt
    format(string,sizeof(string),"[AdmCmd] Du hast ein Admincar gespawnt! (FahrzeugID :%d)",GetVehicleModel(GetPlayerVehicleID(playerid))); //String wird formatiert.
    SendClientMessage(playerid,rot,string); //string wird gesendet
    return 1;
    }


    - Tom

  • Generell ist es so, dass es das Script nicht weiß.
    Das Script weiß nur: Aha, 3 Integer. Die Frage ist, wie diese danach genutzt werden.


    new carid = CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1);


    Hier sieht man, dass er alle diese Variablen verwendet. vehid, cc1,cc2. Alles Integer. Diese könnte man jetzt auch für andere Dinge verwenden. Sie sind nicht fest auf die Funktion gebunden. Das sind keine Variablen. Du kannst einen Integer beispielsweise als Playerid, sowohl auch als Colorid benutzen.


    (Wenn ich deine Frage richtig verstanden habe :P)


    Es gibt grundsätzlich folgende Variablen:


    Integer - Zahlen
    Strings - Zeichenketten
    Booleans - True/False-Statements
    Floats - Kommazahl

  • Was mir hier nicht einleuchtet, ist woher das Script weiß, dass die Variable "VehID" eine Auto ID sein soll...


    Es steht nirgends: VehID = AutoID; oder so.


    Sondern die ID wird direkt nach dem deklarieren genutzt.

  • Pass auf:


    Mit


    if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid, rot,"Benutzung: /veh [Vehicle ID] [Farbe 1] [Farbe 2]");


    sagst du das wenn der Befehl /veh eingegeben wird folgende Parameter verwendet werden. VehID, Color1,Color2. Folgendermaßen definiert: vehid, cc1,cc2.


    wenn jmd. nun /veh eingibt und 3 parameter in Form einer Zahl eingibt (es müssen zahlen sein da nach params, drei mal "i" steht, was integer (Zahl) bedeutet)
    Die erste Zahl nach /veh die eingegeben wurde ist nun als vehid definiert. Also hast du /veh 522 0 0 eingegeben ist vehid == 522.
    Diese Variable kannst du nun nutzen um ein Auto zu erstellen also wie im Beispiel von dir:


    CreateVehicle(vehid,vehx,vehy,vehz,3,cc1,cc2,-1);


    Er erstellt ein auto mit der Zahl die in vehid gespeichert wurde (bei meinem Beispiel jetzt 522), dann halt noch die Positionen wohin es gespawnt werden soll (dazu wurden die Spieleraten ausgelesen)
    und zuletzt noch die Farben die ebenfalls in Variablen gespeichert wurden genau nach dem Prinzip wie bei vehid.


    Alles klar? :thumbup:


    - Tom