Beiträge von SkeeZy

    Huhu,
    ich bin ja aktuell dabei ein Haussystem zu scripten.
    Ich wollte jetzt anfangen mit dem Interiorsystem, habe jedoch eine Probleme bzw. Fragen dazu:


    1. Nehmen wir an, ich mappe einen eigenen Interior für ein Haus. Muss ich jetzt trotzdem per SetPlayerInterior den Interior wechseln, oder kann diese einfach 0 bleiben, da ich ja eh eine VW setze.
    2. Ich habe gesehen, dass man die VirtualWorlds(VW) auf den selben Wert setzen soll, der die HausID ist(damit jeder nur die Leute im selben Haus sieht). Wenn ich dann jedoch ein Haus und eine Biz mit der ID 1 habe, wie gehe ich vor? Oder kann ich das außer Beachtung lassen, da die Ints sowieso alle an unterschiedl. Positionen sind?
    Ich danke schonmal wie immer im Voraus.



    //e:
    Zu BrightLeaN:
    Ich hab dass zwar selbst noch nicht gebraucht, jedoch könntest du ihn mithilfe eines Timers wieder auf seine alte Position setzen.
    Oder immer wenn ein neuer Spieler den Actor lädt (OnActorSteamIn) diesen zurück auf seine Position setzen.

    oof oof oof oooof...


    Was meinst du wie lange ich mir die schei*e angeschaut und das nicht gemerkt hab xD ?
    Die for Schleife hab ich selbst schon bemerkt.


    Zu dem Rest braucht man glaubig auch nicht viel mehr sagen...


    ka warum ich manchmal so enorm brainafk bin.



    Danke für eure Hilfe ^^.

    Nochmal ein Problem:


    Die folgende getFreeHouseID() Funktion sollte eigtl. eine freie(unbesetzte) ID für das zu erstellende Haus in createHouse zurückgeben.
    Allerdings wird immer die 1 zurückgegeben und am Ende haben alle Häuser die selbe ID.
    Außerdem wird die Beschreibung aus der Enumvariable nicht an folgender Stelle eingefügt.
    In der Tabelle steht auch bei jedem erstellten Haus die 1.
    //e: Kann man den getFreeHouseID stock irgendwie anders schreiben ?


    getFreeHouseID:

    Code
    stock getFreeHouseID()
    {
    	for(new i=1, j=MAX_HOUSES; i<=j; i++)
    	{
    		if(hInfo[i][hID] == 0) return 1;
    	}
    	return 0;
    }



    createHouse:

    Code
    stock createHouse(playerid, Float:X, Float:Y, Float:Z)
    {
    	new query[256];
    	new fid=getFreeHouseID();
    	mysql_format(handle, query, sizeof(query), "INSERT INTO houses (h_id, h_x, h_y, h_z) VALUES ('%d','%f', '%f', '%f')",
      		fid, X, Y, Z);
    	mysql_pquery(handle, query, "OnHouseCreated", "ddfff", playerid, fid, X, Y, Z);
    	return 1;
    }


    hier wird die Beschreibung nicht gesetzt:

    Code
    format(hInfo[insID][hDesc], MAX_HOUSE_DESC, "Dieses Haus steht zum Verkauf."); //HIER WIRD DIE BESCHREIBUNG DEFINIERT
    
    
    
    
    //HIER EINGESETZT:
    format(string1, sizeof(string1), "[Haus Nummer: %d]\nBesitzer: %s\nBeschreibung: %s\nPreis: %d\n Miete: %d$", hInfo[houseid][hID], owner, hInfo[houseid][hDesc], hInfo[houseid][hPrice], hInfo[houseid][hRent]);

    BrainAFK

    Wieder mal eine Frage meinerseits:
    Ist es möglich zu prüfen ob die params bei OCMD null sind? Oder ist das ganze nichtmal nötig?



    Zu BrightLeaN


    Wie hole ich mir dann diesen Wert aus der Datenbank ohne einen großartigen Aufruf zu machen?

    Bin mir nicht sicher, du könntest jedoch folgendes mal versuchen:


    Bei der Query ein Callback auslösen z.B.

    Code
    mysql_pquery(DEIN_HANDLE, DEINE_QUERY, "OnGarageCreated");

    und dann...




    Code
    forward OnGarageCreated();
    public OnGarageCreated()
    {
    	new insID;
    	insID = cache_insert_id();
    	cache_get_value_name_int(insID, "WERT", variableZumSpeichern);
    	return 1;
    }

    und in "variableZumSpeichern" würdest du dann den Wert aus dem Cache gespeichert haben.

    Ah ok, im Endeffekt bleibt es ja fast gleich. #BrainDamagedHorse


    Eine Sache noch:
    -Die h_db ist mein Primary Key in der Enumvariable sollte i allerdings hID(Wert der die houseid speichert) sein.
    Kann ich dann einfach folgendes machen?



    Warum lädst du nicht einfach alle Häuser aus der Datenbank, indem du das WHERE Statement weglässt und loopst dann durch alle Zeilen durch? Dann lädst du doch alle vorhandenen Häuser.

    Hey, danke für den Tipp. Könntest du mir ggf. auch sagen, wie ich durch die Zeilen loope?
    Und prüfe welche hID die entsprechende Zeile hat bzw. diese dann zuweise?
    Stelle mir das wie folgt vor, bin mir aber ein wenig unsicher.

    Code
    stock loadHouses()
    {
    	new query[256];
    	mysql_format(handle, query, sizeof(query), "SELECT * FROM houses");
    	mysql_pquery(handle, query, "onHouseLoaded");
    	return 1;
    }


    Huhu,
    ich habe vor wenn der Server startet alle Häuser aus der MySQl-Tabelle in die Enumvariable zu setzen.
    Es gibt max. 700 Häuser(MAX_HOUSES). Und da ich aktuell per Schleife 700 Datenbankanfragen habe, suche ich nach einer besseren alternative, die häuser anhand ihrer hID in die richtige Variable zu setzen.
    Ein Haus, dass einmal die hID 15 hatte, soll diese nach dem Speichern und laden auch weiterhin behalten.
    Soweit klappt es nur stört mich diese Schleife im....




    ...OnGameModeInit:

    Code
    for(new i=0, j=MAX_HOUSES; i<=j; i++)
    	{
    		loadHouse(i);//Hier lade ich das Haus anhand seiner ID
    	}
    
    
    	new housesstring[64];
    	format(housesstring, sizeof(housesstring), "Geladene Häuser: %d", loadedHouses);
    	print(housesstring);




    stock loadHouse(houseid):

    Code
    stock loadHouse(houseid)
    {
    	new query[256];
    	mysql_format(handle, query, sizeof(query), "SELECT * FROM houses WHERE h_id = '%d'", houseid);
    	mysql_pquery(handle, query, "onHouseLoaded", "d", houseid);
    	return 1;
    }


    onHouseLoaded:


    Ich bedanke mich schonmal im Voraus und hoffe auf eine passendere Lösung.

    Wie erstelle ich ein DynamicPickup in allen Virtuellen Welten? Das selbe auch für 3DTextLabels,
    soll ich wirklich eine Schleife durchlaufen lassen? Oder gibts da was anderes?


    Normalerweise solltest du beim Pickups-Erstellen eine virtuelle welt eintragen können. Wenn du dort -1 einträgst, ist dieses in allen VW's sichtbar.

    Einfach alle Returns rausnehmen und anders bauen. So sollte es klappen, allerdings ist mir die Funktion des Bereichs zwischen meinen Kommentaren ein wenig fragwürdig.

    versuchs mal damit.



    Wenn du diese Zeile nutzt, solltest du dahinter keine Klammer öffnen. Es sind beide Fälle durchs return geregelt:


    if(!IsPlayerInRangeOfPoint(playerid,2.5,gInfo[i][gX],gInfo[i][gY],gInfo[i][gZ])) return SCM(playerid,-1,"Nicht in näheee");


    ich hoffe mal ich habe das ganze richtig verstanden :D

    Hi.
    Ich bin gerade ein wenig aufgeschmissen. Ich habe ein Haussystem gescriptet und dann ist mir aufgefallen, dass wenn ich ein Haus gelöscht hab und ich dann ein neues erstelle, der PRIMARY KEY Wert mit Auto_Increment einfach dort das neue Haus speichert, wo er vorher stehen geblieben ist.


    Heißt ich lösche ein Haus, welches in der MySQL Tabelle beim Primary_key den Wert 9 hatte und erstelle dann ein neues und der Wert 9 wird nicht wieder genutzt, obwohl er eigtl. frei ist.


    Ich würde jedoch gerne prüfen ob ein Wert ungenutzt ist und dann wieder in diesen einsetzen.



    Ich hoffe das ist so einigermaßen verständlich.


    Danke im Voraus.

    Ist i der Wert einer Schleife ? Wenn ja könntest du einfach wie folgt die Werte zurück setzen.
    PCar[playerid][i][P_X] = 0;
    PCar[playerid][i][P_Y] = 0;
    PCar[playerid][i][P_Z] = 0;
    PCar[playerid][i][P_R] = 0;
    und so weiter




    //edit: ich denke Leon war schneller :D

    Huhu,
    bekomme folgende Fehlermeldung...

    Code
    sscanf warning: Strings without a length are deprecated, please add a destination size.
    sscanf warning: Strings without a length are deprecated, please add a destination size.




    hierdurch....


    Code
    new player[MAX_PLAYER_NAME], reason[64], query[256], crew;
    if(sscanf(params, "ss", player, reason)) //MUSS ICH DAS ANDERS MACHEN ?

    Ich nehme mal an ich muss die sscanf abfrage anders machen, damit durch die strings kein error mehr entsteht ?