Beiträge von Douq

    TimestampToDate() wandelt einen UNIX-Timestamp in ein Datum um. Der UNIX-Timestamp für gerade JETZT lautet 1539246883 und würde per TimestampToDate() dir folgendes zurückgeben:
    year = 2018, month = 10, day = 11, hour = 10, minute = 35. Speichern würde ich generell immer den UNIX-Timestamp den du in der Variable pAutoRestzeit speicherst. Damit kannst du dir nämlich immer berechnen, wie lange es noch bis zur Zeit pAutoRestzeit dauert, als auch welche Zeit es genau ist.


    Der UNIX-Timestamp ist eine ganze Zahl (int), demnach musst du keinerlei Komma-Stellen beachten. Zur Überprüfung kannst du einfach schauen, ob gettime() > als pAutoRestzeit ist - falls ja, ist die Zeit abgelaufen.

    Ach so - jetzt sehe ich es erst. Hau einfach bei /shopasugang vor das return 1 ein print(query) - dann sollte dir in deinem server_log.txt ein Befehl angezeigt werden. Diesen einfach mal manuell per phpMyAdmin o.ä. ausführen und schauen, ob etwas passiert. Zusätzlich kannst du noch den Query aus dem server_log hier posten.

    1. Lass dir den Query per printf() ausgeben und führe ihn manuell aus - dann sieht du, ob eventuell der Query fehlerhaft ist.


    2. Zusätzlich ist es gewollt, dass der Befehl shopasugang heißt?


    3. Was soll pShopID bewirken? Aus dem Kontext wirkt das nämlich so, als würde es nicht das erfüllen, was du dir eigentlich erhoffst ..

    Lass dir mal per printf den Query ausgeben. Sofern nämlich Query seitige Fehler aufkommen, wird nichts aufgerufen, sofern das OnQueryError(?) Callback nicht existiert.


    Führe ihn dann mal manuell per phpmyadmin o.ä. aus

    Moin,


    spontan würde ich sagen, dass du FillVehicle() noch einen weiteren Parameter mitgibst z.B. fueltype und dann abfragen, ob vehTankType von vehicleData gleich dieser ID ist. Die ID, die er anklickt bekommst du ja durch OnDialogResponse() und dem Parameter listitem.


    Hoffe das ist soweit klar - gerne nachfragen.

    Und wenn man die Tür öffnet

    Entweder hat dann dein FahrzeugMod schlichtweg keine Türen (:D), oder du ermitteltest wann ein Spieler ein- und aussteigen will und erstellst n anderes Objekt, welches die Türen offen hat .. Ob meine oben genannte Lösung wirklich sinnvoll ist, ist halt was anderes

    Es wirkt so, als müsstest du den zweiten Part deiner Abfrage in Zeile 9 negativieren. Rein von der Formulierung würde ich nämlich behaupten, dass du genau das Gegenteil abfragen möchtest, nämlich:

    • fV gleich -1 oder
    • fV ungleich -1 und vehFraktion ungleich pFraktion

    Edit: Nach dem die Funktion gepostet wurde solltest du -1 durch INVALID_PLAYER_ID ersetzen

    Hi,
    komme gerade komplett nicht weiter.
    Bin gerade bei einem Kick-Befehl, der auch soweit funktioniert, allerdings bekommt der gekickte User die Kick Nachricht nicht.. Wieso?


    forward KickTimer(playerid);ocmd:kick(playerid,params[]){if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");if(isPlayerAnAdmin(playerid,2)){new pID, string[128], reason;if(sscanf(params,"us",pID, reason))return SendClientMessage(playerid,GRAU, "Befehl: [Name/Spieler-ID] [Grund]");{format(string, sizeof(string),"AdmCMD: %s hat %s gekickt. Grund: %s", SpielerDaten[playerid][pName], SpielerDaten[pID][pName], reason);SetTimerEx("KickTimer", 250, false, "i", pID);{SendClientMessage(pID, ADMCMD, string);SendClientMessageToAll(ADMCMD, string);Kick(pID);}}}return 1;}

    Liegt an die Priorisierung der Pakete. Kick() wird zuerst umgesetzt als SendClientMessage(). Deswegen musst du per Timer Kick zeitversetzt ausführen lassen.

    Die Include sagt folgendes:

    Code
    SetDynamicObjectMaterial(objectid, materialindex, modelid, const txdname[], const texturename[], materialcolor = 0)


    Das deutet also darauf hin, dass du die falsche Include hast. Setze doch mal in die streamer Include:


    Code
    #error "test"

    sofern der Compiler nicht direkt beendet, musst du mal schauen ob du die oben genannte Zeile hast. Sofern ja, muss die Ursache eine andere sein.

    Dann war die Syntax deiner Funktion richtig. Probiere mal vor mysql_connect, mysql_debug(1) zu setzen und schaue, was der mysql_log.txt dir ausgibt. Ist es eine Verbindung von außerhalb? Falls ja - sind externe Zugriffe erlaubt? Was ist als Hostname eingetragen?

    Was sofort auffällt: Du überprüfst nirgends, ob killerid = INVALID_PLAYER_ID ist. Das ist immer dann der Fall, wenn der Spieler ohne Einwirkungen eines anderen Spielers stirbt. Näheres hier: http://wiki.sa-mp.com/wiki/OnPlayerDeath


    Daran sollte aber zumindestens die Problematik, dass die Gangs bei ihrer Base spawnen nicht liegen. Kannst du uns nochmal dein OnPlayerSpawn() inkl. Funktionen, die aufgerufen werden zeigen (möglicherweise SetPlayerSpawn() o.ä. (typische GF Funktion).)

    Hey,


    sofern ich das richtig verstanden habe:


    Ich würde den Fakten einfach eine StreetNr geben. Sofern ich das richtig verstanden habe, ist der "Eigentümer" der Street ja auch zeitgleich der jenige, der die Fakten zsm fasst? Dadurch kannst du dir dann alle Fakten ausgeben, die die gleiche Steet haben.


    Zum anderen:
    Ich würde eine extra Tabelle für die Quellen machen - beispielsweise FaktID und Quelle. Dann kannst du auch hier alle Quellen per FaktID selektieren und ggf. ausgeben.


    Zur Ausgabe würde sich dann innerhalb eines Berichts / Formulars ein Unterbericht / Unterformular anbieten.

    Such mal nach "Konnte keine Verbindung zur Datenbank aufbauen!" oder "mysql_connect". Da wirst du dann entweder eine Funktion oder einen Codeabschnitt innerhalb von OnGameModeInit finden.


    Du hattest am Anfang deine Daten per Screenshot drin - die hatte ich gelöscht. Es ist zu vermuten, dass durch die fehlerhafte Verbindung zur Datenbank das Skript die Verbindung beendet. Sicher, dass die Daten richtig sind? Kannst du dich per phpMyAdmin o.ä. verbinden? Wenn ich mich recht entsinne hattest du die "öffentliche IP" drin. Ist die Datenbank auf dem Server, auf welchem die SA:MP Instanz läuft? Falls ja, probiere mal 127.0.0.1 als IP einzutragen.


    Sofern du nämlich keinen externen Zugriff erlaubst, sollte auch die IP theoretisch für die Datenbankverbindung geblockt werden.