Beiträge von Padarom

    Wenn du dem Tutorial richtig gefolgt bist, dann sollte das nicht so sein. Es wurde extra ein Array von Tankinhalten erstellt, anstatt einem zentralen.
    Irgendetwas wirst du also wohl falsch gemacht haben.

    Wenn es nicht Serverseitig geprüft wird, dann schon.


    Nein, es geht ihm nur um den Rechner, nicht um einen Bestellvorgang. Der Berechner kalkuliert scheinbar nur einen Pauschalpreisvorschlag.
    Die Bestellung ist dann eine andere Sache.

    Dafür die Frage wofür er das machen muss. Wenn er es für die Schule als Hausaufgabe zu erledigen hat, dann reicht es dadurch, ich glaube kaum dass Lehrer solche Arbeiten nach Injection-Möglichkeiten durchforsten.
    Wenn er es jemandem verkaufen möchte, frage ich mich wieso er es überhaupt anbieten würde ohne eine Idee davon zu haben.

    Das ist doch keine große Sache?
    In den jeweiligen Dropdownboxen den einzelnen Auswahlmöglichkeiten die Value mit dem Preis zuschreiben und am Ende alle Values zusammenrechnen.
    Viel mehr PHP ist da eigentlich nicht drin.


    Wofür musst du das denn coden wenn ich fragen darf?

    Eigentlich recht simpel.

    // Irgendwo:
    new light[MAX_VEHICLES];


    // In deinem /ucl Befehl:
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, GREEN, "Du bist Schokolade.");
    new vehicleid = GetPlayerVehicleID(playerid), model = GetVehicleModel(vehicleid);
    if(model == 1 || model == 2 || model = 3 || /* ... */ ) // Hier die ID's der Fahrzeuge eintragen, an denen man das Licht befestigen kann.
    {
    light[vehicleid] = CreateObject(/* ... */); // ID des Lichtobjektes
    AttachObjectToVehicle(light[vehicleid], vehicleid, 0, 0, 1, 0, 0, 0); // Die Werte musst du selbst rausfinden
    }
    else SendClientMessage(playerid, GREEN, "Du bist Kuchen.");
    In deinem /uclw-Befehl arbeitest du einfach mit DestroyObject.


    Mit freundl. Grüßen
    Padarom

    Dir ist bewusst, dass während deiner Schleife 200x die Spielerposition gewechselt wird? Die Schleife läuft bis 200, wenn dann kein Haus mit der ID 200 existiert (also die Variablen HausInfo[200][haus_x] usw. noch nicht initialisiert sind), wird der Spieler zwangsläufig zu 0,0,0 teleportiert (was ja der Bauernhof ist).
    Du kannst das in etwa so lösen:
    enum haus_info {
    bool:haus_initialisiert; // Diese Bool einfügen zum Abfragen.
    }


    for(new hausid; hausid<200; hausid++) LoadHaus(hausid); // In OnGameModeInit


    // Bei OnPlayerSpawn, idealerweise aber bei OnPlayerClassRequest mit SetPlayerSpawnInfo arbeiten
    new haus = GetPlayerHaus(playerid);
    if(haus == -1) SetPlayerPos(playeryid, 100, 200, 300); // Spieler hat kein Haus -> Anfangsspawn
    else SetPlayerPos(playerid,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z]);


    // Folgendes noch NACH der Existenzprüfung der Datei im Callback LoadHaus einfügen:
    HausInfo[hausid][haus_initialisiert] = true;


    // Neuer Stock - Kannst du auch öfters verwenden
    stock GetPlayerHaus(playerid)
    {
    new pName[24];
    GetPlayerName(playerid, pName, 24);
    for(new i=0; i<200; i++)
    {
    if(!HausInfo[i][haus_initialisiert]) continue;
    if(!strcmp(HausInfo[i][haus_besitzer], pName)) return i;
    }
    return -1;
    }


    Mit freundl. Grüßen
    Padarom

    Falscher Bereich, das gehört in "Coding".
    Abgesehen davon, welche Programmiersprache?


    edit:
    Du musst den Pfad des Hintergrundbildes so angeben, dass es in Relation zum eigentlichen Programm steht (und das Bild dann ggf. mitsenden).
    In VB.net müssten Bilder z.B. direkt in die .exe mitgespeichert werden.

    Scheinbar hast du den Code also einfach nur mit Copy & Paste in dein Script eingefügt, ohne auch nur ansatzweise eine Idee zu haben was da gemacht wird.
    Guck dir die Abfrage nach dem Adminlevel an:
    if(PlayerInfo[playerid][pAdmin] >= 1450) // Ersetzt du mit deinem Admin Level das diesen Befehl nutzen Darf.
    Dahinter ist bereits ein passendes Kommentar. Je nachdem wie hoch das Adminlevel des Spielers sein soll, der diesen Command ausführen darf, musst du auch die Zahl dort ändern.
    Außerdem musst du dir an anderer Stelle im Script dieses Adminlevel auch zuweisen.


    Mit freundl. rüßen
    Padarom

    Richtig grausiger Ansatz, sorry. Ich versuche mal zu erklären was dein Code aktuell macht:
    Es wird eine Schleife gestartet, die alle Spieler des Servers durchläuft (Obwohl du doch die SpielerID übergibst?). Bei jedem Spieler, bei dem die Variable "TutTime" größer gleich 1 ist (die aber irgendwie auch nirgends gesetzt wird), wird selbige um 1 erhöht.
    Dann wird abgefragt wie hoch diese Variable (bei jedem Spieler des Servers!) ist, das Interior des jeweiligen Spielers neu gesetzt und sein Chat gecleared. Die Kamera wird allerdings beim mit playerid übergebenen Spieler geändert.
    Eine Schleife läuft nicht unendlich lang weiter. Außerdem dauert ein Durchlauf keine ganze Sekunde, weshalb du nicht davon ausgehen könntest, dass TutTime durch die Erhöhung erst nach 20 Sekunden auf 20 wäre.


    Am besten löst du das so:

    public tut1(playerid, id)
    {
    if(id == 1)
    {
    SetPlayerInterior(playerid, 0); // Wird nur einmal benötigt, danach ist der Spieler ja bereits im jeweiligen Interior.
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 2224.520019, 2404.315673, 16.344240, 2153.540527, 2313.615722, 60.157226, 10000);
    InterpolateCameraLookAt(playerid, 2227.905029, 2407.916503, 17.103015, 2151.097656, 2309.258300, 60.368419, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 2); // Ggf. die Zeit anpassen!
    }
    else if(id == 2)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 2139.731689, 1967.328613, 17.607742, 2066.838867, 1683.506591, 14.777522, 10000);
    InterpolateCameraLookAt(playerid, 2135.487548, 1964.687255, 17.713203, 2071.788085, 1683.407348, 15.482200, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 3); // Ggf. die Zeit anpassen!
    }
    else if(id == 3)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 1216.874145, 1385.585815, 35.823482, 1029.671997, 1443.950805, 37.058578, 10000);
    InterpolateCameraLookAt(playerid, 1213.136718, 1382.266479, 35.706626, 1027.412841, 1448.393188, 37.460807, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 4); // Ggf. die Zeit anpassen!
    }
    else if(id == 4)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 1216.874145, 1385.585815, 35.823482, 1029.671997, 1443.950805, 37.058578, 10000);
    InterpolateCameraLookAt(playerid, 1213.136718, 1382.266479, 35.706626, 1027.412841, 1448.393188, 37.460807, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 5); // Ggf. die Zeit anpassen!
    }
    else if(id == 5)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 6); // Ggf. die Zeit anpassen!
    }
    else if(id == 6)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 7); // Ggf. die Zeit anpassen!
    }
    else if(id == 7)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 24.192886, 1312.712890, 87.218193, 82.856452, 1734.160522, 54.378856, 15000);
    InterpolateCameraLookAt(playerid, 21.173522, 1308.851928, 86.229858, 85.896827, 1738.113037, 54.013206, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 8); // Ggf. die Zeit anpassen!
    }
    else if(id == 8)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 1548.642333, 2626.509765, 59.889606, 1877.035644, 2604.894775, 51.598896, 10000);
    InterpolateCameraLookAt(playerid, 1545.515869, 2630.389648, 59.476016, 1880.970825, 2607.971191, 51.376312, 10000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 9); // Ggf. die Zeit anpassen!
    }
    else if(id == 9)
    {
    ClearChatbox(playerid, 8);
    InterpolateCameraPos(playerid, 2057.356445, 806.424377, 51.410240, 2057.969726, 1705.619995, 44.109199, 15000);
    InterpolateCameraLookAt(playerid, 2057.464111, 811.379699, 50.752002, 2057.996337, 1710.608886, 43.777416, 15000);
    SetTimerEx("tut1", 20000, false, "ii", playerid, 10); // Ggf. die Zeit anpassen!
    }
    else if(id == 10)
    {
    ClearChatbox(playerid, 8);
    GameTextForPlayer(playerid,"~w~~n~~n~~n~~n~~n~~n~~n~~n~~n~Viel Spaß auf ~p~GTA Roleplay",5000,4);
    SetCameraBehindPlayer(playerid);
    SpawnPlayer(playerid);
    }
    return 1;
    }


    Mit freundl. Grüßen
    Padarom


    new Text3D:supporterCarLabel[MAX_VEHICLES];


    ocmd:veh(playerid,params[])
    {
    new Float:vehx,Float:vehy,Float:vehz;
    new vehid,cc1,cc2,string[128], string2[128], string3[128];
    if(sscanf(params,"iii",vehid,cc1,cc2))return SendClientMessage(playerid,COLOR_GRAU,"Benutze: /veh [VehicleID(400-611)] [Farbe 1] [Farbe 2]");
    if(isPlayerAnAdmin(playerid,25))
    {
    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)));
    format(string2,sizeof(string2),"AdmCmd: %s hat FahrzeugID: %d gespawnt!",SpielerName(playerid),GetVehicleModel(GetPlayerVehicleID(playerid)));
    format(string3,sizeof(string3),"Supporter Car von\n%s", SpielerName(playerid));
    supporterCarLabel[carid] = Create3DTextLabel(string3, COLOR_GREEN, 0, 0, 0, 50, 0, 1);
    Attach3DTextLabelToVehicle( supporterCarLabel[carid] , carid, 0.0, 0.0, 2.0);
    SendClientMessage(playerid,COLOR_ROT,string);
    SendAdminMessage(COLOR_ADMIN,string2);
    }
    return 1;
    }

    So sollte es funktionieren.
    Für weitere Probleme/Unverständlichkeiten diesbezüglich bitte die Wiki aufsuchen bzw. hier nochmal nachfragen ;)


    Mit freundl. Grüßen
    Padarom

    Eigentlich ja, aber bei soetwas kommt es immer nur auf Millisekunden an, was nicht wirklich etwas weltbewegendes ist. Es ging mir nur darum es anzumerken.
    Am besten wäre es einfach einen switch zu verwenden, da dieser imho von der Berechnungszeit am wenigsten in Anspruch nimmt.


    4#Future: Was hat das mit selber schuld zu tun? Ich sagte, dass ich gerade nichts wirklich erkennen kann - Was daran liegt, dass ich mich um diese Zeit gar nicht wirklich darum bemühe.
    Ich habe ihn dafür auf einige Dinge hingewiesen, die ihm von Nutzen sein könnten. Aber es ist ja Blödsinn.


    In deinem Code sehe ich übrigens keine signifikante Besserung, beziehungsweise Lösung seines Problems - Sondern eher eine grundlegende Verbesserung. Nur weil er kein else-Statement für den Response verwendet hat, wird nicht zwangsläufig der Response-Fall nicht aufgerufen. Es geschieht hier lediglich eine eigene Separierung für den Falle Response = 0.