Liefersystem Problem

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.
    Ich hatte vor ein Lifersystem in mein RL Skript zu integrieren.
    Jedoch bekomme ich bei dieser Zeile:


    new TransCarS1 = TransCarS[2];


    diesen Error:
    Zeile (356) : error 008: must be a constant expression; assumed zero


    Ich hoffe ihr könnt mir helfen..
    Zur erklärung:


    Ich versuche gerade erst, dass wenn ein User in eines der 5 gesetzten Liefer autos einsteigt er eine Meldung bekommt was er zu tun hat.. Bin mir nicht sicher wie ich diese Nachricht nicht sende, wenn er in jedes Auto einsteigt sondern eben nur wenn er in eines der 5 Autos einsteigt..


    Danke für jegliche Hilfe!
    MfG

  • New TransCar[5];


    TransCar[0] = CreateVehicle....
    TransCar[1] = ...


    Bei OnPlayerEnterVehicle
    Oder bei OnPlayerChangeState musst du abfragen ob er Fahrer ist
    Und ob seine Fahrzeug id mit der des TransCar übereinstimmt


    for(new i; i<siezeof(TransCar);i++).


    Das die schleife also der Anfang

  • Ich hab das oben im Script stehen:


    TransCarS[0] = AddStaticVehicleEx(440,-540.000,-545.000,25.0000,180.0000,12,12,1500);
    TransCarS[1] = AddStaticVehicleEx(440,-540.000,-545.000,25.0000,180.0000,12,12,1500);
    TransCarS[2] = AddStaticVehicleEx(440,-530.0000,-545.0000,25.0000,180.0000,12,12,1500);
    TransCarS[3] = AddStaticVehicleEx(440,-520.0000,-545.0000,25.0000,180.0000,12,12,1500);
    TransCarS[4] = AddStaticVehicleEx(440,-500.0000,-545.0000,25.0000,180.0000,12,12,1500);



    Heist ich muss für die Schleife erstmal ingame auslesen welche Carid die Autos haben ? oder kann ich die CarID der TransCars auch über das Script bekommen ?

  • Ich muss dazu sagen:
    Ich lerne gerade das Scripten und versuche eben so viel wie möglich zu verstehen und keine Filterscripts zu nehmen!


    Stimmt das so? :
    for(new i; i<sizeof(TransCarS0);i++).
    {
    new str[128];
    format(str,128,"Du kannst mit /startjob Produkte an das Stromwerk SF liefern!");
    SendClientMessage(playerid,gelb,str);
    return 1;
    }


    Ich bekomme nämlich diesen Error:
    Zeile (3061) : Ungültiger Befehl


    Und noch eine frage:
    Das Zeichen "<" bei der for schleife heißt doch, dass i kleiner als TransCarS0 ist.. und solange es kleiner ist "i" um 1 größer wird.. oder hab ich das falsch verstanden ?

  • naja dieses Liefersystem soll als "Freiberuf" gemacht werden.. Heißt nicht als fixer Job. Lieferanten Jobs kann man auch machen wenn man in einer Fraktion ist, einen fixen Job hat, etc.
    Also Nein, da es aus meiner Sicht nicht benötigt wird.

  • Mach es so:
    for(new i; i<sizeof(TransCarS);i++)SendClientMessage(playerid,gelb,"Du kannst mit /startjob Produkte an das Stromwerk SF liefern!");
    Du hattest nach der for Schleife ein Punkt gesetzt, deswegen der Fehler


    //Edit: Code editiert

    Mit freundlichen Grüßen
    ErikSon



    Scripte kleine Systeme auf Anfrage umsonst!
    Per PN könnt ihr mir gerne Scriptingfragen stellen.

    Einmal editiert, zuletzt von ErikSon ()

  • Das mit fahrer is ja nd so das problem^^ td danke


    Ich habe den Code Schnipsel jetzt so:

    Spoiler anzeigen

    for(new i; i<sizeof(TransCarS0);i++)
    {
    new str[128];
    format(str,128,"Du kannst mit /startjob Produkte an das Stromwerk SF liefern!");
    SendClientMessage(playerid,gelb,str);
    return 1;
    }



    Ich bekomm jedoch die Warnung, dass die Variable "TransCarS0" nicht verwendet wird.


    Die Variable habe ich oben im Skript so definiert:

    Spoiler anzeigen

    new TransCarS0 = TransCarS[0];
    new TransCarS1 = TransCarS[1];
    new TransCarS2 = TransCarS[2];
    new TransCarS3 = TransCarS[3];
    new TransCarS4 = TransCarS[4];



    Die Autos habe ich so definiert:

    Spoiler anzeigen
    TransCarS[0] = AddStaticVehicleEx(440,-540.000,-545.000,25.0000,180.0000,12,12,1500);
    TransCarS[1] = AddStaticVehicleEx(440,-540.000,-545.000,25.0000,180.0000,12,12,1500);
    TransCarS[2] = AddStaticVehicleEx(440,-530.0000,-545.0000,25.0000,180.0000,12,12,1500);
    TransCarS[3] = AddStaticVehicleEx(440,-520.0000,-545.0000,25.0000,180.0000,12,12,1500);
    TransCarS[4] = AddStaticVehicleEx(440,-500.0000,-545.0000,25.0000,180.0000,12,12,1500);



    Ich hoffe ihr könnt mir helfen.

    Einmal editiert, zuletzt von [MVS]Simon ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Warum machst du so komisch new ... Und nicht
    New TransCar[5];


    Warum arbeitest du nicht wie ich es dir anfangs sagte?
    Tausendmal besser und einfacher


    Desweiteren Funktioniert auch die Schleife nicht, da sie nur ein Wert hat und zwar 0 sprich i bleibt null sie steigt nicht
    Mach es wie ich es dir oben zeigte

  • Ich bekomme keine Error´s... aber egal in welches Auto ich einsteige ich bekomme die Meldung..
    Für alle die sich die Schnippsel nicht zusammensuchen wollen, das ist alles was ich bei dem System habe:


    Definition der Autos. (Steht ganz oben im Script)

    Spoiler anzeigen

    forward IsATransCarS(carid);
    new TransCarS[5];


    Die Meldung(sollte nur kommen wenn man in ein TransCarS einsteigt, kommt aber bei jedem Auto.(steht unter dem Public OnPlayerEnterVehicle)

    Spoiler anzeigen

    //Stromlieferant
    for(new i; i<sizeof(TransCarS);i++)
    {
    SendClientMessage(playerid,gelb,"Du kannst mit /liefern Produkte aus der Fabrikhalle aufnehmen!");
    SendClientMessage(playerid,gelb,"Am Stromwerk in San Fierro kannst du diese mit /abliefern verkaufen!");
    return 1;
    }

    Spoiler anzeigen
    return 1;
    }


    Die Definition wo die Autos stehen. (steht unter OnGamemodeInit)

    Spoiler anzeigen

    //Stromlieferant
    TransCarS[0] = AddStaticVehicleEx(440,-550.000,-545.000,25.685,180.0000,12,12,1500);
    TransCarS[1] = AddStaticVehicleEx(440,-545.000,-545.000,25.685,180.0000,12,12,1500);
    TransCarS[2] = AddStaticVehicleEx(440,-540.0000,-545.0000,25.685,180.0000,12,12,1500);
    TransCarS[3] = AddStaticVehicleEx(440,-535.0000,-545.0000,25.685,180.0000,12,12,1500);
    TransCarS[4] = AddStaticVehicleEx(440,-510.0000,-545.0000,25.685,180.0000,12,12,1500);


    Das Pickup beim Abgabe Punkt und der 3D Text.(Steht auch unter OnGamemodeInit)

    Spoiler anzeigen

    CreatePickup(1274,19,-2510.2292,-616.1070,132.5625);//Strompunkt
    Create3DTextLabel("Mit dem Befehl /abliefern Produkte abliefern!",0x00C5FFFF,-2510.2292,-616.1070,132.5625,30.0,0);


    Die beiden Befehle. Funktionieren in den Autos nicht. Es kommt die Meldung, dass man in keinem Lieferwagen ist.(Stehen ganz unten im Script)

    Spoiler anzeigen

    //Stromlieferant

    Spoiler anzeigen
    ocmd:liefern(playerid, params[], vehicleid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetVehicleModel(vehicleid) == 440)
    {
    SendClientMessage(playerid,gelb,"Du lieferst nun Produkte an das Stromwerk SF aus!");
    SetPlayerCheckpoint(playerid,-2510.2292,-616.1070,132.5625,3.0);
    return 1;
    }
    SendClientMessage(playerid,rot,"Du sitzt in keinem Lieferwagen!");
    return 1;
    }

    Spoiler anzeigen
    return 1;
    }

    Spoiler anzeigen
    ocmd:abliefern(playerid, params[], vehicleid)
    {
    if(IsPlayerConnected(playerid))
    {
    if(GetVehicleModel(vehicleid) == 440)
    {
    if(IsPlayerInRangeOfPoint(playerid,3.0,2510.2292,-616.1070,132.5625))
    {
    new str[128];
    new randmoney = random(2001) - 500;
    format(str,128,"Du hast die Produkte erfolgreich abgeliefert und %i Doller bekommen!",randmoney);
    SendClientMessage(playerid,gelb,str);
    GivePlayerMoney(playerid,randmoney);
    return 1;
    }
    SendClientMessage(playerid,rot,"Du bist in keinem Lieferwagen! Diesen kannst du am Strom-Lieferanten Job Punkt nehmen! /navi");
    return 1;
    }
    }

    Spoiler anzeigen
    return 1;
    }


    Das Auto hat die Model ID 440 (Rumpo)


    Ich hoffe ihr könnt mir helfen....

  • aber egal in welches Auto ich einsteige ich bekomme die Meldung..


    Ist ja auch klar ;)
    Du fragst nicht ab, ob der Spieler in dem Fahrzeug sitzt!


    Versuchs mal so:

    //Stromlieferant
    for(new i = 0; i<sizeof(TransCarS);i++)
    {
    if(GetPlayerVehicleID(playerid) != TransCarS[i])continue;
    SendClientMessage(playerid,gelb,"Du kannst mit /liefern Produkte aus der Fabrikhalle aufnehmen!");
    return SendClientMessage(playerid,gelb,"Am Stromwerk in San Fierro kannst du diese mit /abliefern verkaufen!");
    }

  • So hab dir das mal Gemacht, sollte auch Funktionieren. Beachte jedoch das du in den Codes einige Teile ändern musst, damit es Reibungslob bei dir Funktioniert.


    Oben definierst du im Script erstmal deine Fahrzeuge, und den Bool ob der Spieler am Liefern ist oder nicht und den Forward den wir zum Überprüfen des Fahrzeuges benötigen.


    Das schaut dann so aus.
    new TransCars[5],
    forward IsLieferCar(carid),
    bool:Liefert[MAX_PLAYERS];


    Dann gehst du unter OnGameModeInit und lässt dir deine Fahrzeuge laden.
    TransCars[0] = AddStaticVehicleEx(440,-540.000,-545.000,25.0000,180.0000,12,12,1500);
    TransCars[1] = AddStaticVehicleEx(440,-540.000,-545.000,25.0000,180.0000,12,12,1500);
    TransCars[2] = AddStaticVehicleEx(440,-530.0000,-545.0000,25.0000,180.0000,12,12,1500);
    TransCars[3] = AddStaticVehicleEx(440,-520.0000,-545.0000,25.0000,180.0000,12,12,1500);
    TransCars[4] = AddStaticVehicleEx(440,-500.0000,-545.0000,25.0000,180.0000,12,12,1500);


    Anschließend musst du nurnoch die Befehle erstellen, ich habe mal 2 Test-Befehle erstellt, die Farben die dort bei den SendClientMessage's benutzt worden sind musst du mit deinen Farben bearbeiten und die Texte ggf. Ändern!
    ocmd:liefern(playerid)
    {
    new carid = GetPlayerVehicleID(playerid);
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, Meldung_Orange, "Du musst in einem Fahrzeug sitzen.");
    if(!IsLieferCar(carid))return SendClientMessage(playerid, Meldung_Orange, "Du kannst keine Produkte laden, da du nicht in einem Lieferwagen bist.");
    if(Liefert[playerid])return SendClientMessage(playerid, Meldung_Orange, "Du bist bereits am Liefern.");
    else if(!Liefert[playerid])Liefert[playerid] = true; SendClientMessage(playerid, COLOR_WHITE, "Du hast nun 500 Produkte geladen, fahre zur Stromfabrik.");SetPlayerCheckpoint(playerid, 1114.0520,-1717.2704,13.1665, 3);
    return 1;
    }


    ocmd:abladen(playerid)
    {
    new carid = GetPlayerVehicleID(playerid);
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, Meldung_Orange, "Du musst in einem Fahrzeug sitzen.");
    if(!IsLieferCar(carid))return SendClientMessage(playerid, Meldung_Orange, "Du kannst keine Produkte laden, da du nicht in einem Lieferwagen bist.");
    if(!IsPlayerInRangeOfPoint(playerid, 3.0, 1114.0520,-1717.2704,13.1665))return SendClientMessage(playerid, COLOR_WHITE, "Du bist nicht am Strom Unternehmen.");
    if(!Liefert[playerid])return SendClientMessage(playerid, Meldung_Orange, "Du bist nicht am Liefern.");
    else if(Liefert[playerid]) Liefert[playerid] = false; SendClientMessage(playerid, COLOR_WHITE, "Du hast das Strom Unternehmen mit 500 Produkten beliefert, dafür erhältst du 500$.");
    return 1;
    }


    Und nun kommen wir zu dem Public der deine Fahrzeuge überprüft ob es ein Lieferwagen ist.
    public IsLieferCar(carid)
    {
    for(new i = 0; i < sizeof(TransCars); i++)
    {
    if(carid == TransCars[i])
    {
    return 1;
    }
    }
    return 0;
    }


    So, das wars! Ich hoffe ich konnte Dir etwas Helfen, benötigst du mehr Hilfe oder eine genauere Erklärung meines Codes muss du dich nur Melden.



    Mit freundlichen Grüßen
    SLaYz

    Einmal editiert, zuletzt von SLaYz ()

  • Mhm.. Ich habe das jetzt so auf mich angepasst:


    Oben im Script:

    Spoiler anzeigen

    forward IsTransCarS(carid);
    new TransCarS[5];
    bool:TransS[MAX_PLAYERS];


    Das Pickup am AbgabePunkt + 3d text

    Spoiler anzeigen
    CreatePickup(1274,19,-2510.2292,-616.1070,132.5625);//Strompunkt
    Create3DTextLabel("Mit dem Befehl /abliefern Produkte abliefern!",0x00C5FFFF,-2510.2292,-616.1070,132.5625,30.0,0);


    Die Autos:

    Spoiler anzeigen
    TransCarS[0] = AddStaticVehicleEx(440,-550.000,-545.000,25.685,180.0000,12,12,1500);
    TransCarS[1] = AddStaticVehicleEx(440,-545.000,-545.000,25.685,180.0000,12,12,1500);
    TransCarS[2] = AddStaticVehicleEx(440,-540.0000,-545.0000,25.685,180.0000,12,12,1500);
    TransCarS[3] = AddStaticVehicleEx(440,-535.0000,-545.0000,25.685,180.0000,12,12,1500);
    TransCarS[4] = AddStaticVehicleEx(440,-510.0000,-545.0000,25.685,180.0000,12,12,1500);


    Und schließlich unten das was du mir geschickt hast:

    Spoiler anzeigen
    //Stromlieferant
    public IsTransCarS(carid)
    {
    for(new i = 0; i < sizeof(TransCarS); i++)
    {
    if(carid == TransCarS[i])
    {
    return 1;
    }
    }
    return 0;
    }

    Spoiler anzeigen
    ocmd:liefern(playerid)
    {
    new carid = GetPlayerVehicleID(playerid);
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, knallrot, "Du musst in einem Fahrzeug sitzen.");
    if(!IsTransCarS(carid))return SendClientMessage(playerid, knallrot, "Du kannst keine Produkte laden, da du nicht in einem Lieferwagen bist.");
    if(TransS[playerid])return SendClientMessage(playerid, knallrot, "Du bist bereits am Liefern.");
    else if(!TransS[playerid])Liefert[playerid] = true; SendClientMessage(playerid, gelb, "Du hast nun Produkte geladen, fahre zur Stromfabrik.");SetPlayerCheckpoint(playerid, -2510.2292,-616.1070,132.5625, 3);
    return 1;
    }

    Spoiler anzeigen
    ocmd:abladen(playerid)
    {
    new carid = GetPlayerVehicleID(playerid);
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid, knallrot, "Du musst in einem Fahrzeug sitzen.");
    if(!IsTransCarS(carid))return SendClientMessage(playerid, knallrot, "Du kannst keine Produkte laden, da du nicht in einem Lieferwagen bist.");
    if(!IsPlayerInRangeOfPoint(playerid, 3.0, -2510.2292,-616.1070,132.5625))return SendClientMessage(playerid, knallrot, "Du bist nicht am Strom Unternehmen.");
    if(!TransS[playerid])return SendClientMessage(playerid, knallrot, "Du bist nicht am Liefern.");
    else if(TransS[playerid]) Liefert[playerid] = false; SendClientMessage(playerid, gelb, "Du hast das Strom Unternehmen mit Produkten beliefert, dafür erhältst du 500$.");
    return 1;
    }


    Jedoch bekomme ich jetzt diese Errors:

    Spoiler anzeigen
    Zeile (726) : Unbekannte Funktion
    Zeile (48737) : Variable "GetName" wurde mehrmals deklariert
    Zeile (50600) : Unbekannte Variable : "TransS"
    Zeile (50600) : Befehl hat keinen Sinn
    Zeile (50600) : Erwartete Zeichen ";", aber gefunden "]"
    Zeile (50600) : Ungültiger Befehl
    Zeile (50600) : Zuviele Fehler in einer Zeile


    Kann es sein, dass ich ein Include für das Boole brauche ?


    Includes:

    Spoiler anzeigen
    #include <a_samp>
    #include <a_npc>
    #include <core>
    #include <float>
    #include <time>
    #include <file>
    #include <utils>
    #include <morphinc>
    #include <M_Bot>
    #include <Obj_Streamer>
    #include <foXban>
    #include <dini>
    #include <ocmd>
    #include <SII>



    SLaYz

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen