Beiträge von Douq

    Ganz Einfach, der Besitzer wird als Integer Gespeichert (Die Datenbank ID vom User). Ich möchte nämlich den Namen nicht als String speichern aus dem Grund, wenn sich jemand bsp. als "Niemand" Registriert und ich frage ab ob der String = Name ist, dann gehört diesem JEDE Biz bzw. ist überall Teilhaber. Somit möchte ich mit der Datenbank ID vom User arbeiten.
    Ich lade erst die Bizzen und da bei OnLoadBiz der Name aus der Datenbank (GetNameFromDB) aufgerufen wird um den Namen des eingetragenen Integers abzufragen Sprich welcher Name steckt hinter der Datenbank ID bsp. 1


    MfG
    XonarZ

    Das lässt sich deutlich einfacher mit einem LEFT JOIN verwirklichen. Dann kannst du dir das zusätzliche ermitteln des Namens sparen. Müsste in etwa so aussehen:



    SQL
    SELECT biz_tabelle.*, user.username FROM biz_tabelle LEFT JOIN user ON user.id = biz_tabelle.biz_owner

    user.username musst du noch an deinen Spaltennamen anpassen + per cache_get_value_name() dir den username holen.

    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).)