Beiträge von Jeffry

    Du fügst das Query nirgends zusammen.
    Schreibe es so:
    stock SavePlayer(playerid)
    {
    if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid))return 0;
    new query[1500], sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,sname,sizeof(sname));
    PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid), PlayerInfo[playerid][pLevel] = GetPlayerScore(playerid);
    format(query,sizeof query,"UPDATE `spieler` SET `Level`='%d', `Admin`='%d', `DonateRank`='%d', `Reg`='%d', `Sex`='%d', `Age`='%d', `Origin`='%d', `CK`='%d', `Muted`='%d', `Exp`='%d' , `Cash`='%d', `Account`='%d', `Crimes`='%d'",
    PlayerInfo[playerid][pLevel],PlayerInfo[playerid][pAdmin],PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],PlayerInfo[playerid][pAge],PlayerInfo[playerid][pOrigin],PlayerInfo[playerid][pCK],PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],PlayerInfo[playerid][pCash],PlayerInfo[playerid][pAccount],PlayerInfo[playerid][pCrimes]);
    format(query,sizeof query,"%s,`Arrested`='%d', `WantedDeaths`='%d', `PhoneBook`='%d', `LottoNr`='%d', `Job`='%d', `PayCheck`='%d'",
    query,PlayerInfo[playerid][pArrested],PlayerInfo[playerid][pWantedDeaths],PlayerInfo[playerid][pPhoneBook],PlayerInfo[playerid][pLottoNr],PlayerInfo[playerid][pJob],PlayerInfo[playerid][pPayCheck]);
    format(query,sizeof query,"%s,`HeadValue`='%d',`Jailed`='%d',`JailTime`='%d',`GangJailed`='%d',`Mauled`='%d',`Mats`='%d',`Drugs`='%d',`Leader`='%d',`Member`='%d',`FMember`='%d',`Rank`='%d',`Health`='%.2f',`SHealth`='%.2f'",
    query,PlayerInfo[playerid][pHeadValue],PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pJailTime],PlayerInfo[playerid][pGangJailed],PlayerInfo[playerid][pMauled],PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember],PlayerInfo[playerid][pFMember],PlayerInfo[playerid][pRank],PlayerInfo[playerid][pHealth],PlayerInfo[playerid][pSHealth]);
    format(query,sizeof query,"%s,`Int`='%d',`Local`='%d',`Team`='%d',`Model`='%d',`Pnumber`='%d'",
    query,PlayerInfo[playerid][pInt],PlayerInfo[playerid][pLocal],PlayerInfo[playerid][pTeam],PlayerInfo[playerid][pModel],PlayerInfo[playerid][pPnumber]),
    format(query,sizeof query,"%s,`Phousekey`='%d',`Pbiskey`='%d',`CarLic`='%d',`NewLic`='%d',`FlyLic`='%d',`Pos_x`='%.4f',`Pos_y`='%.4f',`Pos_z`='%.4f',`BoatLic`='%d',`FishLic`='%d',`GunLic`='%d',`LKWLic`='%d',`RollerLic`='%d',`MotoLic`='%d',`Zig`='%d',`ZigSucht`='%d'",
    query,PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pPbiskey],PlayerInfo[playerid][pCarLic],PlayerInfo[playerid][pNewLic],PlayerInfo[playerid][pFlyLic],PlayerInfo[playerid][pPos_x],PlayerInfo[playerid][pPos_y],PlayerInfo[playerid][pPos_z],PlayerInfo[playerid][pBoatLic],PlayerInfo[playerid][pFishLic],PlayerInfo[playerid][pGunLic],PlayerInfo[playerid][pLKWLic],PlayerInfo[playerid][pRollerLic],PlayerInfo[playerid][pMotoLic],PlayerInfo[playerid][pZig],PlayerInfo[playerid][pZigSucht]);
    format(query,sizeof query,"%s,`Mulltime`='%d',`PayDay`='%d',`PayDayHad`='%d',`AlcoholPerk`='%d',`Warns`='%d',`Adjustable`='%d',`Fuel`='%d',`Married`='%d',`MarriedTo`='%s',`InvDrugs`='%d'",
    query,PlayerInfo[playerid][pMulltime],PlayerInfo[playerid][pPayDay],PlayerInfo[playerid][pPayDayHad],PlayerInfo[playerid][pAlcoholPerk],PlayerInfo[playerid][pWarns],PlayerInfo[playerid][pAdjustable],PlayerInfo[playerid][pFuel],PlayerInfo[playerid][pMarried],PlayerInfo[playerid][pMarriedTo],PlayerInfo[playerid][pInvDrugs]);
    format(query,sizeof query,"%s,`InvMats`='%d',`Roadblock`='%d',`PlayMinutes`='%d',`GesamtMinutes`='%d',`MinutesSinceLogin`='%d',`MinutesSinceAn`='%d'",
    query,PlayerInfo[playerid][pInvMats],PlayerInfo[playerid][pRoadblock],PlayerInfo[playerid][pPlayMinutes],PlayerInfo[playerid][pGesamtMinutes],PlayerInfo[playerid][pMinutesSinceLogin],PlayerInfo[playerid][pMinutesSinceAn]);
    format(query,sizeof query,"%s,`HandyGeld`='%d',`HandyVer`='%d',`UhrID`='%d',`HandyID`='%d',`OwnPerso`='%d',`OwnAntrag`='%d',`PersoStop`='%d',`Gehalt`='%d',`FrakSperre`='%d',`BoxMats`='%d',`BoxDrugs`='%d',`Tot`='%d',`Meldung`='%d',`Ptankekey`='%d'",
    query,PlayerInfo[playerid][pHandyGeld],PlayerInfo[playerid][pHandyVer],PlayerInfo[playerid][pUhrID],PlayerInfo[playerid][pHandyID],PlayerInfo[playerid][pOwnPerso],PlayerInfo[playerid][pOwnAntrag],PlayerInfo[playerid][pPersoStop],PlayerInfo[playerid][pGehalt],PlayerInfo[playerid][pFrakSperre],PlayerInfo[playerid][pBoxMats],PlayerInfo[playerid][pBoxDrugs],PlayerInfo[playerid][pTot],PlayerInfo[playerid][pMeldung],PlayerInfo[playerid][pPtankekey]);
    format(query,sizeof query,"%s,`Gesperrt`='%d',`Contract`='%d',`Notruf`='%d',`Navi`='%d',`Skin`='%d',`Sprengstoff`='%d',`Hotel`='%d',`TutorialLevel`='%d',`Wohnung`='%d',`JobGehalt`='%d',`BusSkill`='%d' WHERE `Name`='%s'",
    query,PlayerInfo[playerid][pGesperrt],PlayerInfo[playerid][pContract],PlayerInfo[playerid][pNotruf],PlayerInfo[playerid][pNavi],PlayerInfo[playerid][pSkin],PlayerInfo[playerid][pSprengstoff],PlayerInfo[playerid][pHotel],PlayerInfo[playerid][pTutorialLevel],PlayerInfo[playerid][pWohnung],PlayerInfo[playerid][pJobGehalt],PlayerInfo[playerid][pBusSkill],sname);
    printf("Die Speicherung für %s wurde aufgerufen!",sname),print(query);
    mysql_query(query);
    strdel(query,0,sizeof(query));
    return 1;
    }


    Wenn es nicht geht, poste bitte den Log und den print der kommt.

    Im Ansatz schonmal richtig, aber eine Kleinigkeit fehlt.
    Schreibe es so:


    stock my_fread(File:f, str[], size = sizeof str, bool:pack = false)
    {
    if(f) return fread(f, str, size, pack);
    else return 1;
    }


    #if defined _HOOK_fread
    #undef fread
    #else
    #define _HOOK_fread
    #endif
    #define fread my_fread

    Schau mal, das ist nicht die gleiche Meldung. Jetzt ist es fclose. ;)


    Also, das hier auch einfügen:
    stock my_fclose(File:f)
    {
    if(f) return fclose(f);
    else return 1;
    }


    #if defined _HOOK_fclose
    #undef fclose
    #else
    #define _HOOK_fclose
    #endif
    #define fclose my_fclose


    Einfach nach dem anderen eingefügten Code einfügen. Das macht genau das gleiche, nur eben für fclose.



    EDIT:
    DeaN Hunter: Alles klar, sag dann Bescheid. Danke :)

    Ok.
    Dann teste es mal so:
    ocmd:enter(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    for(new i=0; i<sizeof(bdInfo); i++)
    {
    print("DEBUG: bdInfo wurde aufgerufen");
    printf("IsPlayerInRangeOfPoint(playerid,2,bdInfo[%i][bd_x],bdInfo[%i][bd_y],bdInfo[%i][bd_z]",i,i,i);
    if(!IsPlayerInRangeOfPoint(playerid,2,bdInfo[i][bd_x],bdInfo[i][bd_y],bdInfo[i][bd_z]))continue;
    SetPVarInt(playerid,"EnterBuiID",i);
    new b = bdInfo[i][bdID];
    for(new x = 0; x < sizeof(bsInfo); x++)
    {
    printf("b_id von %d: %d", x, bsInfo[x][b_id]);
    if(bsInfo[x][b_id] == b)
    {
    b = x;
    break;
    }
    }
    printf("BusinessID: %i | ShopID: %i | Produkte %i",b,bsInfo[b][b_id],bsInfo[b][b_prods]);
    if(bsInfo[b][b_prods] < 1)return SCM(playerid,COLOR_GRAU,"Das Lager vom Business ist zurzeit Leer.");
    SetPlayerPos(playerid,bsInfo[b][ib_x],bsInfo[b][ib_y],bsInfo[b][ib_z]);
    SetPlayerInterior(playerid,bsInfo[b][b_interior]);
    SetPlayerVirtualWorld(playerid,b);
    return 1;
    }
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][db_id])continue;
    if(hInfo[i][i_x] == 0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
    if(hInfo[i][h_lock] == 1)
    {
    if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);

    }
    else if(hInfo[i][h_lock] == 0)
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    }
    return 1;
    }
    return 1;
    }

    Kannst du mal das posten, was über der Zeile 211 steht? Ein paar Zeilen, so wie es halt Sinn gibt.


    Übrigens, du kannst auch

    Code
    [pwn=Anfangszeile][/pwn]


    machen. ;)

    Haha :D


    Also, damit keine Fehler passieren:
    stock my_fwrite(File:f, str[])
    {
    if(f) return fwrite(f, str);
    else return 1;
    }


    #if defined _HOOK_fwrite
    #undef fwrite
    #else
    #define _HOOK_fwrite
    #endif
    #define fwrite my_fwrite


    Das einfach in deinem Gamemode unter den #include's einfügen. Dann geht es.

    Kannst du das bitte richtig posten, sodass nicht alles in einer Zeile steht?
    Nutze dafür den Quellcode Reiter über der Schriftart.

    Was? :wacko:


    Ich kann das bei mir ohne Probleme kompilieren, es funktioniert auch. Ich habe es selbst mal verwendet um einen Fehler zu verhindern, bis ich ihn gefunden hatte.


    Kannst es ja auch mal so schreiben:
    stock my_fwrite(File: handle, const string[])
    {
    if(handle) return fwrite(handle, string);
    else return 1;
    }


    Der Hook bleibt gleich. Geht es dann?

    Ok, dann teste es mal so:
    ocmd:enter(playerid,params[])
    {
    if(pInfo[playerid][pEingeloggt] == 0)return SendClientMessage(playerid,COLOR_GRAU,"Info: Du bist nicht Eingeloggt!");
    for(new i=0; i<sizeof(bdInfo); i++)
    {
    print("DEBUG: bdInfo wurde aufgerufen");
    printf("IsPlayerInRangeOfPoint(playerid,2,bdInfo[%i][bd_x],bdInfo[%i][bd_y],bdInfo[%i][bd_z]",i,i,i);
    if(!IsPlayerInRangeOfPoint(playerid,2,bdInfo[i][bd_x],bdInfo[i][bd_y],bdInfo[i][bd_z]))continue;
    SetPVarInt(playerid,"EnterBuiID",i);
    new b = bdInfo[i][bdID];
    printf("BusinessID: %i | ShopID: %i | Produkte %i",b,bsInfo[b][b_id],bsInfo[b][b_prods]);
    if(bsInfo[b][b_prods] < 1)return SCM(playerid,COLOR_GRAU,"Das Lager vom Business ist zurzeit Leer.");
    SetPlayerPos(playerid,bsInfo[b][ib_x],bsInfo[b][ib_y],bsInfo[b][ib_z]);
    SetPlayerInterior(playerid,bsInfo[b][b_interior]);
    SetPlayerVirtualWorld(playerid,b);
    return 1;
    }
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][db_id])continue;
    if(hInfo[i][i_x] == 0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[i][hx],hInfo[i][hy],hInfo[i][hz]))continue;
    if(hInfo[i][h_lock] == 1)
    {
    if(!strcmp(hInfo[i][h_besitzer],SpielerName(playerid),true))
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    return 1;
    }
    return GameTextForPlayer(playerid,"~r~Abgeschlossen",1000,1);

    }
    else if(hInfo[i][h_lock] == 0)
    {
    SetPlayerPos(playerid,hInfo[i][i_x],hInfo[i][i_y],hInfo[i][i_z]);
    SetPlayerInterior(playerid,hInfo[i][h_interior]);
    SetPlayerVirtualWorld(playerid,i);
    }
    return 1;
    }
    return 1;
    }


    Wenn es nicht geht, was sagt der Log?

    fwrite ()
    Du versuchst in eine Datei zu schreiben die nicht existiert.



    Füge das unter den Includes ein, dann sollte das Problem nicht mehr auftreten:
    stock my_fwrite(File:f, str[])
    {
    if(f) return fwrite(f, str);
    else return 1;
    }


    #if defined _HOOK_fwrite
    #undef fwrite
    #else
    #define _HOOK_fwrite
    #endif
    #define fwrite my_fwrite