Beiträge von Jeffry

    SetObjectMaterialText(obj,"Willkommen auf Blakhawk-Reallife",1,OBJECT_MATERIAL_SIZE_256x128,"Arial",24,1,rot,weiß,0);
    Versuche es so, wenn du das nicht explizit definiert hast.

    Dann musst du nach dem Erstellen noch
    SaveFractionCars();
    aufrufen, bzw. eine Funktion, die nur das einzelne Fahrzeug speichert. Sobald du es speicherst, sollte es auch drin stehen.

    So:
    new obj = CreateObject(7914, 1485.75867, -1742.75562, 22.25340, 0.00000, 0.00000, 180.00000);
    SetObjectMaterial(obj, 0, 8419, "vgsbldng1", "black32", 0xFFFFFFFF);
    SetObjectMaterialText(obj,"Willkommen auf Blakhawk-Reallife",1,256x128,"Arial",24,1,rot,weiß,0);


    Unter der Voraussetzung, dass die angegebenen Parameter richtig sind, bzw. so sind wie du es willst. Das musst du ausprobieren.

    Problem 1:

    Spoiler anzeigen
    ocmd:carupgrade(playerid,params[])
    {
    if(PlayerInfo[playerid][pEingeloggt] < 1 ) return SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht nutzen, weil du nicht eingeloggt bist.");
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    for(new i=0; i<sizeof(HouseInfo); i++)
    {
    if(GetPlayerVehicleID(playerid) == HouseInfo[i][hvID])
    {
    if(!strcmp(HouseInfo[i][hBesitzer],name,true))
    {
    new HouseCar = HouseInfo[i][hvID];
    new upgradekosten = 150000;
    if(GetPlayerVehicleID(playerid) == HouseCar)
    {
    if(GetPlayerMoney(playerid) < upgradekosten) return SendClientMessage(playerid,Grau,"Du hast nicht genug Geld. (150000$)");
    AddVehicleComponent(HouseCar, 1010); //Nitro
    AddVehicleComponent(HouseCar, 1074); //Räder
    AddVehicleComponent(HouseCar, 1087); //Hydraulik
    HouseInfo[i][hCarupgrade] = 1;
    GivePlayerMoney(playerid,-upgradekosten);
    SendClientMessage(playerid,Gruen,"Dein Housecar hat nun Nitro, neue Räder und Hydraulik.");
    }
    saveHouse(i);
    updateHouse(i);
    return 1;
    }
    }
    }
    return 1;
    }

    Spoiler anzeigen
    public OnHousesLoad()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id = getFreeHouseID();
    if(id == -1) return 1;
    HouseInfo[id][h_x] = cache_get_field_content_float(i,"h_x",dbhandle);
    HouseInfo[id][h_y] = cache_get_field_content_float(i,"h_y",dbhandle);
    HouseInfo[id][h_z] = cache_get_field_content_float(i,"h_z",dbhandle);
    HouseInfo[id][ih_x] = cache_get_field_content_float(i,"ih_x",dbhandle);
    HouseInfo[id][ih_y] = cache_get_field_content_float(i,"ih_y",dbhandle);
    HouseInfo[id][ih_z] = cache_get_field_content_float(i,"ih_z",dbhandle);
    HouseInfo[id][hInterior] = cache_get_field_content_int(i,"h_interior",dbhandle);
    HouseInfo[id][ch_x] = cache_get_field_content_float(i,"ch_x",dbhandle);
    HouseInfo[id][ch_y] = cache_get_field_content_float(i,"ch_y",dbhandle);
    HouseInfo[id][ch_z] = cache_get_field_content_float(i,"ch_z",dbhandle);
    HouseInfo[id][ch_r] = cache_get_field_content_float(i,"ch_r",dbhandle);
    HouseInfo[id][hModel] = cache_get_field_content_int(i,"model",dbhandle);
    HouseInfo[id][hFarbe1] = cache_get_field_content_int(i,"farbe1",dbhandle);
    HouseInfo[id][hFarbe2] = cache_get_field_content_int(i,"farbe2",dbhandle);
    HouseInfo[id][hCarupgrade] = cache_get_field_content_int(i,"carupgrade",dbhandle);
    HouseInfo[id][hGeschlossen] = cache_get_field_content_int(i,"geschlossen",dbhandle);
    HouseInfo[id][hKasse] = cache_get_field_content_int(i,"kasse",dbhandle);
    HouseInfo[id][hMiete] = cache_get_field_content_int(i,"miete",dbhandle);
    HouseInfo[id][hPreis] = cache_get_field_content_int(i,"preis",dbhandle);
    HouseInfo[id][hKauflevel] = cache_get_field_content_int(i,"kauflevel",dbhandle);
    new tmp_name[MAX_PLAYER_NAME];
    cache_get_field_content(i,"besitzer",tmp_name,dbhandle);
    strmid(HouseInfo[id][hBesitzer],tmp_name,0,sizeof(tmp_name),sizeof(tmp_name));
    HouseInfo[id][hID] = cache_get_field_content_int(i,"id",dbhandle);
    new HouseCar = AddStaticVehicle(HouseInfo[id][hModel],HouseInfo[id][ch_x],HouseInfo[id][ch_y],HouseInfo[id][ch_z],HouseInfo[id][ch_r],HouseInfo[id][hFarbe1],HouseInfo[id][hFarbe2]);
    HouseInfo[id][hvID] = HouseCar;
    if(HouseInfo[id][hCarupgrade] == 1)
    {
    AddVehicleComponent(HouseCar, 1010); //Nitro
    AddVehicleComponent(HouseCar, 1074); //Räder
    AddVehicleComponent(HouseCar, 1087); //Hydraulik
    }
    updateHouse(id);
    }
    return 1;
    }

    Versuche es so.
    Außerdem musst du im Enum zu HouseInfo noch "hvID" einfügen.



    Problem 2:
    DestroyVehicle(AddStaticVehicle(HouseInfo[i][hModel],HouseInfo[i][ch_x],HouseInfo[i][ch_y],HouseInfo[i][ch_z],HouseInfo[i][ch_r],HouseInfo[i][hFarbe1],HouseInfo[i][hFarbe2]));
    zu:
    DestroyVehicle(HouseInfo[i][hvID]);


    Dort musst du aber noch abfragen, an welchem Haus sich der Spieler befindet, das machst du momentan noch nicht.

    Eigentlich ja gar nicht.


    Wenn Caching verwendet wird schon. Wenn nicht, dann natürlich nicht. Die meisten die das R7 aber verwendet haben, haben es auch mit Caching aufgebaut, sonst bringt es kaum Vorteile gegenüber R5/6.




    @GTATyson:
    Wenn dein Code tatsächlich ohne die Cache Funktionen aufgebaut ist, dann bringt das relativ wenig, da müsstest du den ganzen Code umschreiben. Falls doch, dann kannst du es entsprechend änden, ja.
    Wenn nicht, dann wäre meine Empfehlung mal deinen Host zu kontaktieren, dass die sich um das Problem kümmern.

    Ich rate dir auf die neuste Version (R39-3) umzusteigen, die ist vom Code her fast identisch.
    Ansonsten, schau mal ob du im Paket eine mysql_static.so hast, dann nutze die (mysql.so raus nehmen).

    Dann kannst du es einfach so machen:
    ocmd:respawncars(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid, 12))return SendClientMessage(playerid,COLOR_DRED,"Du bist in keiner Fraktion");
    if(sInfo[playerid][rang] < 5)return SendClientMessage(playerid,COLOR_DRED,"Du bist nicht der Leader der Fraktion!");
    {
    for(new i = 0; i < sizeof(FBICars); i++)
    {
    SetVehicleToRespawn(FBICars[i]);
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,12))
    {
    SendClientMessage(i, COLOR_GREY, "** Der Leader hat alle Frakion Autos respawnt. **");
    }
    }
    }
    }
    return 1;
    }

    ocmd:respawncars(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid, 12))return SendClientMessage(playerid,COLOR_DRED,"Du bist in keiner Fraktion");
    if(sInfo[playerid][rang] < 5)return SendClientMessage(playerid,COLOR_DRED,"Du bist nicht der Leader der Fraktion!");
    {
    for(new i = 1; i < MAX_VEHICLES; i++)
    {
    //Hier noch abfragen, ob das Fahrzeug ein Fraktionsfahrzeug ist.
    SetVehicleToRespawn(i);
    }
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(isPlayerInFrakt(i,12))
    {
    SendClientMessage(i, COLOR_GREY, "** Der Leader hat alle Frakion Autos respawnt. **");
    }
    }
    }
    }
    return 1;
    }

    OnPlayerCommandReceived ist vor der Ausführung der ZCMD Befehle und OnPlayerCommandPerformed ist danach.
    Wenn du zum Beispiel einem Spieler alle Befehle verbieten willst, dann kannst du das in OnPlayerCommandReceived machen, sofern du danach return 0 machst.

    public OnPlayerCommandPerformed(playerid, cmdtext[], success)
    {
    if(!success)
    {
    //Hier die strcmp Befehle
    //...
    //...
    return SendClientMessage(playerid, COLOR_WHITE, "Befehl existiert nicht. Gebe {FF1E00}/help {FFFFFF} ein für weitere Befehle.");
    }
    else
    {
    printf("Spieler %s führte Befehl: %s | aus", PlayerName(playerid), cmdtext);
    return 1;
    }
    return 1;
    }