[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
  • OnPlayerUpdate nutze ich nicht


    habe 3 timer:

    • 1 Sekunde
    • 1 Minute
    • 300ms


    der Jede Sekunde checkt einige sachen und alles was irgentwie in Sekunden gezählt wird, wird dort gezählt
    Der Jede Minute Updatet einiges ab einer bestimten zeit und zählt das was in Minuten gezählt wird
    Der 300ms Updatet die Geschwindigkeitsanzeige bei Autos und ähnliches.

  • Simon:
    Setze dort wo der Code (Timer) beginnt, also direkt nach dem public:
    new t = GetTickCount();


    und ganz unten, vor dem return, bzw. vor der letzten Klammer:
    printf("Code Zeit: %dms", GetTickCount()-t);


    Dann weißt du genau wie lange dein Code braucht und ob er laggt.


    Deine Timer sollten eigentlich kein Problem sein, außer du öffnest viele Dateien, bzw. lässte viele Queries durchführen. Lass dir einfach mal die Zeit ausgeben. Alles was zwischen 0ms und 15-20ms ist passt völlig, wenns mehr ist sollte der Timer nicht ganz so oft aufgerufen werden, also nicht 5 mal in der Sekunde, sondern nur jede 2. Sekunde oder so, je nach Wichitgkeit des Codes.

  • Guten Tag, mal ne kurze Frage:


    Ich wollte nun ein Dynamisches (was ehh jeder hat) erstellen und stoße dabei auf folgendes Problem:
    Ich möchte nicht, dass jeder Spieler in dieses Fahrzeug kann.


    Also habe ich der maximalen Anzahl an Fraktionsfahrzeugen eine FraktionsID zugewiesen und diese mit der Fraktion des Spielers verglichen. Aber woher weis der Server jetzt, dass ich GENAU dieses FAHRZEUG meine, in das er einsteigt?
    Kurze Denkhilfe bittööööö
    //der Stock, der Abfragen soll, ob das Auto zu der Fraktion gehört
    stock CheckCar(playerid)
    {
    new veh = GetPlayerVehicleID(playerid);
    for(new i=0; i<MAX_FCARS; i++)
    {
    if(Fcar[i][fID] == Spieler[playerid][pFraktion] ){
    }
    else{
    TogglePlayerControllable(playerid,0);
    TogglePlayerControllable(playerid,1);
    }
    }
    return 1;
    }
    //Der Enum
    enum FrakCars
    {
    fID,
    fModel,
    Float:fX,
    Float:fY,
    Float:fZ,
    Float:fA,
    f1,
    f2
    }
    new Fcar[MAX_FCARS][FrakCars];
    #define MAX_FCARS 200


    Den Stock zum Erstellen braucht ihr glaube ich nicht, den speichern und Laden glaube ich auch nicht :D

  • Du fügst dem enum noch ein vID hinzu. Beim erstellen des Autos dann:


    Fcar[i][vID] = CreateVehicle...


    Und bei der Abfrage im stock:
    if(Fcar[i][vID] == veh && Fcar[i][fID] == Spieler[playerid][pFraktion] ){


    Gerade probiert - Klappt nicht.
    Wenn das Fahrzeug in der Datei "Fraktion=0" stehen hat und ich ebenfalls "Fraktion=0" bin, komme ich nicht in das Fahrzeug.
    Ebenso mit den anderen Ids. Ich hab dir weitere Infos per PN zukommen lassen.

  • Bin gerade etwas weiter gekommen habe trotzdem noch kleine Probleme:
    SetPlayerPos(playerid,-691.9375,939.5940,13.6328);
    SetPlayerFacingAngle(playerid,263.5031);
    SetPlayerCameraPos(playerid,-687.0352,939.7754,13.6328);
    SetPlayerCameraLookAt(playerid,-691.9375,939.5940,13.6328);
    ShowPlayerDialog(playerid,DIALOG_TUTSTEP1,DIALOG_STYLE_MSGBOX,"[RFR] Tutorial Information","Herzlich Willkommen auf Oldschool 1808, damit du dich in Zukunft\nbesser Zurecht findest, wird dir dieses Tutorial helfen!\nBitte beachte dabei, dass wir zwischendurch Fragen gestellt werden!","Okay","");
    }
    }
    }
    if(response == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_REGSTEP_3,DIALOG_STYLE_LIST,"Woher kommst du?","Deutschland\nÖsterreich\nSchweiz\nTürkei","Weiter","");
    }
    }
    return 1;
    }
    if(dialogid == DIALOG_RULES)
    {
    if(response)
    {
    if(listitem == 0)
    {
    ShowPlayerDialog(playerid,DIALOG_RULES,DIALOG_STYLE_MSGBOX,"User Hilfe",rest,"Ok","");
    }
    if(listitem == 1)
    {
    ShowPlayerDialog(playerid,pwchange, DIALOG_STYLE_INPUT,"Passwort Panel","Gib bitte dein neues Passwort an","Annehmen","Abbrechen");
    }
    }
    }


    error 010: invalid function or declaration
    error 010: invalid function or declaration
    error 010: invalid function or declaration
    error 010: invalid function or declaration


    Und ich will das statt dem:
    ShowPlayerDialog(playerid,DIALOG_RULES,DIALOG_STYLE_MSGBOX,"User Hilfe",rest,"Ok","");


    Das da ist:
    new string1[220],string2[350],string3[280],rest[900];
    format(string2, sizeof string2, "*\t/stats /buylevel /upgrade/\n*\t/pay /time /buy /show /id /drink /clothes /members /regeln\n*\t/resetupgrades /tanken /skill /licenses /lotto /spawnchange\n*\t/cancel /accept /eject /usedrugs /contract /fillcar /service\n*\t/propose /divorce /lehrer /togooc /tognews /togfam (/sup)port\n*\t(/a)dmin (/sup)port (/s)hout (/ad)vertise /me\n\n");
    format(rest, sizeof rest, "%s\n%s\n%s\n", string1,string2,string3);
    ShowPlayerDialog(playerid,DIALOG_RULES,DIALOG_STYLE_MSGBOX,"User Hilfe",rest,"Ok","");

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


    Meine Frage, was ist das beste MySQL Tutorial, das es hier in Breadfish gibt? Ich habe schon sehr viele gesehen, war von maddins auch überzeugt, aber die Version ist glaube ich nicht ganz die neuste...
    Da ich aber auch Ressourcen sparend Skripten möchte und keine großen Fehler haben möchte wollte ich fragen, von welchem Tutorial ich am besten Lernen kann. Ich hoffe dass ich das hier so fragen kann....



    Mit freundlichen Grüßen
    Famacertech

  • @Music4You: Danke! Das von maddin sah schon sehr sehr anspruchsvoll aus, dann habe ich welche gesehen die zwar neu waren, aber schlecht Erklärt und umgesetzt. Ich schaue mal rein, danke! Und notfalls kann ich immernoch auf das von maddin zurück greifen und mich einfach vortbilden :P Tut mir sicher nur gut...

  • @Music4You: Danke! Das von maddin sah schon sehr sehr anspruchsvoll aus, dann habe ich welche gesehen die zwar neu waren, aber schlecht Erklärt und umgesetzt. Ich schaue mal rein, danke! Und notfalls kann ich immernoch auf das von maddin zurück greifen und mich einfach vortbilden :P Tut mir sicher nur gut...


    Gerne, es ist zwar im endeffekt besser was reccourcen angeht, aber wie ich finde schwer zu verstehen, also ich habs noch nich verstanden :D

  • Indem du ein 2D-Array erstellst.
    Für jeden Waffenslot (insgesamt 12) benötigst du 2 Werte.
    Waffe & Munition.


    Das ganze dann getrennt speichern.

    the ones who are crazy enough to think that they can change the world, are the ones who do
    - Steve Jobs

  • Ich habe da mal ne kleine frage bezüglich der Vergleichsoperatoren..
    < bedeutet ja = Links ist kleiner als Rechts
    <= und das = Links ist kleiner oder gleich Rechts
    richtig?


    Doch wenn ich in diesem Befehl hier <= benutze wird die SendClientMessage nicht gesendet..!`?!? Und wenn ich nur < benutze funktioniert alles!?! Und das letzte Fahrzeug wird auch gelöscht! also funktioniert < bei mir wie eigendlich <= funktionieren sollte?! und bei <= wird alles unter der zeile irwie nicht mehr gelesen... warum funktioniert das mit <= nicht? (Benutze UMP 0.3 e falls das wichtig sein sollte..)

    YCMD:delallv(playerid, params[], help)
    {
    if (help) return SendClientMessage(playerid, yellow, "Löscht alle deine Fahrzeuge.");
    for(new pv = 0; pv < MAX_PLAYER_VEHICLES; pv++) //Die Zeile meine ich!!!
    {
    DestroyVehicle(PlayerVehicle[playerid][pv]);
    PlayerVehicle[playerid][pv] = INVALID_VEHICLE_ID;
    }
    SendClientMessage(playerid, yellow, "Du hast alle deine Fahrzeuge gelöscht.");
    return 1;
    }

    Einmal editiert, zuletzt von SkaterDenis ()

  • Doch wenn ich in diesem Befehl hier <= benutze wird die SendClientMessage nicht gesendet..!`?!? Und wenn ich nur < benutze funktioniert alles!?! Und das letzte Fahrzeug wird auch gelöscht! also funktioniert < bei mir wie eigendlich <= funktionieren sollte?! und bei <= wird alles unter der zeile irwie nicht mehr gelesen... warum funktioniert das mit <= nicht? (Benutze UMP 0.3 e falls das wichtig sein sollte..)


    Das liegt an dem Array von PlayerVehicle.


    Ganz einfach Arrays werden so erstellt:


    new test[3];
    test[0] = 1;
    test[1] = 2;
    test[2] = 3;
    test[3] = 4; //Das würde nicht funktionieren, da der Array nur auf 3 Cells begrenzt ist, also können wir nicht 4 nutzen (0,1,2 = 3 | 0,1,2,3 = 4)


    Bei deiner Schleife ist das das selbe, nur das hier kein Fehler während des Compilierens kommt, sondern erst während die Schleife ausgeführt wird.


    <= würde ja bedeuten, dass wir (jetzt auf mein Beispiel bezogen) in die 4. Cell was schreiben wollen, obwohl wir nur 3 haben.


    Deshalb < damit wir nur 0,1,2 beschreiben und nicht 0,1,2,3 ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S