Beiträge von Jeffry

    Sprich wenn man dann zu nem Checkpoint angelangt ist soll es nicht mehr Attached werden aber das Objekt soll sich bewegen und halt wieder in die Hand attached werden.

    Um es zu entfernen musst du es mit DestroyDynamicObject löschen, und an der entsprechenden Stelle neu erstellen.

    Siehe hier:
    Nützliche Codeschnipsel



    new age = GetPlayerAge(inputtext);
    if(age == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Ungültiges Geburtsdatum.");



    Im Query steht:
    money = '150010',


    Laut Query sollte es also auf 150010 in der Datenbank stehen.
    Ist das nicht der Fall?


    Es sieht nämlich alles korrekt aus.
    Heißt dir Spalte in deiner Tabelle auch money?

    Steht der Code beim Betreten des Pickups unter OnPlayerPickUpPickup oder OnPlayerPickUpDynamicPickup? Es sieht fast so aus als steht er bei OnPlayerPickUpPickup.


    In letzterem (OnPlayerPickUpDynamicPickup) muss er aber stehen.

    Das war nur als Quelle gedacht, das ist der Code (ein Teil davon) des Streamer Plugins, in dem ist die Meldung, die du im Log bekommst, zu finden (STRG+F).
    Was du benötigst ist das YSF Plugin.

    Was gibt dir der MySQL Log aus, wenn du den Server betrittst?
    Falls nichts ausgegeben wird, füge mysql_debug(1); bei OnGameModeInit ein und teste es erneut.


    Passe testweise eventuell in Zeile 4883
    ergebnis = mysql_fetch_int();
    zu:
    ergebnis = mysql_num_rows();
    an, und teste ob es dann klappt.

    Beim Laden:
    PickupInfo[id][PickupWelt] = welt;
    zu:
    PickupInfo[id][PickupWelt] = welt;
    printf("id: %d, welt: %d", id, welt);


    Was wird dir da so ausgegeben, zusammen mit dem Print zuvor beim Betreten des Pickups?

    Was steht so im Server Log?
    for(new i = 0; i < MAX_MUELLTONNEN1; i++)
    {
    new zufalltonne = random(3);
    Muelltonnen_Info1[i][MuelltonneErstellt1] = true;
    Muelltonnen_Info1[i][NachsteMuelltonne1] = 0;
    Muelltonnen_Info1[i][MuelltonneArt1] = zufalltonne;
    Muelltonnen_Info1[i][Mueltonne] = CreateDynamicObject(Muelltonnen_Info1[i][MuelltonneObjekt1],Muelltonnen_Info1[i][m_t_posX1],Muelltonnen_Info1[i][m_t_posY1],Muelltonnen_Info1[i][m_t_posZ1],Muelltonnen_Info1[i][m_t_posRX1],Muelltonnen_Info1[i][m_t_posRY1],Muelltonnen_Info1[i][m_t_posRZ1]);
    printf("Erstellt: i: %d / Objekt: %d", i, Muelltonnen_Info1[i][Mueltonne]);
    }


    if(newkeys & KEY_SPRINT)
    {
    for(new i = 0; i < MAX_MUELLTONNEN1; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, Muelltonnen_Info1[i][m_t_posX1], Muelltonnen_Info1[i][m_t_posY1], Muelltonnen_Info1[i][m_t_posZ1]))
    {
    printf("Attache: i: %d / Objekt: %d", i, Muelltonnen_Info1[i][Mueltonne]);
    //AttachObjectToPlayer(Muelltonnen_Info1[i][Mueltonne], playerid, 0, 0.5, -0.5, 0, 0, 0);
    AttachDynamicObjectToPlayer(Muelltonnen_Info1[i][Mueltonne], playerid, 0, 0.5, 0.3, 0, 0, 0);
    //SetPlayerSpecialAction(playerid, SPECIAL_ACTION_CARRY);
    //DestroyDynamicObject(Muelltonnen_Info1[i][Mueltonne]);
    }
    }
    }

    Das geht natürlich nur bei OnPlayerPickUpPickup. Sofern dein Abfrage Code woanders ist musst du die Schleife beibehalten. Ich bin einfach mal davon ausgegangen, dass er bei OnPlayerPickUpPickup steht.

    Ohne die Schleife, anstatt i pickupid.
    PickupInfo[pickupid][PickupWelt]


    Das IsPlayerInRangeOfPoint brauchst du auch nicht unbedingt, denn wenn der Spieler das Pickup betritt, ist er ja auch in der Nähe davon.

    PickupInfo[PickupInfo[i][ID]][PickupWelt]
    Zu
    PickupInfo[i][PickupWelt]


    Die Schleife kannst du dir so aber eigentlich komplett sparen, da der Index der pickupid entspricht, somit kannst du ohne Schleife direkt anstatt i pickupid nutzen, und hast damit gleich das richtige Pickup, du müsstest nur prüfen, ob das Pickup auch ein solches ist, oder ob z.B. die saveID 0 ist, dann wäre es ein anderes Pickup (falls es das gibt).