1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Downloads
  4. Galerie
    1. Alben
  5. Toolbox
    1. Passwort Generator
    2. Portchecker
  6. Mitglieder
    1. Mitgliedersuche
    2. Benutzer online
    3. Trophäen
    4. Team
Mi: 02 Juli 2025
  • Anmelden oder registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Dateien
  • Seiten
  • Bilder
  • Erweiterte Suche

Schön, dass du den Weg zu NodeZone.net gefunden hast! Aktuell bist du nicht angemeldet und kannst deshalb nur eingeschränkt auf unsere Community zugreifen. Um alle Funktionen freizuschalten, spannende Inhalte zu entdecken und dich aktiv einzubringen, registriere dich jetzt kostenlos oder melde dich mit deinem Account an.

Anmelden oder registrieren
    1. Nodezone.net Community
    2. Forum
    3. Gameserver & Hosting
    4. ArmA Series - ArmA 3 / Reforger
    5. Hilfeforum

    Problem mit Housing

    • moeck
    • 29. November 2016 um 08:13
    • Geschlossen
    • Erledigt
    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 08:13
      • #1

      Moin,

      ich hätte da mal eine kleines Thema zum frühen Morgen. Wir haben auf unserem Server ab und an das Problem, dass Häuser doppelt verkauft werden und dies ist natürlich für alle Beteiligten nicht so schön. Vorallem da nicht sicher ist welches Inventar gerade geladen wird. Daher habe ich mir mal die Funktionen angeschaut und bin darauf gestossen, dass es leider keinerlei Sicherheits Mechanismen in den Scripten gibt. Heisst wenn aus irgendeinem Gund der Haus kaufen Button aktiv ist, kann ich ohne weiteres das Haus für mich beanspruchen.

      Da ich noch nicht so lange scripte, wollte ich Euch fragen ob ihr Euch die 2 Scripte mal anschaut und mir gegebenfalls einen Hinweis gebt. Ich bin mir nämlich nicht ganz sicher ob das mit dem Rückgabewert so richtig ist.

      C: \core\housing\fn_buyHouse.sqf
      #include <macro.h>
      /*
      	Author: Bryan "Tonic" Boardwine
      	modified by moeck
      	Description:
      	Buys the house?
      */
      private["_house","_uid","_action","_houseCfg",_"owned"];
      _house = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
      _uid = getPlayerUID player;
      if(isNull _house) exitWith {};
      if(!(_house isKindOf "House_F")) exitWith {};
      if((_house getVariable["house_owned",false])) exitWith {hint "This house is already owned even though you shouldn't be seeing this hint..."};
      if(!isNil {(_house getVariable "house_sold")}) exitWith {hint localize "STR_House_Sell_Process"};
      if(!license_civ_home) exitWith {hint localize "STR_House_License"};
      if(count life_houses >= (__GETC__(life_houseLimit))) exitWith {hint format[localize "STR_House_Max_House",__GETC__(life_houseLimit)]};
      closeDialog 0;
      _houseCfg = [(typeOf _house)] call life_fnc_houseConfig;
      if(count _houseCfg == 0) exitWith {};
      _action = [
      	format[localize "STR_House_BuyMSG",
      	[(_houseCfg select 0)] call life_fnc_numberText,
      	(_houseCfg select 1)],localize "STR_House_Purchase",localize "STR_Global_Buy",localize "STR_Global_Cancel"
      ] call BIS_fnc_guiMessage;
      if(life_atm5cash < (_houseCfg select 0)) exitWith {hint localize "STR_House_NotEnough"};
      if(_action) then {
      	[[_uid,_house],"TON_fnc_addHouse",false,false] spawn life_fnc_MP;
      	_owned = (_house getVariable "owned");
      	if (_owned != 1) then {
      		_house setVariable["house_owner",[_uid,profileName],true];
      		_house setVariable["locked",true,true];
      		_house setVariable["Trunk",[[],0],true];
      		_house setVariable["containers",[],true];
      		_house setVariable["uid",round(random 99999),true];
      		life_atm5cash = life_atm5cash - (_houseCfg select 0);
      		life_2vehicles pushBack _house;
      		life_houses pushBack [str(getPosATL _house),[]];
      		hint "Dein Haus wird im Grundbuch eingetragen... Bitte warten..."; //Anti CB Log
      		_marker = createMarkerLocal [format["house_%1",(_house getVariable "uid")],getPosATL _house];
      		_houseName = getText(configFile >> "CfgVehicles" >> (typeOf _house) >> "displayName");
      		_marker setMarkerTextLocal _houseName;
      		_marker setMarkerColorLocal "ColorBlue";
      		_marker setMarkerTypeLocal "loc_Lighthouse";
      		_numOfDoors = getNumber(configFile >> "CfgVehicles" >> (typeOf _house) >> "numberOfDoors");
      		for "_i" from 1 to _numOfDoors do {
      			_house setVariable[format["bis_disabled_Door_%1",_i],1,true];
      			[] call SOCK_fnc_syncData; //Anti CB Log
      			sleep 5; //Anti CB Log
      			hint "Dein Haus ist nun angemeldet..."; //Anti CB Log
      		};
      	} else {
      		hint "Sorry aber das Haus gehört bereits jemand anderem!"
      	};
      };
      Alles anzeigen


      und hier die 2. Datei (Funktion)

      C: lifeserver\Functions\Housing\fn_addHouse.sqf
      /*
      	Author: Bryan "Tonic" Boardwine
      	modified by moeck 
      	Description:
      	Blah
      */
      private["_house","_uid","_housePos","_query","_owned"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _house = [_this,1,ObjNull,[ObjNull]] call BIS_fnc_param;
      if(isNull _house OR _uid == "") exitWith {};
      
      
      
      
      _housePos = getPosATL _house;
      
      
      
      
      waitUntil{!DB_Async_Active};
      _query = format["SELECT * FROM houses WHERE pos='%1'",_housePos];
      _queryResult = [_query,1] call DB_fnc_asyncCall;
      _owned = _queryResult select 5;
      if (_owned == 1) then {
      	_house setVariable["house_id",(_queryResult select 0),true];
      	_house setVariable["pid",(_queryResult select 1),true];
      	_house setVariable["pos",(_queryResult select 2),true];
      	_house setVariable["owned",(_queryResult select 5),true];
      	[[_house],"life_fnc_buyHouse",false,false] spawn life_fnc_MP;
      	exit;
      } else {
      	_query = format["INSERT INTO houses (pid, pos, inventory, containers, owned) VALUES('%1', '%2', '""[[],0]""', '""[]""', '1')",_uid,_housePos];
      	diag_log format["Query: %1",_query];
      	waitUntil{!DB_Async_Active};
      	[_query,1] call DB_fnc_asyncCall;
      };
      sleep 0.3;
      waitUntil{!DB_Async_Active};
      _query = format["SELECT id FROM houses WHERE pos='%1' AND pid='%2' AND owned='1'",_housePos,_uid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      //systemChat format["House ID assigned: %1",_queryResult select 0];
      _house setVariable["house_id",(_queryResult select 0),true];
      Alles anzeigen

      Schon mal vielen Dank im Voraus.

      Gruß,
      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • SanDiego
      Amateur
      Reaktionen
      50
      Trophäen
      9
      Beiträge
      187
      • 29. November 2016 um 08:40
      • #2

      Die dritte Exit With Anweisung ist doch genau eine solche Abfrage. Er prüft, ob das Haus schon jemandem gehört. Wenn ja dann Exit with ...

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 08:56
      • #3

      Moin,

      ja trotzdem gibt es immer mal wieder Probleme, ich bin mir zwar nicht 100%ig sicher aber er scheint die infos nicht aus der DB zu holen sondern vom Client. Ich hatte gestern testweise einfach mal den Button im HouseMenu immer aktiviert und das Script hat das Haus immer in der DB gespeichert. Daher war die Intension, dass ich das nochmal vor dem Speichern gegen die DB prüfe. Siehst du hier noch Potenzial oder bin ich auf dem Holzweg?

      Gruß,
      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Barney
      Schüler
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      105
      Bilder
      2
      • 29. November 2016 um 10:41
      • #4

      Wir hatten bei uns ein ähnliches Problem, habe es so behoben, dass wenn du ein Haus kaufst er nochmal in die DB schaut ob dieses Haus wirklich frei ist.

      view?username=B4rn3y_&style=normal 76561198018512569.png

      Arbeitsnachweis - BasenBau

    • SanDiego
      Amateur
      Reaktionen
      50
      Trophäen
      9
      Beiträge
      187
      • 29. November 2016 um 10:48
      • #5

      Damit bist du denke ich auf dem richtigen Weg.

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 10:51
      • #6

      Moin,

      ja genau das ist ja auch mein Plan ;-). Falls Du dir mal die Zeilen 14 -17 anschaust in der addHouse habe ich die Prüfung entsprechend eingebaut. Ich bin mir momentan nur nicht sicher ob das mit dem Rückgabewerte an die buyHouse so funktioniert oder nicht. Da ich erst vor knapp 4 Wochen mit dem Thema angefangen habe, muss ich halt ab und an noch nachfragen.

      In der Regel komme ich schon ganz gut damit zu recht und habe auf unserem Server auch schon das eine oder andere gebaut. Zum Beispiel einen kleinen Schutz gegen Speedklicker am ATM. Leider gibt es momentan bei uns nur 2 Neulinge inkl. mir als Scripter.

      Wenn ich mir den Code der 3.1.4.8 anschaue gibt es auf jeden Fall noch eine Menge zu tun um einige Bereiche entsprechend zu verbessern bzw. mal aufzuräumen. dash Ich habe mir gestern spasses halber mal die 4.4. angeschaut aber gerade beim Housing habe ich ähnliche Schwachstellen gesehen.

      Danke schon mal für die Hilfe.

      Gruß,
      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • SanDiego
      Amateur
      Reaktionen
      50
      Trophäen
      9
      Beiträge
      187
      • 29. November 2016 um 11:13
      • #7

      Allgemein lässt sich aber sagen, dass die 4.4 deutlich "benutzerfreundlicher" für Leute ist, die gerade mit dem Scripten anfangen.

      Ob das mit der DB-Abfrage so hinhaut, kann ich dir leider nicht sagen, da ich mich mit dem Thema Datenbank und deren Abfrage bis heute noch nicht beschäftigt habe.

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 11:30
      • #8

      also die SQL Abfrage ist auf jeden Fall korrekt, da bin ich mir zu 100% sicher. Was das angeht habe ich schon ein "wenig" erfahrung. Es geht halt nur darum, dass die Daten an die richtige Funktion zurückgeliefert werden.

      Es mag sein, dass die 4.4er benutzerfreundlicher ist, allerdings müssten man alles was bisher für den Server entwickelt wurde portieren und das macht momentan wahrscheinlich mehr arbeit als die vorhanden Bugs zu suchen und zu fixen.

      Wie gesagt ich habe auch schon in der 4.4er das eine oder andere gesehen was suboptimal gelöst ist.

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Barney
      Schüler
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      105
      Bilder
      2
      • 29. November 2016 um 13:13
      • #9

      Also ich kann mich auch irren, aber musst du nicht um einen Return von [lexicon]extdb[/lexicon] zu erhalten bei dem Array das du übergibst an 2. Stelle eine 2 reinschreiben(bei der life_fnc_asynccall)? Ich würde vll auch noch den qeury ändern zu: Select owned from houses where pos ='%1';. Wenn das Haus wem gehört returned er ein Array mit einer eins drinnen, wenns keinem gehört ein Array mit einer Null un wenn der Eintrag in der DB nicht bekannt ist ein leeres Array. PS: Kann gerade Nichts davon nachprüfen da Handy aber sollte so gewesen sein

      view?username=B4rn3y_&style=normal 76561198018512569.png

      Arbeitsnachweis - BasenBau

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 13:41
      • #10

      Ich habe mir eben noch mal gedanken gemacht und bin da auch über den ersten Post SanDiego gestolpert. Theoretisch müsste es reichen den folgenden Code die fn_addHouse.sqf so zu modifizieren.

      C: fn_addHouse.sqf
      /*
      	Author: Bryan "Tonic" Boardwine
      	modified by moeck 
      	Description:
      	Blah
      */
      private["_house","_uid","_housePos","_query","_owned"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _house = [_this,1,ObjNull,[ObjNull]] call BIS_fnc_param;
      if(isNull _house OR _uid == "") exitWith {};
      _housePos = getPosATL _house;
      waitUntil{!DB_Async_Active};
      _query = format["SELECT * FROM houses WHERE pos='%1'",_housePos];
      _queryResult = [_query,1] call DB_fnc_asyncCall;
      _owned = _queryResult select 5;
      if (_owned == 1) exitWith {
      	_house setVariable["house_id",(_queryResult select 0),true];
      	_house setVariable["pid",(_queryResult select 1),true];
      	_house setVariable["pos",(_queryResult select 2),true];
      	_house setVariable["house_owned",(_queryResult select 5),true];
      	[[_house,_uid],"life_fnc_buyHouse",false,false] spawn life_fnc_MP;
      } else {
      	_query = format["INSERT INTO houses (pid, pos, inventory, containers, owned) VALUES('%1', '%2', '""[[],0]""', '""[]""', '1')",_uid,_housePos];
      	diag_log format["Query: %1",_query];
      	waitUntil{!DB_Async_Active};
      	[_query,1] call DB_fnc_asyncCall;
      };
      sleep 0.3;
      waitUntil{!DB_Async_Active};
      _query = format["SELECT id FROM houses WHERE pos='%1' AND pid='%2' AND owned='1'",_housePos,_uid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      //systemChat format["House ID assigned: %1",_queryResult select 0];
      _house setVariable["house_id",(_queryResult select 0),true];
      Alles anzeigen

      Die Funktion wird ja von der fn_buyHouse aufgerufen und anschliessend rufe ich ja die buyHouse Funktionen mit den gefunden Haus wieder auf. Solange ich jetzt nicht einem grundsätzlichen Denkfehler unterliege sollte das funktionieren.

      Ich werde das heute Abend mal testen und melde mich wieder.

      Gruß,
      moeck

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Rom
      Kenner
      Reaktionen
      156
      Beiträge
      533
      • 29. November 2016 um 14:01
      • #11
      Zitat von Barney

      Also ich kann mich auch irren, aber musst du nicht um einen Return von [lexicon]extdb[/lexicon] zu erhalten bei dem Array das du übergibst an 2. Stelle eine 2 reinschreiben(bei der life_fnc_asynccall)? Ich würde vll auch noch den qeury ändern zu: Select owned from houses where pos ='%1';. Wenn das Haus wem gehört returned er ein Array mit einer eins drinnen, wenns keinem gehört ein Array mit einer Null un wenn der Eintrag in der DB nicht bekannt ist ein leeres Array. PS: Kann gerade Nichts davon nachprüfen da Handy aber sollte so gewesen sein

      stimmt ;)

      Wenn ich etwas missverstanden habe, hoppala

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 14:15
      • #12

      ja das ist alles korrekt ich muss es halt zum client zurückbringen. wie gesagt sollte eigentlich so funktionieren wie oben gepostet. Da ich momentan aber noch bei der Arbeit rumhänge kann ich es leider nicht testen. Wenn es funktioniert kann man das ja in den Standard überführen, da es auch in der 4.4. noch nicht drin ist.

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Barney
      Schüler
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      105
      Bilder
      2
      • 29. November 2016 um 15:23
      • #13

      Angenommen der Asyncall returned dir ein leeres Array weil das Haus in der DB noch nicht existiert, würdest du beim select 5 auf das qeuryresult einen Fehler bekommen, du solltest den Return also vorher besser noch prüfen

      view?username=B4rn3y_&style=normal 76561198018512569.png

      Arbeitsnachweis - BasenBau

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 15:50
      • #14

      stimmt ;) habe da mal noch folgendes eingefügt.

      C
      if (_queryResult) then {
      	_owned = _queryResult select 5;
      } else {
      	_owned = 0;
      };

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Cris
      Anfänger
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      76
      • 29. November 2016 um 16:45
      • #15

      Also deine If-Conditionen funktioniert so nicht. Weil _queryResult nie true sein wird sonder ein leeres oder befülltes Array.

      D.h. du müsstest folgendermaßen Prüfen:

      C
      if (count _queryResult == 0) then {
       _owned = 0;
      } else {
       _owned = _queryResult select 5;
      };
    • Rom
      Kenner
      Reaktionen
      156
      Beiträge
      533
      • 29. November 2016 um 17:24
      • #16
      Zitat von moeck

      _query = format["SELECT * FROM houses WHERE pos='%1'",_housePos];
      _queryResult = [_query,1] call DB_fnc_asyncCall;
      _owned = _queryResult select 5;

      (Zeile 14)

      Und damit das funktioniert, siehe unten:

      Zitat von Cris

      if (count _queryResult == 0) then {
      _owned = 0;
      } else {
      _owned = _queryResult select 5;
      };

      Hinzu kommt noch, dass (wie @Barney schon erwähnte), dass du, wenn du einen Wert aus der Datenbank auslesen willst, eine 2 (SELECT) nehmen musst und 1 (UPDATE, INSERT), wenn du nur Daten einfügen oder ersetzen willst.

      Wenn ich etwas missverstanden habe, hoppala

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 18:57
      • #17

      alles klar werde es gleich testen

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 29. November 2016 um 21:35
      • #18

      Hi,

      so also die fn_addHouse funktioniert jetzt.

      C: fn_addHouse.sqf
      /*
       Author: Bryan "Tonic" Boardwine
       modified by moeck 
       Description:
       Blah
      */
      private["_house","_uid","_housePos","_query","_owned"];
      _uid = [_this,0,"",[""]] call BIS_fnc_param;
      _house = [_this,1,ObjNull,[ObjNull]] call BIS_fnc_param;
      if(isNull _house OR _uid == "") exitWith {};
      _housePos = getPosATL _house;
      waitUntil{!DB_Async_Active};
      _query = format["SELECT id,pid,pos,inventory,containers,owned FROM houses WHERE pos='%1'",_housePos];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      //dialog{"Query %1" _queryResult};
      if (count _queryResult == 0) then {
       _owned = 0;
      } else {
       _owned = (_queryResult select 5);
      };
      if (_owned == 1) then {
       _house setVariable["house_id",(_queryResult select 0),true];
       _house setVariable["pid",(_queryResult select 1),true];
       _house setVariable["pos",(_queryResult select 2),true];
       _house setVariable["house_owned",true,true];
       [[_house,_uid],"life_fnc_buyHouse",false,false] spawn life_fnc_MP;
       exit;
      } else {
       _query = format["INSERT INTO houses (pid, pos, inventory, containers, owned) VALUES('%1', '%2', '""[[],0]""', '""[]""', '1')",_uid,_housePos];
       diag_log format["Query: %1",_query];
       waitUntil{!DB_Async_Active};
       [_query,1] call DB_fnc_asyncCall;
      };
      sleep 0.3;
      waitUntil{!DB_Async_Active};
      _query = format["SELECT id FROM houses WHERE pos='%1' AND pid='%2' AND owned='1'",_housePos,_uid];
      _queryResult = [_query,2] call DB_fnc_asyncCall;
      //systemChat format["House ID assigned: %1",_queryResult select 0];
      _house setVariable["house_id",(_queryResult select 0),true];
      Alles anzeigen


      aber ich habe noch einen Denkfehler in der fn_buyHouse.

      C: fn_buyHouse
      #include <macro.h>
      /*
      	Author: Bryan "Tonic" Boardwine
      	Description:
      	Buys the house?
      */
      private["_house","_uid","_action","_houseCfg"];
      _house = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param;
      _uid = getPlayerUID player;
      hint format ["Haus owned %1",(_house getVariable["house_owned",false])];
      if(isNull _house) exitWith {};
      if(!(_house isKindOf "House_F")) exitWith {};
      if((_house getVariable["house_owned",false])) exitWith {hint "Dieses Haus ist bereits verkauft!"};
      if(!isNil {(_house getVariable "house_sold")}) exitWith {hint localize "STR_House_Sell_Process"};
      if(!license_civ_home) exitWith {hint localize "STR_House_License"};
      if(count life_houses >= (__GETC__(life_houseLimit))) exitWith {hint format[localize "STR_House_Max_House",__GETC__(life_houseLimit)]};
      closeDialog 0;
      
      
      
      
      _houseCfg = [(typeOf _house)] call life_fnc_houseConfig;
      if(count _houseCfg == 0) exitWith {};
      
      
      
      
      _action = [
      	format[localize "STR_House_BuyMSG",
      	[(_houseCfg select 0)] call life_fnc_numberText,
      	(_houseCfg select 1)],localize "STR_House_Purchase",localize "STR_Global_Buy",localize "STR_Global_Cancel"
      ] call BIS_fnc_guiMessage;
      
      
      
      
      if(life_atm5cash < (_houseCfg select 0)) exitWith {hint localize "STR_House_NotEnough"};
      
      
      
      
      if(_action) then {
      	[[_uid,_house],"TON_fnc_addHouse",false,false] spawn life_fnc_MP;
      	_house setVariable["house_owner",[_uid,profileName],true];
      	_house setVariable["locked",true,true];
      	_house setVariable["Trunk",[[],0],true];
      	_house setVariable["containers",[],true];
      	_house setVariable["uid",round(random 99999),true];
      	life_atm5cash = life_atm5cash - (_houseCfg select 0);
      	life_2vehicles pushBack _house;
      	life_houses pushBack [str(getPosATL _house),[]];
      	hint "Dein Haus wird im Grundbuch eingetragen... Bitte warten..."; //Anti CB Log
      	_marker = createMarkerLocal [format["house_%1",(_house getVariable "uid")],getPosATL _house];
      	_houseName = getText(configFile >> "CfgVehicles" >> (typeOf _house) >> "displayName");
      	_marker setMarkerTextLocal _houseName;
      	_marker setMarkerColorLocal "ColorBlue";
      	_marker setMarkerTypeLocal "loc_Lighthouse";
      	_numOfDoors = getNumber(configFile >> "CfgVehicles" >> (typeOf _house) >> "numberOfDoors");
      	for "_i" from 1 to _numOfDoors do {
      		_house setVariable[format["bis_disabled_Door_%1",_i],1,true];
      	[] call SOCK_fnc_syncData; //Anti CB Log
      	sleep 5; //Anti CB Log
      	hint "Dein Haus ist nun angemeldet..."; //Anti CB Log
      	};
      };
      Alles anzeigen

      wenn ich die Funktion addHouse aufrufe wartet das script nicht oder? sondern macht einfach weiter

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • moeck
      Erleuchteter
      Reaktionen
      632
      Trophäen
      9
      Beiträge
      3.160
      Bilder
      9
      • 30. November 2016 um 00:30
      • #19

      Hi,

      so meinen Tests sind schon wieder ein Stück weiter und mittlerweile funktioniert auch das Einfügen in die DB.

      Allerdings gibt es noch ein kleineres Problem mit dem Funktionsaufruf am Client.

      Code
      [[_house,true],"life_fnc_buyHouse",?,false] spawn life_fnc_MP;

      ich bin mir noch nicht sicher was anstelle des ? rein muss damit es wieder an den richtigen client geht. Sobald ich true eingebe bekommen die Meldungen alle Spieler ;)

      Signatur? Was ist eine Signatur? Kann man das essen?

      Bitte beachten: Ich gebe keinen Support über private Nachrichten!


      Ganz wichtig: [Leitfaden] Wie frage Ich richtig um Hilfe?

      Nicht zu vergessen [Tutorial/Selbst-Test] Sollte ich einen Life Server eröffnen ?

    • Cris
      Anfänger
      Reaktionen
      33
      Trophäen
      11
      Beiträge
      76
      • 30. November 2016 um 00:31
      • #20

      Arbeite lieber mit der remoteExec, anstatt der life_fnc_MP;

    Registrieren oder Einloggen

    Du bist noch kein Mitglied von NodeZone.net? Registriere dich kostenlos und werde Teil einer großartigen Community!

    Registrieren

    Ähnliche Themen

    • Zwei Inseln auf einem Server

      • R3DEX
      • 23. August 2017 um 11:48
      • Hilfeforum
    • Housing Problem wer kann helfen hänge schon seit min 2 wochen daran

      • Bronzo94
      • 7. März 2017 um 21:15
      • Hilfeforum
    • Problem mit Haus System

      • Carlos
      • 20. Februar 2017 um 22:53
      • Hilfeforum
    • housing problem

      • ScriptOase
      • 10. November 2016 um 22:21
      • Hilfeforum
    • Housing Inventar speichert nicht

      • xonex
      • 14. Oktober 2016 um 02:40
      • Hilfeforum
    • HILFE Kleines housing Problem

      • KCOSA
      • 30. September 2016 um 00:10
      • Hilfeforum

    Tags

    • housing system

    Benutzer online in diesem Thema

    • 1 Besucher

    Wichtige Links & Informationen

    Server & Hosting-Ressourcen

      Server Administration & Hosting Basics

      Windows Server Support & Guides

      Linux Server Configuration & Help

      Setting up TeamSpeak 3 & VoIP Servers

      Domains & Web Hosting for Beginners & Professionals

      Cloud Hosting, Docker & Kubernetes Tutorials

    Gameserver & Modding-Ressourcen

      ArmA 3 Tutorials & Script Collection

      Renting & Operating Gameservers

      DayZ Server Management & Help

      FiveM (GTA V) Server & Script Development

      Rust Server Modding & Administration

      Setting up & Optimizing ARK Survival Servers

    NodeZone.net – Deine Community für Gameserver, Server-Hosting & Modding

      NodeZone.net ist dein Forum für Gameserver-Hosting, Rootserver, vServer, Webhosting und Modding. Seit 2015 bietet unsere Community eine zentrale Anlaufstelle für Server-Admins, Gamer und Technikbegeisterte, die sich über Server-Management, Hosting-Lösungen und Spielemodding austauschen möchten.


      Ob Anleitungen für eigene Gameserver, Hilfe bei Root- und vServer-Konfigurationen oder Tipps zu Modding & Scripting – bei uns findest du fundiertes Wissen und praxisnahe Tutorials. Mit einer stetig wachsenden Community findest du hier Antworten auf deine Fragen, Projektpartner und Gleichgesinnte für deine Gaming- und Serverprojekte. Schließe dich NodeZone.net an und werde Teil einer aktiven Community rund um Server-Hosting, Gameserver-Management und Modding-Ressourcen.

    Wer jetzt nicht teilt ist selber Schuld:
    1. Nutzungsbestimmungen
    2. Datenschutzerklärung
    3. Impressum
    4. Urheberrechts- oder Lizenzverstoß melden
  • Trimax Design coded & layout by Gino Zantarelli 2023-2025©
    Community-Software: WoltLab Suite™