Dynamisches Fraktionsfahrzeug-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
  • Hallo Breadfish,
    ich habe schon öfter mal gelesen das hier einige ein Fraktionsfahrzeug-System suchen und noch mehr Dynamische Systeme suchen.
    Ich dachte mir dann das ich euch mal dieses Tutorial mache.


    Was benötige ich?
    -dini (Grundkenntnisse)
    -PAWNO Erfahrung (Grundkenntnisse)
    -Das include: ocmd
    -Einen Ordner namens:"Fraktionsautos"
    (nur zum Testen wenn ihr es testen wollt)-Einen Ordner namens:"SAPD"(für die cars des SAPD's)




    Fangen wir mal an:


    als erstes definieren wir mal unsere maximalen Fraktionsautos.
    #define MAX_FRAKTCARS 20 //Die 20 kann geändert werden auf eure maximalen Fraktionfahrzeuge


    So weiter gehts mit dem enum und die news für die Fraktionsfahrzeuge.
    new SAPDcar[MAX_FRAKTCARS]; //Für die SAPD Cars
    enum Fraktcars{modelid,Float:fposx,Float:fposy,Float:fposz,Float:fposa,Spoiler,Hood,Roof,Sideskirt,Lamps,Nitro,Exhaust,Wheels,Stereo,Hydraulics,FrontBumper,RearBumper,VentRight,VentLeft}
    new Fraktautos[MAX_FRAKTCARS][7][Fraktcars]; //Die 7 ist die anzahl der Fraktionen (kann also auch geändert werden)



    Ich hoffe das mit dem enum erklärt sich von alleine.
    Wenn das bei euch nicht der Fall ist solltet ihr das schnell lernen wenn ihr selber auch Dynamische Systeme machen wollt...


    Dann kommt bei OnGameModeInit das hin:
    Ich mache es mal wie es bei mir ist für das SAPD
    for(new i=0;i<MAX_FRAKTCARS;i++) //Geht alle Zahlen von 0 bis die zahl die bei MAX_FRAKTCARS steht { new Fraktauto[200]; format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i); //Solltet ihr wissen ;) if(dini_Exists(Fraktauto)) { Fraktautos[i][1][modelid] = dini_Int(Fraktauto,"modelid"); Fraktautos[i][1][fposx] = dini_Float(Fraktauto,"FPosX"); Fraktautos[i][1][fposy] = dini_Float(Fraktauto,"FPosY"); Fraktautos[i][1][fposz] = dini_Float(Fraktauto,"FPosZ"); Fraktautos[i][1][fposa] = dini_Float(Fraktauto,"FPosA"); Fraktautos[i][1][Spoiler] = dini_Int(Fraktauto,"Spoiler"); Fraktautos[i][1][Hood] = dini_Int(Fraktauto,"Hood"); Fraktautos[i][1][Roof] = dini_Int(Fraktauto,"Roof"); Fraktautos[i][1][Sideskirt] = dini_Int(Fraktauto,"Sideskirt"); Fraktautos[i][1][Lamps] = dini_Int(Fraktauto,"Lamps"); Fraktautos[i][1][Nitro] = dini_Int(Fraktauto,"Nitro"); Fraktautos[i][1][Exhaust] = dini_Int(Fraktauto,"Exhaust"); Fraktautos[i][1][Wheels] = dini_Int(Fraktauto,"Wheels"); Fraktautos[i][1][Stereo] = dini_Int(Fraktauto,"Stereo"); Fraktautos[i][1][Hydraulics] = dini_Int(Fraktauto,"Hydraulics"); Fraktautos[i][1][FrontBumper] = dini_Int(Fraktauto,"FrontBumper"); Fraktautos[i][1][RearBumper] = dini_Int(Fraktauto,"RearBumper"); Fraktautos[i][1][VentRight] = dini_Int(Fraktauto,"VentRight"); Fraktautos[i][1][VentLeft] = dini_Int(Fraktauto,"VentLeft"); SAPDcar[i] = AddStaticVehicleEx(Fraktautos[i][1][modelid],Fraktautos[i][1][fposx],Fraktautos[i][1][fposy],Fraktautos[i][1][fposz],Fraktautos[i][1][fposa],0,1,-1); SetVehicleNumberPlate(SAPDcar[i],"SAPD"); } }



    So jetzt hat er das Auto erstellt und die Sachen des enums richtig definiert...
    Jetzt muss das alles ja auch noch alle beim runterfahren des Servers gespeichert werden.


    Dazu gehen wir unter OnGameModeExit...
    Da macht ihr dann folgendes:
    for(new i=0;i<MAX_FRAKTCARS;i++) { new Fraktauto[200]; format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i); if(dini_Exists(Fraktauto)) { dini_IntSet(Fraktauto,"modelid",Fraktautos[i][1][modelid]); dini_FloatSet(Fraktauto,"FPosX",Fraktautos[i][1][fposx]); dini_FloatSet(Fraktauto,"FPosY",Fraktautos[i][1][fposy]); dini_FloatSet(Fraktauto,"FPosZ",Fraktautos[i][1][fposz]); dini_FloatSet(Fraktauto,"FPosA",Fraktautos[i][1][fposa]); dini_IntSet(Fraktauto,"Spoiler",GetVehicleComponentInSlot(SAPDcar[i],0)); //GetVehicleComponentInSlot bedeutet das er das Tuning des angegebenen Slots heraus findet dini_IntSet(Fraktauto,"Hood",GetVehicleComponentInSlot(SAPDcar[i],1)); dini_IntSet(Fraktauto,"Roof",GetVehicleComponentInSlot(SAPDcar[i],2)); dini_IntSet(Fraktauto,"Sideskirt",GetVehicleComponentInSlot(SAPDcar[i],3)); dini_IntSet(Fraktauto,"Lamps",GetVehicleComponentInSlot(SAPDcar[i],4)); dini_IntSet(Fraktauto,"Nitro",GetVehicleComponentInSlot(SAPDcar[i],5)); dini_IntSet(Fraktauto,"Exhaust",GetVehicleComponentInSlot(SAPDcar[i],6)); dini_IntSet(Fraktauto,"Wheels",GetVehicleComponentInSlot(SAPDcar[i],7)); dini_IntSet(Fraktauto,"Stereo",GetVehicleComponentInSlot(SAPDcar[i],8)); dini_IntSet(Fraktauto,"Hydraulics",GetVehicleComponentInSlot(SAPDcar[i],9)); dini_IntSet(Fraktauto,"FrontBumper",GetVehicleComponentInSlot(SAPDcar[i],10)); dini_IntSet(Fraktauto,"RearBumper",GetVehicleComponentInSlot(SAPDcar[i],11)); dini_IntSet(Fraktauto,"VentRight",GetVehicleComponentInSlot(SAPDcar[i],12)); dini_IntSet(Fraktauto,"VentLeft",GetVehicleComponentInSlot(SAPDcar[i],13)); } }



    So jetzt lädt und speichert er das Fahrzeug wenn es existiert...
    Das bringt uns aber noch nichts da wir noch keine erstellen können.


    Dazu brauchen wir jetzt auch ocmd...
    Ihr macht dann mit ocmd folgendes:
    ocmd:createfcar(playerid,params[]){ if(isPlayerAnAdmin(playerid,6)) //Müsst ihr nach eurer Adminabfrage machen { new fraktid; new mid; if(sscanf(params,"ii",fraktid,mid)) //Wenn der z.b. nur "/createfcar" eingibt { SendClientMessage(playerid,CMD,"/createfcar [Frakt-ID][Model-ID]"); //Müsst ihr für euren Server ändern SendClientMessage(playerid,BLAU,"Fraktion 1:SAPD"); SendClientMessage(playerid,BLAU,"Fraktion 2:Grove Street"); SendClientMessage(playerid,BLAU,"Fraktion 3:Rollin' Heigths Ballas"); SendClientMessage(playerid,BLAU,"Fraktion 4:Varrios Los Aztecas"); SendClientMessage(playerid,BLAU,"Fraktion 5:Los Santos Vagos"); SendClientMessage(playerid,BLAU,"Fraktion 6:Army"); } else { if(fraktid < 1 || fraktid > 6)return SendClientMessage(playerid,ROT,"Frakt-ID kann nicht über 6 oder unter 1 sein."); if(mid < 400 || mid > 611)return SendClientMessage(playerid,ROT,"Model-ID kann nicht über 611 oder unter 400 sein."); //Da die Vehicles nur von 400-611 gehen CreateFCar(playerid,fraktid,mid); //wird gleich gezeigt was das ist... } } return 1;}



    Und noch zum destroyen des Vehicles:


    ocmd:desfcar(playerid,params[]){ if(isPlayerAnAdmin(playerid,6)) //Muss angepasst werden { if(IsPlayerInAnyVehicle(playerid)) { new veh=GetPlayerVehicleID(playerid); //Definiert veh als GetPlayerVehicleID new Fraktauto[200]; for(new i=0;i<MAX_FRAKTCARS;i++) { if(veh==SAPDcar[i]) //Wenn der in irgendeinem SAPDcar ist { format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i); dini_Remove(Fraktauto); DestroyVehicle(SAPDcar[i]); SendClientMessage(playerid,GELB,"Fraktionsauto erfolgreich gelöscht."); } //Zerstört der das Vehicle und die Veh-Datei } } }}



    Jetzt kann das Vehicle erstellt und gelöscht werden.
    Nun zeige ich euch noch den stock CreateFCar(playerid,fraktid,mid);
    stock CreateFCar(playerid,fraktid,mid){ new Fraktauto[200]; new Float:x,Float:y,Float:z,Float:a; GetPlayerPos(playerid,x,y,z); //Findet die Position für den Spieler heraus damit er weiß wo das auto hin muss GetPlayerFacingAngle(playerid,a); //Da die Blickrichtung auch für das Auto if(fraktid!=0) //Damit es nicht geht als Zivicar { for(new i=0;i<MAX_FRAKTCARS;i++) { if(fraktid==1) { format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i); if(!dini_Exists(Fraktauto)) //Wenn die Fahrzeugid noch nicht vergeben ist { dini_Create(Fraktauto); //Er Createt die Datei dini_IntSet(Fraktauto,"modelid",mid); dini_FloatSet(Fraktauto,"FPosX",x); dini_FloatSet(Fraktauto,"FPosY",y); dini_FloatSet(Fraktauto,"FPosZ",z); dini_FloatSet(Fraktauto,"FPosA",a); dini_IntSet(Fraktauto,"Spoiler",0); dini_IntSet(Fraktauto,"Hood",0); dini_IntSet(Fraktauto,"Roof",0); dini_IntSet(Fraktauto,"Sideskirt",0); dini_IntSet(Fraktauto,"Lamps",0); dini_IntSet(Fraktauto,"Nitro",0); dini_IntSet(Fraktauto,"Exhaust",0); dini_IntSet(Fraktauto,"Wheels",0); dini_IntSet(Fraktauto,"Stereo",0); dini_IntSet(Fraktauto,"Hydraulics",0); dini_IntSet(Fraktauto,"FrontBumper",0); dini_IntSet(Fraktauto,"RearBumper",0); dini_IntSet(Fraktauto,"VentRight",0); dini_IntSet(Fraktauto,"VentLeft",0); Fraktautos[i][1][modelid] = dini_Int(Fraktauto,"modelid"); Fraktautos[i][1][fposx] = dini_Float(Fraktauto,"FPosX"); Fraktautos[i][1][fposy] = dini_Float(Fraktauto,"FPosY"); Fraktautos[i][1][fposz] = dini_Float(Fraktauto,"FPosZ"); Fraktautos[i][1][fposa] = dini_Float(Fraktauto,"FPosA"); Fraktautos[i][1][Spoiler] = dini_Int(Fraktauto,"Spoiler"); Fraktautos[i][1][Hood] = dini_Int(Fraktauto,"Hood"); Fraktautos[i][1][Roof] = dini_Int(Fraktauto,"Roof"); Fraktautos[i][1][Sideskirt] = dini_Int(Fraktauto,"Sideskirt"); Fraktautos[i][1][Lamps] = dini_Int(Fraktauto,"Lamps"); Fraktautos[i][1][Nitro] = dini_Int(Fraktauto,"Nitro"); Fraktautos[i][1][Exhaust] = dini_Int(Fraktauto,"Exhaust"); Fraktautos[i][1][Wheels] = dini_Int(Fraktauto,"Wheels"); Fraktautos[i][1][Stereo] = dini_Int(Fraktauto,"Stereo"); Fraktautos[i][1][Hydraulics] = dini_Int(Fraktauto,"Hydraulics"); Fraktautos[i][1][FrontBumper] = dini_Int(Fraktauto,"FrontBumper"); Fraktautos[i][1][RearBumper] = dini_Int(Fraktauto,"RearBumper"); Fraktautos[i][1][VentRight] = dini_Int(Fraktauto,"VentRight"); Fraktautos[i][1][VentLeft] = dini_Int(Fraktauto,"VentLeft"); SAPDcar[i] = CreateVehicle(mid,x,y,z,a,0,1,-1); PutPlayerInVehicle(playerid,SAPDcar[i],0); return 1; } } } } return 1;}



    Für Gangs wäre es dann so (Das zeige ich euch nochmal dazu damit ihr wisst wie es aussieht wenn man das Fahrzeug tunen können soll):
    else if(fraktid==2) { format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/Grove/%d.ini",i); if(!dini_Exists(Fraktauto)) { dini_Create(Fraktauto); dini_IntSet(Fraktauto,"modelid",mid); dini_FloatSet(Fraktauto,"FPosX",x); dini_FloatSet(Fraktauto,"FPosY",y); dini_FloatSet(Fraktauto,"FPosZ",z); dini_FloatSet(Fraktauto,"FPosA",a); dini_IntSet(Fraktauto,"Spoiler",0); dini_IntSet(Fraktauto,"Hood",0); dini_IntSet(Fraktauto,"Roof",0); dini_IntSet(Fraktauto,"Sideskirt",0); dini_IntSet(Fraktauto,"Lamps",0); dini_IntSet(Fraktauto,"Nitro",0); dini_IntSet(Fraktauto,"Exhaust",0); dini_IntSet(Fraktauto,"Wheels",0); dini_IntSet(Fraktauto,"Stereo",0); dini_IntSet(Fraktauto,"Hydraulics",0); dini_IntSet(Fraktauto,"FrontBumper",0); dini_IntSet(Fraktauto,"RearBumper",0); dini_IntSet(Fraktauto,"VentRight",0); dini_IntSet(Fraktauto,"VentLeft",0); Fraktautos[i][2][modelid] = dini_Int(Fraktauto,"modelid"); Fraktautos[i][2][fposx] = dini_Float(Fraktauto,"FPosX"); Fraktautos[i][2][fposy] = dini_Float(Fraktauto,"FPosY"); Fraktautos[i][2][fposz] = dini_Float(Fraktauto,"FPosZ"); Fraktautos[i][2][fposa] = dini_Float(Fraktauto,"FPosA"); Fraktautos[i][2][Spoiler] = dini_Int(Fraktauto,"Spoiler"); Fraktautos[i][2][Hood] = dini_Int(Fraktauto,"Hood"); Fraktautos[i][2][Roof] = dini_Int(Fraktauto,"Roof"); Fraktautos[i][2][Sideskirt] = dini_Int(Fraktauto,"Sideskirt"); Fraktautos[i][2][Lamps] = dini_Int(Fraktauto,"Lamps"); Fraktautos[i][2][Nitro] = dini_Int(Fraktauto,"Nitro"); Fraktautos[i][2][Exhaust] = dini_Int(Fraktauto,"Exhaust"); Fraktautos[i][2][Wheels] = dini_Int(Fraktauto,"Wheels"); Fraktautos[i][2][Stereo] = dini_Int(Fraktauto,"Stereo"); Fraktautos[i][2][Hydraulics] = dini_Int(Fraktauto,"Hydraulics"); Fraktautos[i][2][FrontBumper] = dini_Int(Fraktauto,"FrontBumper"); Fraktautos[i][2][RearBumper] = dini_Int(Fraktauto,"RearBumper"); Fraktautos[i][2][VentRight] = dini_Int(Fraktauto,"VentRight"); Fraktautos[i][2][VentLeft] = dini_Int(Fraktauto,"VentLeft"); GScar[i] = CreateVehicle(mid,x,y,z,a,252,252,-1); PutPlayerInVehicle(playerid,GScar[i],0); AddVehicleComponent(GScar[i],Fraktautos[i][2][Spoiler]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Hood]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Roof]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Sideskirt]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Lamps]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Nitro]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Exhaust]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Wheels]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Stereo]); AddVehicleComponent(GScar[i],Fraktautos[i][2][Hydraulics]); AddVehicleComponent(GScar[i],Fraktautos[i][2][FrontBumper]); AddVehicleComponent(GScar[i],Fraktautos[i][2][RearBumper]); AddVehicleComponent(GScar[i],Fraktautos[i][2][VentRight]); AddVehicleComponent(GScar[i],Fraktautos[i][2][VentLeft]); return 1; } }


    Die Befehle sollten euch eigentlich bekannt sein wenn ihr mindestens die Grundkenntnisse von PAWN und dini kennt....



    So nun zeige ich euch noch wie man es umparken kann:
    if(strcmp(cmdtext,"/fpark",true) == 0 || strcmp(cmdtext,"/fparken",true) == 0) { if(isPlayerLeader(playerid)) { if(IsPlayerInAnyVehicle(playerid)) { new veh=GetPlayerVehicleID(playerid); new Float:x,Float:y,Float:z,Float:a; for(new i=0;i<MAX_FRAKTCARS;i++) { if(isPlayerInFrakt(playerid,1)) { if(veh==SAPDcar[i]) { new Fraktauto[200]; format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i); GetVehiclePos(SAPDcar[i],x,y,z); GetVehicleZAngle(SAPDcar[i],a); Fraktautos[i][1][fposx]=x; Fraktautos[i][1][fposy]=y; Fraktautos[i][1][fposz]=z; Fraktautos[i][1][fposa]=a; dini_FloatSet(Fraktauto,"FPosX",Fraktautos[i][1][fposx]); dini_FloatSet(Fraktauto,"FPosY",Fraktautos[i][1][fposy]); dini_FloatSet(Fraktauto,"FPosZ",Fraktautos[i][1][fposz]); dini_FloatSet(Fraktauto,"FPosA",Fraktautos[i][1][fposa]); } } } } } }




    Ich hoffe das bei euch alles geklappt hat.
    Wenn nicht schreibt mir eure Fehler bitte unter das Thread.
    Wenn ihr wollt das ich weitere Tutorials mache dann schreibt mir das bitte auch runter und sagt mir welche ihr haben wollt ;)


    Mit freundlichen Grüßen,
    PatoD


    //edit
    Bei allen bei denen Es nicht klappt..
    ändert:
    if(Fraktautos[i][Spoiler] >= 1000) { AddVehicleComponent(SAPDcar[i],Fraktautos[i][Spoiler]); }
    und die anderen in:
    if(Fraktautos[i][1][Spoiler] >= 1000) { AddVehicleComponent(SAPDcar[i],Fraktautos[i][Spoiler]); }

    Einmal editiert, zuletzt von PatoD ()

  • Nenne mir mal bitte den Grund.


    Etwa weil jetzt keiner mehr sich selber dran macht?


    //Edit
    Ich kann das nicht mehr ändern da irgend etwas da fail ist wenn ich es editieren will.


    Ich bitte einen Moderator oder höher es an zu passen.

  • Etwa weil jetzt keiner mehr sich selber dran macht?

    Genau aus dem Grund.
    Nun sagen alle 08/15 Server, sie haben als Feature ein Dynamisches Fraktionsfahrzeugesystem...


    Wer sein Gehirn anstrengt und sich mit Pawn befasst, könnte sowas aus dem A/O scripten...


    @BTT: Für die Mühe 4/10 Punkten
    Punktabzug für Unnötigkeit und fehlerhafte Einrückung der Quelltexte.


    //EDIT: Rechtschreibung

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

    Einmal editiert, zuletzt von Deadmau5 ()

  • Das mit dem PAWN Text ist irgendwie fail gegangen.
    Es war in der Vorschau ganz normal.
    Dann habe ich auf abschicken gedrückt und jetzt sieht es so aus.
    Tut mir wirklich leid aber ich kriege es nicht mehr editiert, da es bei mir abstürzt wenn ich es bearbeiten will.


  • Exakt!
    Und für die Leute die sowas noch nicht richtig können oder immer wieder Probleme haben, sollte man eindeutig ein Tutorial machen, wo weniger geschrieben, sondern mehr erklärt wird.
    Ich kenne Leute die schreiben jetzt bei jeder "sscanf(params,"")"-Abfrage irgendwelche Buchstaben hin, die sie irgendwo in einen Tutorial gesehen haben.


    Von mir bekommst du 3/10 Fischen nur, weil wenig erklärt wurde und es schon fast ein Copy & Paste Tutorial ist.


    End of Stream.
    Lolifreak.

  • Naja so lange ihr es gut findet bin ich zufrieden.
    Mir ist es zu einem wichtig das auch andere die so etwas nicht hin bekommen damit lernen können.
    Solange die die sich das tut angucken und dabei lernen bin ich froh das sie damit auch lernen, aber wenn sie es einfach kopieren ist das nicht das was ich damit erreichen wollte und diese Personen sollten mal überlegen ob sie wirklich scripten wollen...

  • PatoD


    ihren wo bin ich Recht Zu Frieden das es nicht Richtig Eingerückt ist den so kann man nicht einfach kopieren und Einfügen, wehre es Richtig eingerückt härteste auch schon paar Antworten von wegen ist gutes Tutorial Obwohl sie es sich nicht mal angeschaut haben sie haben den Nämlich Einfach nur Kopiert und eingefügt.
    Ich selber Gebe keine Bewertung ab da ich es mir nicht Richtig Durchgelesen habe

  • Naja so lange ihr es gut findet bin ich zufrieden.
    Mir ist es zu einem wichtig das auch andere die so etwas nicht hin bekommen damit lernen können.
    Solange die die sich das tut angucken und dabei lernen bin ich froh das sie damit auch lernen, aber wenn sie es einfach kopieren ist das nicht das was ich damit erreichen wollte und diese Personen sollten mal überlegen ob sie wirklich scripten wollen...


    Deine Überlegungen kann man gut verstehen, aber wie soll ein Neuling verstehen was du da schreibst und warum das da steht, aber nur sagst "Ich zeige dir jetzt wie sowas aussieht!".
    Es ist so als würdest du einem 2. Klässler komplexe Gleichungen zum Beispiel an die Tafel schreiben, ohne das er weiß wie es geht. Ich glaube wohl kaum das er es selbst dann nicht kann.
    Erklärst du ihm aber wenigstens wie man es löst, wird er vielleicht ganz bisschen gelernt haben ;D

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Deadmaus ob einer hier ein Tut macht ist doch relativ egal über ein Fraktionsautohaus. Weil in fast allen neueren Gamemodes welche releaset wurden findet man das von MyKevin und auch in googel den pastbin wenn man sucht und Samp ist sowieso schon ausgelutscht mann kan eigentlich nur noch die vorhandenen Sachen verbessern in den feinheiten. Ich selbst muss sagen so wie es ist das Tutorial ist es gut.

  • #define MAX_FRAKTCARS 20 //Die 20 kann geändert werden auf eure maximalen Fraktionfahrzeuge
    new SAPDcar[MAX_FRAKTCARS]; //Für die SAPD Cars
    enum Fraktcars{modelid,Float:fposx,Float:fposy,Float:fposz,Float:fposa,Spoiler,Hood,Roof,Sideskirt,Lamps,Nitro,Exhaust,Wheels,Stereo,Hydraulics,FrontBumper,RearBumper,VentRight,VentLeft}
    new Fraktautos[MAX_FRAKTCARS][7][Fraktcars]; //Die 7 ist die anzahl der Fraktionen (kann also auch geändert werden)


    /*OnGameModeInit*/
    for(new i=0;i<MAX_FRAKTCARS;i++) //Geht alle Zahlen von 0 bis die zahl die bei MAX_FRAKTCARS steht
    {
    new Fraktauto[200];
    format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i); //Solltet ihr wissen ;)
    if(dini_Exists(Fraktauto))
    {
    Fraktautos[i][1][modelid] = dini_Int(Fraktauto,"modelid");
    Fraktautos[i][1][fposx] = dini_Float(Fraktauto,"FPosX");
    Fraktautos[i][1][fposy] = dini_Float(Fraktauto,"FPosY");
    Fraktautos[i][1][fposz] = dini_Float(Fraktauto,"FPosZ");
    Fraktautos[i][1][fposa] = dini_Float(Fraktauto,"FPosA");
    Fraktautos[i][1][Spoiler] = dini_Int(Fraktauto,"Spoiler");
    Fraktautos[i][1][Hood] = dini_Int(Fraktauto,"Hood");
    Fraktautos[i][1][Roof] = dini_Int(Fraktauto,"Roof");
    Fraktautos[i][1][Sideskirt] = dini_Int(Fraktauto,"Sideskirt");
    Fraktautos[i][1][Lamps] = dini_Int(Fraktauto,"Lamps");
    Fraktautos[i][1][Nitro] = dini_Int(Fraktauto,"Nitro");
    Fraktautos[i][1][Exhaust] = dini_Int(Fraktauto,"Exhaust");
    Fraktautos[i][1][Wheels] = dini_Int(Fraktauto,"Wheels");
    Fraktautos[i][1][Stereo] = dini_Int(Fraktauto,"Stereo");
    Fraktautos[i][1][Hydraulics] = dini_Int(Fraktauto,"Hydraulics");
    Fraktautos[i][1][FrontBumper] = dini_Int(Fraktauto,"FrontBumper");
    Fraktautos[i][1][RearBumper] = dini_Int(Fraktauto,"RearBumper");
    Fraktautos[i][1][VentRight] = dini_Int(Fraktauto,"VentRight");
    Fraktautos[i][1][VentLeft] = dini_Int(Fraktauto,"VentLeft");
    SAPDcar[i] = AddStaticVehicleEx(Fraktautos[i][1][modelid],Fraktautos[i][1][fposx],Fraktautos[i][1][fposy],Fraktautos[i][1][fposz],Fraktautos[i][1][fposa],0,1,-1);
    SetVehicleNumberPlate(SAPDcar[i],"SAPD");
    }
    }


    /*OnGameModeExit*/
    for(new i=0;i<MAX_FRAKTCARS;i++)
    {
    new Fraktauto[200];
    format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i);
    if(dini_Exists(Fraktauto))
    {
    dini_IntSet(Fraktauto,"modelid",Fraktautos[i][1][modelid]);
    dini_FloatSet(Fraktauto,"FPosX",Fraktautos[i][1][fposx]);
    dini_FloatSet(Fraktauto,"FPosY",Fraktautos[i][1][fposy]);
    dini_FloatSet(Fraktauto,"FPosZ",Fraktautos[i][1][fposz]);
    dini_FloatSet(Fraktauto,"FPosA",Fraktautos[i][1][fposa]);
    dini_IntSet(Fraktauto,"Spoiler",GetVehicleComponentInSlot(SAPDcar[i],0)); //GetVehicleComponentInSlot bedeutet das er das Tuning des angegebenen Slots heraus findet
    dini_IntSet(Fraktauto,"Hood",GetVehicleComponentInSlot(SAPDcar[i],1));
    dini_IntSet(Fraktauto,"Roof",GetVehicleComponentInSlot(SAPDcar[i],2));
    dini_IntSet(Fraktauto,"Sideskirt",GetVehicleComponentInSlot(SAPDcar[i],3));
    dini_IntSet(Fraktauto,"Lamps",GetVehicleComponentInSlot(SAPDcar[i],4));
    dini_IntSet(Fraktauto,"Nitro",GetVehicleComponentInSlot(SAPDcar[i],5));
    dini_IntSet(Fraktauto,"Exhaust",GetVehicleComponentInSlot(SAPDcar[i],6));
    dini_IntSet(Fraktauto,"Wheels",GetVehicleComponentInSlot(SAPDcar[i],7));
    dini_IntSet(Fraktauto,"Stereo",GetVehicleComponentInSlot(SAPDcar[i],8));
    dini_IntSet(Fraktauto,"Hydraulics",GetVehicleComponentInSlot(SAPDcar[i],9));
    dini_IntSet(Fraktauto,"FrontBumper",GetVehicleComponentInSlot(SAPDcar[i],10));
    dini_IntSet(Fraktauto,"RearBumper",GetVehicleComponentInSlot(SAPDcar[i],11));
    dini_IntSet(Fraktauto,"VentRight",GetVehicleComponentInSlot(SAPDcar[i],12));
    dini_IntSet(Fraktauto,"VentLeft",GetVehicleComponentInSlot(SAPDcar[i],13));
    }
    }


    ocmd:createfcar(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,6)) //Müsst ihr nach eurer Adminabfrage machen
    {
    new fraktid;
    new mid;
    if(sscanf(params,"ii",fraktid,mid)) //Wenn der z.b. nur "/createfcar" eingibt
    {
    SendClientMessage(playerid,CMD,"/createfcar [Frakt-ID][Model-ID]"); //Müsst ihr für euren Server ändern
    SendClientMessage(playerid,BLAU,"Fraktion 1:SAPD");
    SendClientMessage(playerid,BLAU,"Fraktion 2:Grove Street");
    SendClientMessage(playerid,BLAU,"Fraktion 3:Rollin' Heigths Ballas");
    SendClientMessage(playerid,BLAU,"Fraktion 4:Varrios Los Aztecas");
    SendClientMessage(playerid,BLAU,"Fraktion 5:Los Santos Vagos");
    SendClientMessage(playerid,BLAU,"Fraktion 6:Army");
    }
    else
    {
    if(fraktid < 1 || fraktid > 6)return SendClientMessage(playerid,ROT,"Frakt-ID kann nicht über 6 oder unter 1 sein.");
    if(mid < 400 || mid > 611)return SendClientMessage(playerid,ROT,"Model-ID kann nicht über 611 oder unter 400 sein."); //Da die Vehicles nur von 400-611 gehen
    CreateFCar(playerid,fraktid,mid); //wird gleich gezeigt was das ist...
    }
    }
    return 1;
    }


    ocmd:desfcar(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,6)) //Muss angepasst werden
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new veh=GetPlayerVehicleID(playerid); //Definiert veh als GetPlayerVehicleID
    new Fraktauto[200]; for(new i=0;i<MAX_FRAKTCARS;i++)
    {
    if(veh==SAPDcar[i]) //Wenn der in irgendeinem SAPDcar ist
    {
    format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i);
    dini_Remove(Fraktauto);
    DestroyVehicle(SAPDcar[i]);
    SendClientMessage(playerid,GELB,"Fraktionsauto erfolgreich gelöscht.");
    } //Zerstört der das Vehicle und die Veh-Datei
    }
    }
    }
    }


    stock CreateFCar(playerid,fraktid,mid)
    {
    new Fraktauto[200];
    new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid,x,y,z); //Findet die Position für den Spieler heraus damit er weiß wo das auto hin muss
    GetPlayerFacingAngle(playerid,a); //Da die Blickrichtung auch für das Auto
    if(fraktid!=0) //Damit es nicht geht als Zivicar
    {
    for(new i=0;i<MAX_FRAKTCARS;i++)
    {
    if(fraktid==1)
    {
    format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i);
    if(!dini_Exists(Fraktauto)) //Wenn die Fahrzeugid noch nicht vergeben ist
    {
    dini_Create(Fraktauto); //Er Createt die Datei
    dini_IntSet(Fraktauto,"modelid",mid);
    dini_FloatSet(Fraktauto,"FPosX",x);
    dini_FloatSet(Fraktauto,"FPosY",y);
    dini_FloatSet(Fraktauto,"FPosZ",z);
    dini_FloatSet(Fraktauto,"FPosA",a);
    dini_IntSet(Fraktauto,"Spoiler",0);
    dini_IntSet(Fraktauto,"Hood",0);
    dini_IntSet(Fraktauto,"Roof",0);
    dini_IntSet(Fraktauto,"Sideskirt",0);
    dini_IntSet(Fraktauto,"Lamps",0);
    dini_IntSet(Fraktauto,"Nitro",0);
    dini_IntSet(Fraktauto,"Exhaust",0);
    dini_IntSet(Fraktauto,"Wheels",0);
    dini_IntSet(Fraktauto,"Stereo",0);
    dini_IntSet(Fraktauto,"Hydraulics",0);
    dini_IntSet(Fraktauto,"FrontBumper",0);
    dini_IntSet(Fraktauto,"RearBumper",0);
    dini_IntSet(Fraktauto,"VentRight",0);
    dini_IntSet(Fraktauto,"VentLeft",0);
    Fraktautos[i][1][modelid] = dini_Int(Fraktauto,"modelid");
    Fraktautos[i][1][fposx] = dini_Float(Fraktauto,"FPosX");
    Fraktautos[i][1][fposy] = dini_Float(Fraktauto,"FPosY");
    Fraktautos[i][1][fposz] = dini_Float(Fraktauto,"FPosZ");
    Fraktautos[i][1][fposa] = dini_Float(Fraktauto,"FPosA");
    Fraktautos[i][1][Spoiler] = dini_Int(Fraktauto,"Spoiler");
    Fraktautos[i][1][Hood] = dini_Int(Fraktauto,"Hood");
    Fraktautos[i][1][Roof] = dini_Int(Fraktauto,"Roof");
    Fraktautos[i][1][Sideskirt] = dini_Int(Fraktauto,"Sideskirt");
    Fraktautos[i][1][Lamps] = dini_Int(Fraktauto,"Lamps");
    Fraktautos[i][1][Nitro] = dini_Int(Fraktauto,"Nitro");
    Fraktautos[i][1][Exhaust] = dini_Int(Fraktauto,"Exhaust");
    Fraktautos[i][1][Wheels] = dini_Int(Fraktauto,"Wheels");
    Fraktautos[i][1][Stereo] = dini_Int(Fraktauto,"Stereo");
    Fraktautos[i][1][Hydraulics] = dini_Int(Fraktauto,"Hydraulics");
    Fraktautos[i][1][FrontBumper] = dini_Int(Fraktauto,"FrontBumper");
    Fraktautos[i][1][RearBumper] = dini_Int(Fraktauto,"RearBumper");
    Fraktautos[i][1][VentRight] = dini_Int(Fraktauto,"VentRight");
    Fraktautos[i][1][VentLeft] = dini_Int(Fraktauto,"VentLeft");
    SAPDcar[i] = CreateVehicle(mid,x,y,z,a,0,1,-1);
    PutPlayerInVehicle(playerid,SAPDcar[i],0);
    return 1;
    }
    }
    else if(fraktid==2)
    {
    format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/Grove/%d.ini",i);
    if(!dini_Exists(Fraktauto))
    {
    dini_Create(Fraktauto);
    dini_IntSet(Fraktauto,"modelid",mid);
    dini_FloatSet(Fraktauto,"FPosX",x);
    dini_FloatSet(Fraktauto,"FPosY",y);
    dini_FloatSet(Fraktauto,"FPosZ",z);
    dini_FloatSet(Fraktauto,"FPosA",a);
    dini_IntSet(Fraktauto,"Spoiler",0);
    dini_IntSet(Fraktauto,"Hood",0);
    dini_IntSet(Fraktauto,"Roof",0);
    dini_IntSet(Fraktauto,"Sideskirt",0);
    dini_IntSet(Fraktauto,"Lamps",0);
    dini_IntSet(Fraktauto,"Nitro",0);
    dini_IntSet(Fraktauto,"Exhaust",0);
    dini_IntSet(Fraktauto,"Wheels",0);
    dini_IntSet(Fraktauto,"Stereo",0);
    dini_IntSet(Fraktauto,"Hydraulics",0);
    dini_IntSet(Fraktauto,"FrontBumper",0);
    dini_IntSet(Fraktauto,"RearBumper",0);
    dini_IntSet(Fraktauto,"VentRight",0);
    dini_IntSet(Fraktauto,"VentLeft",0);
    Fraktautos[i][2][modelid] = dini_Int(Fraktauto,"modelid");
    Fraktautos[i][2][fposx] = dini_Float(Fraktauto,"FPosX");
    Fraktautos[i][2][fposy] = dini_Float(Fraktauto,"FPosY");
    Fraktautos[i][2][fposz] = dini_Float(Fraktauto,"FPosZ");
    Fraktautos[i][2][fposa] = dini_Float(Fraktauto,"FPosA");
    Fraktautos[i][2][Spoiler] = dini_Int(Fraktauto,"Spoiler");
    Fraktautos[i][2][Hood] = dini_Int(Fraktauto,"Hood");
    Fraktautos[i][2][Roof] = dini_Int(Fraktauto,"Roof");
    Fraktautos[i][2][Sideskirt] = dini_Int(Fraktauto,"Sideskirt");
    Fraktautos[i][2][Lamps] = dini_Int(Fraktauto,"Lamps");
    Fraktautos[i][2][Nitro] = dini_Int(Fraktauto,"Nitro");
    Fraktautos[i][2][Exhaust] = dini_Int(Fraktauto,"Exhaust");
    Fraktautos[i][2][Wheels] = dini_Int(Fraktauto,"Wheels");
    Fraktautos[i][2][Stereo] = dini_Int(Fraktauto,"Stereo");
    Fraktautos[i][2][Hydraulics] = dini_Int(Fraktauto,"Hydraulics");
    Fraktautos[i][2][FrontBumper] = dini_Int(Fraktauto,"FrontBumper");
    Fraktautos[i][2][RearBumper] = dini_Int(Fraktauto,"RearBumper");
    Fraktautos[i][2][VentRight] = dini_Int(Fraktauto,"VentRight");
    Fraktautos[i][2][VentLeft] = dini_Int(Fraktauto,"VentLeft");
    GScar[i] = CreateVehicle(mid,x,y,z,a,252,252,-1);
    PutPlayerInVehicle(playerid,GScar[i],0);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Spoiler]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Hood]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Roof]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Sideskirt]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Lamps]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Nitro]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Exhaust]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Wheels]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Stereo]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][Hydraulics]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][FrontBumper]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][RearBumper]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][VentRight]);
    AddVehicleComponent(GScar[i],Fraktautos[i][2][VentLeft]);
    return 1;
    }
    }
    }
    }
    return 1;
    }


    if(strcmp(cmdtext,"/fpark",true) == 0 || strcmp(cmdtext,"/fparken",true) == 0)
    {
    if(isPlayerLeader(playerid))
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new veh=GetPlayerVehicleID(playerid);
    new Float:x,Float:y,Float:z,Float:a;
    for(new i=0;i<MAX_FRAKTCARS;i++)
    {
    if(isPlayerInFrakt(playerid,1))
    {
    if(veh==SAPDcar[i])
    {
    new Fraktauto[200];
    format(Fraktauto,sizeof(Fraktauto),"/Fraktionsautos/SAPD/%d.ini",i);
    GetVehiclePos(SAPDcar[i],x,y,z);
    GetVehicleZAngle(SAPDcar[i],a);
    Fraktautos[i][1][fposx]=x;
    Fraktautos[i][1][fposy]=y;
    Fraktautos[i][1][fposz]=z;
    Fraktautos[i][1][fposa]=a;
    dini_FloatSet(Fraktauto,"FPosX",Fraktautos[i][1][fposx]);
    dini_FloatSet(Fraktauto,"FPosY",Fraktautos[i][1][fposy]);
    dini_FloatSet(Fraktauto,"FPosZ",Fraktautos[i][1][fposz]);
    dini_FloatSet(Fraktauto,"FPosA",Fraktautos[i][1][fposa]);
    }
    }
    }
    }
    }
    }


    eingerückt :D

  • An alle:


    Dort steht Vorraussetzungen: Grundkenntnisse dini & PAWNO


    Wenn man das nicht hat dann sollte man sich eigentlich auch nicht das Tutorial gucken.
    Und was haben die von copy & paste ?
    Sie haben es zwar nur können nichts editieren :D
    Das Tutorial soll nur für die die Grundkenntnisse haben zeigen wie man so etwas macht ^^

  • joa und wenn du noch erklärt wie man Farben beim erstellen schon ins Auto einfügt , 8/10


    Funktioniert soweit prima nur sind die Cars schwarz ^^
    Und das parken der Fraktions Cars speicherts nich, sind immer da wo man sie erstellt. ?(


    Einmal editiert, zuletzt von marijuana ()