Beiträge von Jeffry

    Du könntest, mit OnPlayerUpdate abfragen, ob der Spieler in der Luft ist und in einem Fahrzeug (MapAndreas Plugin). Wenn das der Fall ist, dann setzt du eine Spieler Variable auf 1,und wenn sich dann innerhalb der nächsten 5 Sekunden sein Geld ändert (sagen wir bis maximal 100.000) dann gibst du dem Spieler die Differenz die er vor dem Update und nach dem Update hatte, via Server Geld.
    Das wäre auch relativ sicher gegen Money Hacker.

    if(mysql_errno() != 0) print("Keine Verbindung zur Datenbank.");


    mysql_errno gibt 0 zurück, wenn alles OK ist. Wenn nicht, dann besteht keine Verbindung mehr.

    SCMTAEx(-1,"[Server] %s %s hat die Zeit auf %d:00 Uhr gestellt.",AdminNamen[GetLevelIndex(pAdmin[playerid][pAdmin])],name,zeit);


    stock GetLevelIndex(level)
    {
    switch(level)
    {
    case 0..5: return level;
    case 1337: return 6;
    case 1338: return 7;
    case 1449: return 8;
    case 1450: return 9;
    }
    return 10;
    }


    Um falsche Levels abzufangen und kein Array zu sprengen:
    #define MAX_ADMINS 11
    new AdminNamen[MAX_ADMINS][20]={
    "Zivilist", //Admin Lvl 0
    "Supporter", //Admin Lvl 1
    "Admin(2)", //Admin Lvl 2
    "Admin(3)", //Admin Lvl 3
    "Admin(4)", //Admin Lvl 4
    "Admin(5)", //Admin Lvl 5
    "Head Admin", //Admin Lvl 1337
    "Server Manager", //Admin Lvl 1338
    "Scripter", //Admin Lvl 1449
    "Server Leitung" //Admin Lvl 1450
    "Invalid Level" //Fehler?
    };

    Könntest du mir da weiter helfen?


    Müsste so passen:

    Spoiler anzeigen
    //
    // Admin vehicle spawner using previews. For SA-MP 0.3x and above.
    // - Kye 2012
    //

    Spoiler anzeigen
    #include <a_samp>
    #include "../include/gl_common.inc"

    Spoiler anzeigen
    #define TOTAL_ITEMS 207
    #define SELECTION_ITEMS 21
    #define ITEMS_PER_LINE 7

    Spoiler anzeigen
    #define HEADER_TEXT "Vehicles"
    #define NEXT_TEXT "Next"
    #define PREV_TEXT "Prev"

    Spoiler anzeigen
    #define DIALOG_BASE_X 75.0
    #define DIALOG_BASE_Y 130.0
    #define DIALOG_WIDTH 550.0
    #define DIALOG_HEIGHT 180.0
    #define SPRITE_DIM_X 60.0
    #define SPRITE_DIM_Y 70.0

    Spoiler anzeigen
    new gTotalItems = TOTAL_ITEMS;
    new PlayerText:gCurrentPageTextDrawId[MAX_PLAYERS];
    new PlayerText:gHeaderTextDrawId[MAX_PLAYERS];
    new PlayerText:gBackgroundTextDrawId[MAX_PLAYERS];
    new PlayerText:gNextButtonTextDrawId[MAX_PLAYERS];
    new PlayerText:gPrevButtonTextDrawId[MAX_PLAYERS];
    new PlayerText:gSelectionItems[MAX_PLAYERS][SELECTION_ITEMS];
    new gSelectionItemsTag[MAX_PLAYERS][SELECTION_ITEMS];
    new gItemAt[MAX_PLAYERS];

    Spoiler anzeigen
    new adminCar[MAX_VEHICLES];

    Spoiler anzeigen
    new gItemList[TOTAL_ITEMS] = {
    400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,
    431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,450,451,452,453,454,455,456,457,458,459,460,461,
    462,463,464,465,466,467,468,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,
    493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,
    524,525,526,527,528,529,530,531,532,533,534,535,536,539,540,541,542,543,544,545,546,547,548,549,550,551,552,553,554,
    555,556,557,558,559,560,561,562,563,564,565,566,567,568,571,572,573,574,575,576,577,578,579,580,581,582,583,584,585,
    586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,609,610,611
    };

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    GetNumberOfPages()
    {
    if((gTotalItems >= SELECTION_ITEMS) && (gTotalItems % SELECTION_ITEMS) == 0)
    {
    return (gTotalItems / SELECTION_ITEMS);
    }
    else return (gTotalItems / SELECTION_ITEMS) + 1;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    PlayerText:CreateCurrentPageTextDraw(playerid, Float:Xpos, Float:Ypos)
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, "0/0");
    PlayerTextDrawUseBox(playerid, txtInit, 0);
    PlayerTextDrawLetterSize(playerid, txtInit, 0.4, 1.1);
    PlayerTextDrawFont(playerid, txtInit, 1);
    PlayerTextDrawSetShadow(playerid, txtInit, 0);
    PlayerTextDrawSetOutline(playerid, txtInit, 1);
    PlayerTextDrawColor(playerid, txtInit, 0xACCBF1FF);
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }

    Spoiler anzeigen
    //------------------------------------------------
    // Creates a button textdraw and returns the textdraw ID.

    Spoiler anzeigen
    PlayerText:CreatePlayerDialogButton(playerid, Float:Xpos, Float:Ypos, Float:Width, Float:Height, button_text[])
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, button_text);
    PlayerTextDrawUseBox(playerid, txtInit, 1);
    PlayerTextDrawBoxColor(playerid, txtInit, 0x000000FF);
    PlayerTextDrawBackgroundColor(playerid, txtInit, 0x000000FF);
    PlayerTextDrawLetterSize(playerid, txtInit, 0.4, 1.1);
    PlayerTextDrawFont(playerid, txtInit, 1);
    PlayerTextDrawSetShadow(playerid, txtInit, 0); // no shadow
    PlayerTextDrawSetOutline(playerid, txtInit, 0);
    PlayerTextDrawColor(playerid, txtInit, 0x4A5A6BFF);
    PlayerTextDrawSetSelectable(playerid, txtInit, 1);
    PlayerTextDrawAlignment(playerid, txtInit, 2);
    PlayerTextDrawTextSize(playerid, txtInit, Height, Width); // The width and height are reversed for centering.. something the game does <g>
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    PlayerText:CreatePlayerHeaderTextDraw(playerid, Float:Xpos, Float:Ypos, header_text[])
    {
    new PlayerText:txtInit;
    txtInit = CreatePlayerTextDraw(playerid, Xpos, Ypos, header_text);
    PlayerTextDrawUseBox(playerid, txtInit, 0);
    PlayerTextDrawLetterSize(playerid, txtInit, 1.25, 3.0);
    PlayerTextDrawFont(playerid, txtInit, 0);
    PlayerTextDrawSetShadow(playerid, txtInit, 0);
    PlayerTextDrawSetOutline(playerid, txtInit, 1);
    PlayerTextDrawColor(playerid, txtInit, 0xACCBF1FF);
    PlayerTextDrawShow(playerid, txtInit);
    return txtInit;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    PlayerText:CreatePlayerBackgroundTextDraw(playerid, Float:Xpos, Float:Ypos, Float:Width, Float:Height)
    {
    new PlayerText:txtBackground = CreatePlayerTextDraw(playerid, Xpos, Ypos,
    " ~n~"); // enough space for everyone
    PlayerTextDrawUseBox(playerid, txtBackground, 1);
    PlayerTextDrawBoxColor(playerid, txtBackground, 0x00000099);
    PlayerTextDrawLetterSize(playerid, txtBackground, 5.0, 5.0);
    PlayerTextDrawFont(playerid, txtBackground, 0);
    PlayerTextDrawSetShadow(playerid, txtBackground, 0);
    PlayerTextDrawSetOutline(playerid, txtBackground, 0);
    PlayerTextDrawColor(playerid, txtBackground,0x000000FF);
    PlayerTextDrawTextSize(playerid, txtBackground, Width, Height);
    PlayerTextDrawBackgroundColor(playerid, txtBackground, 0x00000099);
    PlayerTextDrawShow(playerid, txtBackground);
    return txtBackground;
    }

    Spoiler anzeigen
    //------------------------------------------------
    // Creates a model preview sprite

    Spoiler anzeigen
    PlayerText:CreateModelPreviewTextDraw(playerid, modelindex, Float:Xpos, Float:Ypos, Float:width, Float:height)
    {
    new PlayerText:txtPlayerSprite = CreatePlayerTextDraw(playerid, Xpos, Ypos, ""); // it has to be set with SetText later
    PlayerTextDrawFont(playerid, txtPlayerSprite, TEXT_DRAW_FONT_MODEL_PREVIEW);
    PlayerTextDrawColor(playerid, txtPlayerSprite, 0xFFFFFFFF);
    PlayerTextDrawBackgroundColor(playerid, txtPlayerSprite, 0x000000EE);
    PlayerTextDrawTextSize(playerid, txtPlayerSprite, width, height); // Text size is the Width:Height
    PlayerTextDrawSetPreviewModel(playerid, txtPlayerSprite, modelindex);
    PlayerTextDrawSetPreviewRot(playerid,txtPlayerSprite, -16.0, 0.0, -55.0);
    PlayerTextDrawSetSelectable(playerid, txtPlayerSprite, 1);
    PlayerTextDrawShow(playerid,txtPlayerSprite);
    return txtPlayerSprite;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    DestroyPlayerModelPreviews(playerid)
    {
    new x=0;
    while(x != SELECTION_ITEMS) {
    if(gSelectionItems[playerid][x] != PlayerText:INVALID_TEXT_DRAW) {
    PlayerTextDrawDestroy(playerid, gSelectionItems[playerid][x]);
    gSelectionItems[playerid][x] = PlayerText:INVALID_TEXT_DRAW;
    }
    x++;
    }
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    ShowPlayerModelPreviews(playerid)
    {
    new x=0;
    new Float:BaseX = DIALOG_BASE_X;
    new Float:BaseY = DIALOG_BASE_Y - (SPRITE_DIM_Y * 0.33); // down a bit
    new linetracker = 0;

    Spoiler anzeigen
    new itemat = GetPVarInt(playerid, "vspawner_page") * SELECTION_ITEMS;

    Spoiler anzeigen
    // Destroy any previous ones created
    DestroyPlayerModelPreviews(playerid);

    Spoiler anzeigen
    while(x != SELECTION_ITEMS && itemat < gTotalItems) {
    if(linetracker == 0) {
    BaseX = DIALOG_BASE_X + 25.0; // in a bit from the box
    BaseY += SPRITE_DIM_Y + 1.0; // move on the Y for the next line
    }
    gSelectionItems[playerid][x] = CreateModelPreviewTextDraw(playerid, gItemList[itemat], BaseX, BaseY, SPRITE_DIM_X, SPRITE_DIM_Y);
    gSelectionItemsTag[playerid][x] = gItemList[itemat];
    BaseX += SPRITE_DIM_X + 1.0; // move on the X for the next sprite
    linetracker++;
    if(linetracker == ITEMS_PER_LINE) linetracker = 0;
    itemat++;
    x++;
    }
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    UpdatePageTextDraw(playerid)
    {
    new PageText[64+1];
    format(PageText, 64, "%d/%d", GetPVarInt(playerid,"vspawner_page") + 1, GetNumberOfPages());
    PlayerTextDrawSetString(playerid, gCurrentPageTextDrawId[playerid], PageText);
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    CreateSelectionMenu(playerid)
    {
    gBackgroundTextDrawId[playerid] = CreatePlayerBackgroundTextDraw(playerid, DIALOG_BASE_X, DIALOG_BASE_Y + 20.0, DIALOG_WIDTH, DIALOG_HEIGHT);
    gHeaderTextDrawId[playerid] = CreatePlayerHeaderTextDraw(playerid, DIALOG_BASE_X, DIALOG_BASE_Y, HEADER_TEXT);
    gCurrentPageTextDrawId[playerid] = CreateCurrentPageTextDraw(playerid, DIALOG_WIDTH - 30.0, DIALOG_BASE_Y + 15.0);
    gNextButtonTextDrawId[playerid] = CreatePlayerDialogButton(playerid, DIALOG_WIDTH - 30.0, DIALOG_BASE_Y+DIALOG_HEIGHT+100.0, 50.0, 16.0, NEXT_TEXT);
    gPrevButtonTextDrawId[playerid] = CreatePlayerDialogButton(playerid, DIALOG_WIDTH - 90.0, DIALOG_BASE_Y+DIALOG_HEIGHT+100.0, 50.0, 16.0, PREV_TEXT);

    Spoiler anzeigen
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    DestroySelectionMenu(playerid)
    {
    DestroyPlayerModelPreviews(playerid);

    Spoiler anzeigen
    PlayerTextDrawDestroy(playerid, gHeaderTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gBackgroundTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gCurrentPageTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gNextButtonTextDrawId[playerid]);
    PlayerTextDrawDestroy(playerid, gPrevButtonTextDrawId[playerid]);

    Spoiler anzeigen
    gHeaderTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gBackgroundTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gCurrentPageTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gNextButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gPrevButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    SpawnVehicle_InfrontOfPlayer(playerid, vehiclemodel, color1, color2)
    {
    new Float:x,Float:y,Float:z;
    new Float:facing;
    new Float:distance;

    Spoiler anzeigen
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, facing);

    Spoiler anzeigen
    new Float:size_x,Float:size_y,Float:size_z;
    GetVehicleModelInfo(vehiclemodel, VEHICLE_MODEL_INFO_SIZE, size_x, size_y, size_z);

    Spoiler anzeigen
    distance = size_x + 0.5;

    Spoiler anzeigen
    x += (distance * floatsin(-facing, degrees));
    y += (distance * floatcos(-facing, degrees));

    Spoiler anzeigen
    facing += 90.0;
    if(facing > 360.0) facing -= 360.0;

    Spoiler anzeigen
    return CreateVehicle(vehiclemodel, x, y, z + (size_z * 0.25), facing, color1, color2, -1);
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    HandlePlayerItemSelection(playerid, selecteditem)
    {
    // In this case we're spawning a vehicle for them
    new vehicleid = SpawnVehicle_InfrontOfPlayer(playerid, gSelectionItemsTag[playerid][selecteditem], -1, -1);
    adminCar[vehicleid] = 1;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    public OnPlayerConnect(playerid)
    {
    // Init all of the textdraw related globals
    gHeaderTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gBackgroundTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gCurrentPageTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gNextButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;
    gPrevButtonTextDrawId[playerid] = PlayerText:INVALID_TEXT_DRAW;

    Spoiler anzeigen
    for(new x=0; x < SELECTION_ITEMS; x++) {
    gSelectionItems[playerid][x] = PlayerText:INVALID_TEXT_DRAW;
    }

    Spoiler anzeigen
    gItemAt[playerid] = 0;

    Spoiler anzeigen
    return 1; // Allow other scripts to keep processing OnPlayerConnect
    }

    Spoiler anzeigen
    //-------------------------------------------
    // Even though only Player* textdraws are used in this script,
    // OnPlayerClickTextDraw is still required to handle ESC

    Spoiler anzeigen
    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(GetPVarInt(playerid, "vspawner_active") == 0) return 0;

    Spoiler anzeigen
    // Handle: They cancelled (with ESC)
    if(clickedid == Text:INVALID_TEXT_DRAW) {
    DestroySelectionMenu(playerid);
    SetPVarInt(playerid, "vspawner_active", 0);
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    return 1;
    }

    Spoiler anzeigen
    return 0;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
    {
    if(GetPVarInt(playerid, "vspawner_active") == 0) return 0;

    Spoiler anzeigen
    new curpage = GetPVarInt(playerid, "vspawner_page");

    Spoiler anzeigen
    // Handle: next button
    if(playertextid == gNextButtonTextDrawId[playerid]) {
    if(curpage < (GetNumberOfPages() - 1)) {
    SetPVarInt(playerid, "vspawner_page", curpage + 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }

    Spoiler anzeigen
    // Handle: previous button
    if(playertextid == gPrevButtonTextDrawId[playerid]) {
    if(curpage > 0) {
    SetPVarInt(playerid, "vspawner_page", curpage - 1);
    ShowPlayerModelPreviews(playerid);
    UpdatePageTextDraw(playerid);
    PlayerPlaySound(playerid, 1084, 0.0, 0.0, 0.0);
    } else {
    PlayerPlaySound(playerid, 1085, 0.0, 0.0, 0.0);
    }
    return 1;
    }

    Spoiler anzeigen
    // Search in the array of textdraws used for the items
    new x=0;
    while(x != SELECTION_ITEMS) {
    if(playertextid == gSelectionItems[playerid][x]) {
    HandlePlayerItemSelection(playerid, x);
    PlayerPlaySound(playerid, 1083, 0.0, 0.0, 0.0);
    DestroySelectionMenu(playerid);
    CancelSelectTextDraw(playerid);
    SetPVarInt(playerid, "vspawner_active", 0);
    return 1;
    }
    x++;
    }

    Spoiler anzeigen
    return 0;
    }

    Spoiler anzeigen
    //------------------------------------------------

    Spoiler anzeigen
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[256+1];
    new idx;

    Spoiler anzeigen
    if(!IsPlayerAdmin(playerid)) return 0;

    Spoiler anzeigen
    cmd = strtok(cmdtext, idx);

    Spoiler anzeigen
    if(strcmp("/vspawner", cmd, true) == 0)
    {
    // If there was a previously created selection menu, destroy it
    DestroySelectionMenu(playerid);

    Spoiler anzeigen
    SetPVarInt(playerid, "vspawner_active", 1);
    //SetPVarInt(playerid, "vspawner_page", 0); // will reset the page back to the first

    Spoiler anzeigen
    CreateSelectionMenu(playerid);
    SelectTextDraw(playerid, 0xACCBF1FF);
    return 1;
    }

    Spoiler anzeigen
    return 0;
    }
    //------------------------------------------------

    Spoiler anzeigen
    public OnVehicleSpawn(vehicleid)
    {
    if(adminCar[vehicleid]) DestroyVehicle(vehicleid);
    adminCar[vehicleid] = 0;
    return 1;
    }
    //------------------------------------------------


    Andreaas:
    http://pastebin.com/4BzKJnLn

    Hier die Erklärungen:


    strfind = Sucht einen string in einem string. (z.B. In "Hallo Welt" wird "Welt" gesucht.) Es wird die Stelle des Texts zurückgegeben (in dem Fall 6).


    strlen = Länge eines strings. (strlen("Hallo") ist 5, da Hallo 5 Buchstaben hat.)


    strval = Wert eines strings. (strval("123") ist 123, als Integer, damit kannst du dann rechnen, mit "123" geht das nicht.)


    strcmp = Vergleicht zwei strings mit einander. ("Hallo" und "Hallo" zum Beispiel) Sind beide strings gleich, wird 0 zurückgegeben.


    strtok = Splittet einen string am Leerzeichen.
    tmp & idx" = Gehört zu strtok. idx Speichert die letzte Position um Ressourcen zu schonen (irrelevant für dich, Hauptsache es ist da). tmp bekommt den Rückgabewert reingeschrieben.
    string = "Hallo Welt";
    tmp = strtok(string, idx); //Hier steht "Hallo" drin
    tmp2 = strtok(string, idx); //Hier steht "Welt" drin


    -----------------------------------


    So, und zu deinem Befehl. Poste doch bitte mal den Code wie du ihn grade hast.
    Füge aber noch als erste Zeile im Befehl ein "print("Test");" ein, und schau, ob das überhaupt geprintet wird, wenn du den Befehl eingibst.


    ItsFreaky | Marcel:

    Schau mal, das ist das Query aus dem ReadUser-Public:


    format(q, 256, "SELECT * FROM user WHERE name = '%s'", mres);
    mysql_query(q);


    Laut crashdetect stürzt der Server zwei Zeilen weiter unten ab, also würde ich mal behaupten, dass dieses Query ausgeführt wird und somit geloggt werden muss, ist es aber nicht. Dort würden auch genaue Details zum Fehlergrund stehen.
    Also entweder du hast nicht alles kopiert, oder es ist sonst irgendwas daneben gegangen. Kannst du es nochmal probieren, und gleich die Zeit vergleichen, ob der letzte Eintrag in dem MySQL Log mit dem des Absturzes übereinstimmt?



    Ich hab grade noch mal die Wiki angeschaut, zu dem:
    mysql_fetch_row(buffer, "|");


    ändere das mal zu:
    mysql_fetch_row_format(buffer, "|");
    oder zu:
    mysql_fetch_row_format(buffer);


    Kannste beides probieren.



    Kannst vergessen, danke an IPrototypeI für den Hinweis, da hab ich gar nicht drauf geachtet. Die meisten hier verwenden das von BlueG, eigentlich alle. :|
    Meep.


    Update das Plugin erst mal.

    Das ist aber nicht alles, oder?
    Zumindest nicht das, was direkt vor dem Absturz geloggt wurde.


    Die Log-Zeilen vor den Absturz müssten diese Abfrage beinhalten
    SELECT * FROM user WHERE name = 'IRGENDWASHIER'


    Die Zeilen, die genau vor dem Absturz geprintet werden sind wichtig, du hast, so wie das aussieht, die Dinge beim Server-Start gepostet.

    Warum hast du die ersten 10 Zeilen der ReadUser Funktion nicht debuggt? In denen ist der Fehler, da der erste print nicht aufgerufen wird in der Funktion.
    Mach das noch.


    Schalte zudem noch den Debug des MySQL Plugins das du benutzt an, bzw. ändere den Log Modus des Plugins, so dass alles was das Plugin macht geprintet wird.


    Dann poste nochmal Log und Funktion.

    Debuggen = prints zwischen die Zeilen, wie vorhin auch.
    Wir müssen ja wissen, vor welcher Zeile der Server abstürzt.


    Mach das mal, poste dann den Code mit den Prints und das was im Server_log steht.


    Debuggen der ReadUser Funktion.

    Jetzt haste erst nicht geschrieben wie du es haben willst, nur was du nicht weißt.


    Jetzt ist es ja so, mit dem Code den ich dir gegeben habe, dass die Kamera grade nach hinten oben geht, wenn man die Türe anstarrt. Wie soll es deinem Wunsch nach sein, wie soll sich die Kamera bewegen, wenn das Ergebnis schonmal stimmt?

    format(string3,sizeof(string3),"Bargeld: %s%0.0f€",sMoney(floatround(sInfo[playerid][Money],floatround_floor)), (sInfo[playerid][Money]-Float:floatround(sInfo[playerid][Money],floatround_floor))*100.0 );


    Versuch es mal so, das müsste dann die Cents anzeigen.