Beiträge von Jeffry

    Du hattest bei der Drehung zwei mal 360/0 Grad stehen, und es waren keine 90'er Sprünge.


    Teste es so:
    dBoden =CreateObject(13607, 1478.07996, -1799.66003, 227.06000, 0.00000, 0.00000, 0.00000);
    MoveObject(dBoden,1478.07996, -1799.661, 227.06000, OBJECT_SPEED, 0.00000, 0.00000, 90.00000);
    SetTimerEx("TurnObject", 750, 0, "dd", dBoden, 0);


    forward TurnObject(objectid, objpos);
    public TurnObject(objectid, objpos)
    {
    if(objectid == dBoden)
    {
    switch(objpos)
    {
    case 0: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.01, OBJECT_SPEED, 0.00000, 0.00000, 180.0), objpos = 1;
    case 1: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.02, OBJECT_SPEED, 0.00000, 0.00000, 270.0), objpos = 2;
    case 2: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.03, OBJECT_SPEED, 0.00000, 0.00000, 0.0), objpos = 3;
    case 3: MoveObject(dBoden, 1478.07996, -1799.66003, 227.06000+0.04, OBJECT_SPEED, 0.00000, 0.00000, 90.0), objpos = 0;
    }
    SetTimerEx("TurnObject", 750, 0, "dd", dBoden, objpos);
    }
    return 1;
    }


    Mit OBJECT_SPEED als 0.001.

    Ja, wie gesagt, du musst es formatieren:
    new strx[32];
    format(strx, sizeof(strx), "PayDay in: %d/60", ZEIT_WANN_PAYDAY);
    TextDrawSetString(Copyright, strx);


    ZEIT_WANN_PAYDAY eben mit der Variable ersetzen, die du hast um runterzuzählen wann PayDay ist.
    Logischerweise musst du das auch in einen Timer packen, damit es aktualisiert wird.

    IntelCore.I7:


    Spoiler anzeigen
    if(strcmp(cmd, "/ajail", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /ajail [Spieler ID / Name] [Zeit in Minuten] [Grund]");
    return 1;
    }
    new playa;
    new money, tmp2[256];
    playa = ReturnUser(tmp);
    tmp2 = strtok(cmdtext, idx);
    money = strval(tmp2);
    if(!strlen(cmdtext[strlen(cmd)+strlen(tmp)+strlen(tmp2)+2]))
    {
    SendClientMessage(playerid, COLOR_GRAD2, "Benutze: /ajail [Spieler ID / Name] [Zeit in Minuten] [Grund]");
    return 1;
    }
    if(playa == playerid)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst nicht dich selber einsperren!");
    return 1;
    }
    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[playa][pAdmin])
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du kannst keinen höherrangigen Admin einsperren!");
    return 1;
    }
    if (PlayerInfo[playerid][pAdmin] >= 1)
    {
    if(IsPlayerConnected(playa))
    {
    if(playa != INVALID_PLAYER_ID)
    {
    GetPlayerName(playa, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    format(string, sizeof(string), "* Du hast %s eingesperrt. Grund: %s", giveplayer,cmdtext[strlen(cmd)+strlen(tmp)+strlen(tmp2)+2]);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "* Du wurdest von Admin %s in das Admin-Jail gesperrt. Grund: %s", sendername,cmdtext[strlen(cmd)+strlen(tmp)+strlen(tmp2)+3]);
    SendClientMessage(playa, COLOR_LIGHTRED, string);
    ResetPlayerWeapons(playa);
    WantedPoints[playa] = 0;
    PlayerInfo[playa][pJailed] = 1;
    PlayerInfo[playa][pJailTime] = money*60;
    SetPlayerInterior(playa, 3);
    SetPlayerPos(playa, 197.8290,161.8141,1003.0300);
    format(string, sizeof(string), "Du wurdest für %d Minuten eingesperrt.[Zu unrecht ? Melde dich im Teamspeak3]", money);
    SendClientMessage(playa, COLOR_LIGHTBLUE, string);
    }
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Du darfst diesen Befehl nicht benutzen!");
    }
    }
    return 1;
    }


    Ich hatte übersehen, dass du den Befehl auch schon mit strtok splittest. So sollte es gehen.


    Zwecks des PayDays: Du musst den anzuzeigenden Text mit einem "format" formatieren.



    Ich darf nochmal daran erinnern, dass dieser Thread für kleine Scripting Fragen ist, und nicht zum debuggen von MySQL Codes oder sonstigen langen Codes. Dafür kann man einen eigenen Thread machen, das wahrt die Übersichtlichkeit des Forums und vor allem des Threads.

    Ok, das ist ja dann das Problem, dass es nur für registrierte Spieler geladen wird, aber nicht für Spieler die sich neu registrieren.
    public AfterRegister(playerid)
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,mysql);
    if(num_rows == 1){
    sInfo[playerid][pDBID] = cache_get_field_content_int(0,"ID",mysql);
    }
    return 1;
    }


    Und beim registrieren:
    format(query,sizeof(query),"SELECT ID FROM accounts WHERE Name='%s'",SpielerName(playerid));
    mysql_function_query(mysql,query,true,"AfterRegister","i",playerid);

    Aha, aber wo wird dann der Variable
    sInfo[playerid][pDBID]
    ein Wert zugewiesen?


    Falls nirgends, dann mache das in deinem CheckUser, die ID ist ja schon im Cache, musst es nur noch auslesen.

    Warum so umständlich? Schreibe doch einfach das bei der Registrierung rein:
    format(query,sizeof(query),"SELECT ID FROM accounts WHERE Name='%s'",SpielerName(playerid));
    mysql_function_query(mysql,query,true,"CheckUser","i",playerid);


    Dein CheckUser, welches du nicht gepostet hast, sollte ja das machen, was ich annehme.

    Das musst du beim registrieren nochmal machen, da der Spieler ja zum Zeitpunkt des connectens noch keine ID hat, wenn er nicht registriert ist.

    Wie du siehst gibt es keine ID 0, daher kann es auch nicht in die Datenbank gespeichert werden.
    Entweder du speicherst es über den Namen des Spielers, oder du holst dir bei der Registrierung die richtige ID.

    Also laut query wird beides gespeichert, Level und Geld, mit den korrekten Werten. Es wird zu Datenbank ID 0 gespeichert, ist das die ID die du in der Datenbank hast?

    Da fehlt der Code vom Query.
    Schreibe es mal so, und poste dann was im server_log.txt steht:
    stock SpielerSpeichern(playerid){


    printf("SpielerSpeichern für %d", playerid);
    if(sInfo[playerid][pEingeloggt] == 0) return 1;
    new query[1024];
    format(query,sizeof(query),"UPDATE accounts SET Level='%i',Geld='%i', Admin='%i' WHERE ID='%i'",sInfo[playerid][pLevel],GetPlayerMoney(playerid),sInfo[playerid][pAdmin],sInfo[playerid][pDBID]);
    printf("query: %s", query);
    mysql_function_query(mysql,query,false,"","");
    return 1;
    }

    Wie sieht es aus, wenn du es so schreibst?

    Spoiler anzeigen
    public OnPasswordResponse(playerid)
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(num_rows==1)
    {
    LoadPrivatCars(playerid);
    SpielerLaden(playerid);
    StopAudioStreamForPlayer(playerid);
    HideLoginMenu(playerid);
    UpdateReportTD();
    switch (sInfo[playerid][SpawnType])
    {
    case 0:
    {
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], 1093.9182,-1987.8860,69.0609,226.516, 0, 0, 0, 0, 0, 0 );
    SpawnPlayer(playerid);
    }
    case 1:
    {
    new Float:FPosX,Float:FPosY,Float:FPosZ,Float:FPosRT,int,vir;
    FPosX = cache_get_field_content_float(0,"SpawnX",dbhandle);
    FPosY = cache_get_field_content_float(0,"SpawnY",dbhandle);
    FPosZ = cache_get_field_content_float(0,"SpawnZ",dbhandle);
    FPosRT = cache_get_field_content_float(0,"SpawnRT",dbhandle);
    int = cache_get_field_content_int(0,"SpawnInt",dbhandle);
    vir = cache_get_field_content_int(0,"SpawnVir",dbhandle);
    SetSpawnInfo(playerid, 0, sInfo[playerid][SkinID], FPosX,FPosY,FPosZ,FPosRT, 0, 0, 0, 0, 0, 0 );
    SetPlayerInterior(playerid,int);
    SetPlayerVirtualWorld(playerid,vir);
    SpawnPlayer(playerid);
    }
    case 2:
    {
    //HausSpawn
    }
    case 3:
    {
    //Letzter Standort
    }
    }
    //Hier gehts eig. weiter, hat aber nix mehr mit der Funktion zu tun.

    }


    Wenn es nicht geht, poste bitte den Code der das OnPasswordResponse aufruft.