Beiträge von Levis_Escobar

    Ich sitze jetzt ungefähr eine halbe Stunde dran und finde keine Lösung.
    Ich habe in der Datenbank einen Timestamp, bis wann der Spieler gebannt wurde.
    Nun möchte Ich mit Hilfe des Timestamp's herrausfinden, bis wann der Spieler gebannt wurde,
    in folgendem Format:


    Zitat

    Gebannt bis: 01.01.1970 00:00 Uhr


    Code

    new String[128], time, days, months, years, hours, minutes, seconds, timeget, dateget;
    time = mysql_GetInt("srv_accounts", "Timeban", "Name", PlayerName(playerid));
    timeget = gettime(hours, minutes, seconds) + time;
    dateget = getdate(years, months, days) + time;
    printf("%s%s", timeget, dateget);
    format(String, sizeof(String), "Dein Timeban läuft noch zum %02d.%02d.%d, %02d:%02d Uhr.", days, months, years, hours, minutes);
    SendClientMessage(playerid, DUNKELROT, String);
    SetTimerEx("PlayerKickTimer", 1000, false, "d", playerid);


    /e2
    Komisch.. Nun bekomme Ich immer die aktuellste Uhrzeit. 1:55 :pinch:
    Problem gelöst

    Da Ich wegen Schulichen Probleme mal inaktiv war, habe Ich halt mal zwischendurch etwas Fragen.
    Ich mag es nicht jedes mal einen Thread für einzelne Probleme zu eröffnen, also stelle Ich gleich meine letzte Frage
    die mir so im Herzen steht.


    Ich habe einen /Help Befehl, leider sind dort zuviele Befehle und Sie werden nicht ganz so richtig angezeigt,
    sondern nur bis zur Hälfte.


    In der 0.3a bis 0.3c war es ja so, dass Ich die gleichen Strings mehrmals formatieren kann, was irgendwie seid der 0.3x nicht ganz so funktioniert.
    Da die maximale Länge eines Strings nur 128 ist, frage Ich mich, wieso das Dialog aber doch alle Befehle anzeigt, wenn Ich die maximale Länge auf 2048 setze.
    Liegt es daran, dass jede Formatierung 128 maximale Länge bekommt sprich, nicht aufgeteilt wird?


    Würde mich sehr interessieren, da Ich mich auf den neusten Stand halten will.

    Mach es doch ohne Timer und lass abfragen wenn jemand Rechtsklick(Anzoomen) drückt, frisst am wenigsten Resourcen.

    Dies werde Ich sowieso, Ich habe noch vor ein Textdraw anzuzeigen, wenn der Spieler die NoDM Zone betritt.
    Ich werde wahrscheinlich einen Timer starten für den ganzen Server mit einer Sekunde.
    Für jeden Spieler einen eigenen Timer zu setzen, ist ja auch nicht schön.

    Finde persönlich immernoch ocmd am besten.

    Okey danke euch beiden dann erstmal.
    Bevor Ich ein neuen Thread eröffne:
    Ich bin dabei ein NoDM Zone zu scripten, wie sollte Ich am besten mit der Abfrage vorgehen?
    Unter OnPlayerUpdate würde es sehr viel an Resource ziehen, gibt es auch andere Variaten/Methoden?


    Wenn Ich einen Timer machen würde, wieviele Sekunden sollte Ich am besten machen?
    Ich frage halt mal so auf Sicherheit, ist immer schön von anderen die Meinungen zu hören ^^
    /e Die zweite Frage hat sich nun geklärt.

    Ich scripte sehr lange und will immer sehr Resourcefrei, sauber und übersichtlicht scripten.
    Ich stelle mir aus dem Grund die Frage, welches A-Zcmd besser ist?
    Ich verwende seid 3 Jahren dCMD, aber vielleicht ist beispielweise oCMD besser, einfacher und Resourcefreier?
    Ich will mich immer auf den neusten halten und frage auch wirklich nur die Nutzer, die Ahnung haben und es auch begründen können.

    Du kannst folgendes machen.
    Wenn der Spieler in ein Fahrzeug einsteigt (OnPlayerEnterVehicle), setzt du einen Timer der sich wiederholt.
    Bei jedem Aufrufen des Timers ziehst du dem Spieler sein Geld je nach Betrag ab.
    Du solltest nicht vergessen zu überprüfen, ob er in ein Taxifahrzeug einsteigt.
    Was auch nicht zu vergessen ist, den Timer zu brechen, sobald der Spieler das Fahrzeug verlässt (OnPlayerExitVehicle).

    Deine Variante ist nur besser, wenn er viele Koordinaten hat, wenn es ein einfacher /stadthalle - Befehl oder Ähnliches ist, ist meine Variante besser und er will nunmal nur 2 Koordinaten haben.


    Also bleibt da kein Platz für eine Diskussion welche Variante besser ist.

    Ich habe ja dazu geschrieben, FALLS er weitere Kordinaten verwenden will.
    Natürlich ist deine Variante besser, wenn man weniger als 3 bzw. 4 Kordinaten hat.
    Ich habe jedoch meine Variante noch dazu geschrieben, für die Suchfunktion.
    Eine kleine Diskussion ist nicht schlecht, da die Leser die die Suchfunktion nutzen, wissen welche Variante welche Unterschiede hat.
    Nehme es mir nicht böse, aber es sollte garnicht als eine Diskussion bzw. böse rüber kommen. ^^


    Mr.Undercover
    Nächstesmal kannst du alles in einem PAWN Code packen und auf die Rechtschreibung achten.
    Groß-/Kleinschreibung ist in jeder Programmiersprache wichtig.

    Und ganz einfach geht es so:
    if(IsPlayerInRangeOfPoint(playerid, 5.0, -250.0669,2582.3430,63.5703) || IsPlayerInRangeOfPoint(playerid, 5.0, -1482.0016,2626.0391,58.7813))


    Ich finde meine Variante besser. Er hat eine bessere übersichtlicht und muss nicht jedes mal scrollen, falls er weitere Kordinaten einfügen will. ^^

    new Float:Kordinaten[Anzahl der Kordinaten][3] = {
    {X, Y, Z},
    {X, Y, Z},
    {X, Y, Z}
    };


    stock IsPlayerAtKordinaten(playerid)
    {
    new x;
    for(; x < sizeof(Kordinaten); ++x)
    {
    if(IsPlayerInRangeOfPoint(playerid, 7.0, Kordinaten[x][0], Kordinaten[x][1], Kordinaten[x][2]))
    {
    return 1;
    }
    }
    return 0;
    }


    Und abfragen kannst du es so
    if(IsPlayerAtKordinaten(playerid))
    {
    // Er ist bei einer der Kordinaten, was passiert nun?
    } else {
    // Er ist bei keiner der Kordinaten, was passiert nun?
    }

    @Doomster Das war wohl ein Missverständniss. Eine Grafikkarte kann auch kaputt gehen, ganz Recht.
    Ich habe deine Aussage aber anders genommen, so wie "Vielleicht ist die Grafikkarte alt".


    Tud mir dann leid.


    B2T:
    Gebe mal Informationen was das Kaufdatum ect. betritt.
    Wie lange hast du das Laptop? Ist es dir mal runtergefallen?
    Vielleicht ist es ein Zufall mit CSS und SAMP. Hast du auch schon Spiele probiert die mehr Resourcen nehmen (zB. Minecraft)?


    Wie viel Arbeitsspeicher (RAM) kannst du denn verwenden?
    Hast du etwas am Laptop umgebaut? War es mal in der Reperatur?

    Grafikkarte langsam durch?

    Wenn du keine Ahnung hast, schreibe doch nichts.


    So wie Ich sehe ist es kein alter PC von 2002 oder sonstiges.
    Ich denke eher, es liegt an der Einstellungen deiner Grafikkarte bzw. hast du einen Grafiktreiber installiert? Ich denke mal ja.
    Ist dein Computer/Notebook/Laptop auch gereinigt? Sprich, hast du mal CCleaner ausgeführt und sämtliche unnötige Dateien gelöscht?
    Als letztes würde Ich noch das Betriebsystem wissen, welches Windows?

    Versuch es mal so
    ocmd:Veh(playerid,params[])
    {
    new Float:x, Float:y, Float:z, Float:angle,color1,color2,carid;
    if(sscanf(params, "ddd",carid,color1,color2)) return SendClientMessage(playerid,ROT, "Tipp:/Veh [FAHRZEUGID] [COLOR-1] [COLOR-2]");
    if(carid < 0 || carid > 611) return SendClientMessage(playerid,ROT, "Es muss eine Fahrzeug ID zwischen 0 und 611 sein!");
    if(color1 < 0 || color1 > 255 || color2 < 0 || color2 > 255) return SendClientMessage(playerid,ROT, "Die Farb-IDs müssen zwischen 0 und 255 sein!");
    {
    GetPlayerPos(playerid, x,y,z);
    GetPlayerFacingAngle(playerid, angle);
    new besitzers[MAX_PLAYER_NAME+1], id = CreateVehicle(carid, x,y,z,angle,color1,color2,-1);
    format(besitzers,sizeof(besitzers),NAMEN(playerid));
    CarInfo[id][abesitzer] = besitzers;
    CarInfo[id][aID] = id;
    CarInfo[id][aX] = x;
    CarInfo[id][aY] = y;
    CarInfo[id][aZ] = z;
    CarInfo[id][aAngle] = angle;
    CarInfo[id][aModel] = carid;
    CarInfo[id][afarbe1] = color1;
    CarInfo[id][afarbe2] = color2;
    CarInfo[id][alocked] = 1;
    SpeicherFahrzeug(id);
    SetVehicleNumberPlate(id,NAMEN(playerid));
    PutPlayerInVehicle(playerid, id, 0);
    SendClientMessage(playerid,ROT, "Car gespawnt!");
    new string1[126];
    format(string1,sizeof(string1),"%s hat sich ein Fahrzeug mit der ID:%i erstellt.",NAMEN(playerid),carid);
    print(string1);
    }
    return 1;
    }