Beiträge von palwal

    Das was du auskomentiwert siehst habe ich auskommentiert da dieses Problem schon stande. Ich versuch dein anderen Vorschlag mal


    Edit: Nein er zeigt immernoch 48$ an :wacko:

    Also ich habe Windows 8.1 Enterprise gecrackt.


    Vorteile:

    • Windows 8 frisst sich in das Boot rein, das heisst beim Hochfahren vom PC wird im Hintergrund automatisch Windows 8 hochgefahren und so ist allgemein dein PC schneller hochgefahren.
    • Dein Pc kannst du mehr personalisieren

    Nachteile:

    • Anwendungen wie Skype werden mit einer Standartanwendung von Microsoft gestartet, bei mir zumindest wird Skype jedesmal neu hochgefahren wenn ich in Skype gehe. Und von Skype bekomme ichkeine Benachrichtung mehr wenn ich eine neue Nachricht bekomme.
    • In dem Hauptordner "Deinen PC" kann keine Ordner mehr erstellt wrden worüber ich mich ärgere. Ich will nicht alles in Dekstop oder Documents schmeißen.
    • Ich persöhnlich finde es kacke, das ich mich bei Microsoft diensten (Hotmail ect) registrieren muss um Windows 8+ verwenden zu können.

    Also grundlegend finde ich Windows 8 nicht schlecht und glaube das es sich also lohnt auf Win8 zu zocken ;)

    Nein leider kein Timer und sonst keine functions die, wo die Labels löschen :(


    Edit:
    Ich hab es hinbekommen. Ich Delete vorher die Text3DLabel und lade die Text3DLabel neu und schon funktioniert es. Wenn es ne Ressourcen schonender Variante gibt..bitte sagen :)


    Jedoch habe ich das Problem, das der Kaufpreis bei ALLEN Häussern auf 48$ ist. In der Datenbank ist alles korrekt. ich hab es schon mit %f, %d und %i versucht :/
    Beim Laden:
    mysql_get_field("h_preis",val); format(HausInfo[i][h_preis], 100, "%i", val);//HausInfo[i][h_preis] = strval(val);


    Jeffry und breadfish


    Kommt denn diese Nachricht?
    format(debug2, sizeof(debug2), "Haus %i: WURDE GELADEN!", id);


    Wenn ja: Hast du das mit den Variablen vor das Laden der Häuser gesetzt, oder danach?

    Das wird für jedes Haus angezeigt was existiert. Das mit den Variablen was du gesagt hast habe ich in OnGamemodeInit gemacht

    for(new i=0;i



    Hab ich gemacht in OnGamemodeInit. Funktioniert trotzdem nicht :/

    Hallo,


    ich habe Problem mit dem Haussystem was ich geschrieben habe.
    Es gibt keine Fehlermelduingen aus, einiges funktioniert schlichtweg nicht.


    Das Haussystem ist wie folgt aufgebaut.


    Ich habe folgende Probleme:

    • beim Laden der Häuser werden keine Text3DLabels angezeigt was er eigentlich sollte.
    • Wenn
      man den Server Restartet hat, dann zeigt er ingame nur das LETZTE Haus
      via Pickup an was man mit /addhaus erstellt hat und kann mir nicht
      erklären warum.


    Die Function soll die Pickups und Text3dLabels von Häusern erstellen
    forward genereteHouse(id);
    public genereteHouse(id)
    {
    new hausstring[470], debug2[200];
    if(HausInfo[id][h_created] == 1)
    {
    DestroyPickup(HausInfo[id][h_pickup]);
    Delete3DTextLabel(HausInfo[id][h_text]);
    if(HausInfo[id][h_sperre]==1)
    {
    format(hausstring, sizeof(hausstring), "|=== %s (%i) ===|\n{FF0A00}Diese Immobilie ist gesperrt!", HausInfo[id][h_beschreibung], id);
    HausInfo[id][h_text] = Create3DTextLabel("", 0xFF5A00FF, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], 15.0, 0, 1);
    } else
    {
    if(HausInfo[id][h_owned]==0)
    {
    format(hausstring, sizeof(hausstring), "|=== %s (%i) ===|\nKaufpreis: %d$\n/hauskaufen", HausInfo[id][h_beschreibung], id, HausInfo[id][h_preis]);
    HausInfo[id][h_text] = Create3DTextLabel("", 0xFF5A00FF, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], 15.0, 0, 1);
    }
    else
    {
    format(hausstring, sizeof(hausstring), "|=== %s (%i) ===|\nBesitzer: %s \nMietpreis: %d $\nMüll: %d \n/hausmieten", HausInfo[id][h_beschreibung], id, HausInfo[id][h_owner], HausInfo[id][h_mietpreis], HausInfo[id][h_muell]);
    HausInfo[id][h_text] = Create3DTextLabel("", 0xFF5A00FF, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], 15.0, 0, 1);
    }
    }
    if(HausInfo[id][h_owned]==0)
    {
    HausInfo[id][h_z] = CreatePickup(1273, 1, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], -1);
    }
    else
    {
    HausInfo[id][h_pickup] = CreatePickup(1272, 1, HausInfo[id][h_x], HausInfo[id][h_y], HausInfo[id][h_z], -1);
    }
    format(debug2, sizeof(debug2), "Haus %i: WURDE GELADEN!", id);
    print(debug2);
    }
    else
    {
    format(debug2, sizeof(debug2), "Haus %i: WURDE NICHT GELADEN!", id);
    print(debug2);
    }
    return 1;
    }


    Die Function um Häuser zu erstellen (Funktioniert meines erachtens)
    forward newHouse(playerid, beschreibung[]);
    public newHouse(playerid, beschreibung[])
    {
    new query[256], test[230];

    format(test, sizeof(test), "Haus gespeichert auf X: %f | Y: %f | Z: %f", TempPlayer[playerid][tpX], TempPlayer[playerid][tpY], TempPlayer[playerid][tpZ]);
    SendClientMessage(playerid, 0xFFD200FF, test);



    format(query, sizeof(query), "INSERT INTO haus (`beschreibung`, `x`, `y`, `z`) VALUES ('%s', '%f', '%f', '%f')", beschreibung, TempPlayer[playerid][tpX], TempPlayer[playerid][tpY], TempPlayer[playerid][tpZ]);
    mysql_query(query);

    new id = mysql_insert_id();
    HausInfo[id][h_created] = 1;
    format(HausInfo[id][h_owner], 32, "");
    format(HausInfo[id][h_beschreibung], 128, "%s", beschreibung);
    HausInfo[id][h_x] = TempPlayer[playerid][tpX];
    HausInfo[id][h_y] = TempPlayer[playerid][tpY];
    HausInfo[id][h_z] = TempPlayer[playerid][tpZ];
    /*format(HausInfo[id][h_x], 100, "%f", TempPlayer[playerid][tpX]);
    format(HausInfo[id][h_y], 100, "%f", TempPlayer[playerid][tpY]);
    format(HausInfo[id][h_z], 100, "%f", TempPlayer[playerid][tpZ]);*/
    HausInfo[id][h_lock] = 1;
    HausInfo[id][h_muell] = 0;
    HausInfo[id][h_mietpreis] = 500;
    HausInfo[id][h_sperre] = 0;



    HausInfo[id][h_interior] = random(9);
    HausInfo[id][h_preis] = HausInnenraum[HausInfo[id][h_interior]][addpreis];
    format(HausInfo[id][h_addtime], 50, "%f", gettime());
    format(HausInfo[id][h_updatetime], 50, "%f", gettime());
    saveHouse(id);
    genereteHouse(id);

    return 1;
    }


    LoadHouse soll wie der name schon sagt die Häuser laden
    stock LoadHouses()
    {
    new query[300], val[128], debug2[300];
    for(new i=0;i<sizeof(HausInfo);i++)
    {
    if(House_exist(i)==0) continue;


    format(query, sizeof(query), "SELECT * FROM `haus` WHERE `id`='%i'",i);
    mysql_query(query);
    mysql_store_result();

    if(mysql_retrieve_row())
    {
    format(debug2, sizeof(debug2), "Haus %i: wurde geladen!", i);
    print(debug2);
    HausInfo[i][h_created] = 1;
    mysql_get_field("besitzer",val); format(HausInfo[i][h_owner], sizeof(val), "%s", val);
    if(!strlen(HausInfo[i][h_owner]))
    {
    HausInfo[i][h_owned] = 0;
    }
    else
    {
    HausInfo[i][h_owned] = 1;
    }
    mysql_get_field("beschreibung",val); HausInfo[i][h_beschreibung] = val;
    mysql_get_field("interior",val); HausInfo[i][h_interior] = strval(val);
    mysql_get_field("hlock",val); HausInfo[i][h_lock] = strval(val);
    mysql_get_field("muell",val); HausInfo[i][h_muell] = strval(val);
    mysql_get_field("sperre",val); HausInfo[i][h_sperre] = strval(val);
    mysql_get_field("h_preis",val); HausInfo[i][h_preis] = strval(val);
    mysql_get_field("h_mietpreis",val); HausInfo[i][h_mietpreis] = strval(val);

    mysql_get_field("addtime",val); HausInfo[i][h_addtime] = strval(val);
    mysql_get_field("updatetime",val); HausInfo[i][h_updatetime] = strval(val);

    mysql_get_field("x",val); HausInfo[i][h_x] = floatstr(val);
    mysql_get_field("y",val); HausInfo[i][h_y] = floatstr(val);
    mysql_get_field("z",val); HausInfo[i][h_z] = floatstr(val);
    genereteHouse(i);
    } else
    {
    format(debug2, sizeof(debug2), "Haus %i: WURDE NICHT GELADEN!", i);
    print(debug2);
    }





    }
    return 1;
    //mysql_GetString2
    }

    Der Adminbefehl um Häuser zu erstellen

    ocmd:addhaus(playerid, params[])
    {
    new bs[200], adminfo[200];
    GetPlayerPos(playerid, TempPlayer[playerid][tpX], TempPlayer[playerid][tpY], TempPlayer[playerid][tpZ]);

    if(isPlayerAnAdmin(playerid, 3))
    {
    if(sscanf(params,"s",bs))
    {
    SendClientMessage(playerid, 0xFEFEFEFF, "{00CC1E}Verwende: {002DFF}/addhaus [Haus Beschreibung]");
    }
    else
    {
    newHouse(playerid, bs);
    format(adminfo, sizeof(adminfo), "Admin %s hat einen Neuen Haus erstellt", GetName(playerid));
    SendMessageAdmin(0xFFD200FF, adminfo);
    }
    }
    else
    {
    SendClientMessage(playerid, 0xCD0900FF, "Du hast nicht die nötigen Rechte!");
    }
    return 1;
    }



    Need help! :)

    Die Datei msvcp120.dll gehört auch nicht im Server Ordner.


    Du brauchst NET Framework und Microsoft Visual c++. Wichtig bitte für 32bit und 64bit Betriebsystem installieren beides (x64 | x82). Wenn dein System eine Bit-Version nicht vertägt dann meldet er das schon am Anfang vom Setup.


    Und wenn das nicht half dann den Streamer nochmal updaten.

    Nicowiss ich mag deine Art, seit ich dich kenne kritisierst du alles irgendwie.


    mysql_connect() Function ist nicht MySQLi! Das ist die standartbassierte function um eine Db Connection aufzubauen.


    Ich hab nur eine Empfehlung ausgesprochen. Abgesehen davon kannst du es auch verwenden, wie du magst. Vielleicht stelle ich meine Klasse ins Showroom mit einer Dokumentation.


    Auch von der Schreibweise her ist meines leicht handlebar. Ich habe Bekannten von mir die Klasse gegeben die auch etwas in der Webprogrammierung sind (Aber keine Profis) und von denen habe ich auch nur gutes Feedback gehört. In der Theorie sieht es komplizerter aus als es eigentlich ist.


    Ausserdem bietet PDO mehr Security. Einfach mit mysql_real_escape_string() ein String zu maskieren ist es nicht getan und hilft auch oftmals nicht. Einfache SQL-Injections können nicht ausgeführt werden aber erweiterte schon. Arbeite erstmal mit meiner Klasse in der Praxis und gebe bitte dann erst ein Feedback ab.

    Nein das ist ganz praktisch trotz allem.


    Ist doch wohl logisch das wenn man in eine Distanze arbeitet diese nicht überschreiben kannst. Das musst du auch nur wenn du in einer Distanze einen anderen SQL Befehl ausführen willst.


    Wenn du ein SQL Befehl ausgeführt hast und ihn nicht weiter behandeln möchtest dann kannst du mit der gleichen Variable einen neuemn SQL Befehl ausführen.

    Der Konstruktor einer Klasse wird immer ausgeführt wenn ansatzweisse die Klasse aufgerufen wird.


    Aber ich empfehle mit PDO zu arbeiten. Ich habe dazu mir auch eine PDO-Klasse geschrieben die du gerne verwenden darfst.


    Ich verwende allgemein meine DB-Klasse nur in anderen Datenbank Klassen. Allerdings kann man es auch in prozenduale Programmierung verwenden.

    PHP
    $db = new Database; 
    
    
    $db->Query(SQLBEFEHL);
    $db->execute(); //Gibt True zurück wenn SQL Befehl erfolgreich ausgeführt ansonsten false


    Aber wenn man einen SQL Befehl in einen derzeit ausgeführten SQL Befehl ausführen möchte. Dann muss man eine neue Datenbank Distanz erstellen sonst funktioert es nicht.