Danke! Aber hilft leider nicht
[TUTORIAL] SQL basiertes Smartphone
-
- Altis Life
-
Exodoos -
1. August 2016 um 18:57
-
-
Ihr müsst in eurer common.hpp im Dialog Ordner in der: class Life_RscListNBox folgendes ergänzen: rowHeight = 0.04;
Dann sollte die Fehlermeldung nicht mehr auftreten. Wurde meiner Meinung nach hier aber auch schon beantwortet.
-
Hab das Problem das bei mir 2 mal die Nachricht da steht die ich bekomme? weiß einer warum?
-
Klar weiß ich das, steht ja auch schon Thread drin. Nächstes mal bitte erstmal nachsehen ob es das Problem schonmal gab
C: fn_showMsg.sqf
Alles anzeigen/* file: fn_msgRequest.sqf Author: Silex Fills the Messagelist */ private["_query", "_queryResult", "_uid", "_player"]; _uid = [_this, 0, "", [""]] call BIS_fnc_param; _player = [_this, 1, ObjNull, [ObjNull]] call BIS_fnc_param; _query = format["SELECT fromID, toID, message, fromName, toName FROM messages WHERE toID='%1' ORDER BY time DESC", _uid]; waitUntil { !DB_Async_Active }; _queryResult = [_query, 2, true] call DB_fnc_asyncCall; if (count _queryResult == 0) exitWith {}; { [1, _x] remoteExec["life_fnc_smartphone", _player]; } forEach _queryResult; ----------------------------------------------------------------- alles hier drunter löschen, das ist doppelt. _queryResult = [_query,2,true] call DB_fnc_asyncCall; if(count _queryResult == 0) exitWith {}; {[1,_x] remoteExec ["life_fnc_smartphone",_player]; }forEach _queryResult;
-
ich habe hier noch den Löschen Button(Alle Nachrichten)
In der "CfgRemoteExec.hpp", fügt das hier ein:
F(TON_fnc_cleanupMessages,SERVER)
In der "dialog\smartphone.hpp", sucht nach "class Notruf" und fügt danach das hier ein:
Cclass DeleteMessages : Life_RscButtonMenu { idc = -1; text = "Nachrichten leerern"; onButtonClick = "[3] call life_fnc_smartphone;"; colorBackground[] = { 0.584, 0.086, 0.086, 1.0 }; x = 0 + 0.7 - (6.25 / 40); y = 0.25 + (1 / 25) + 0.51; w = (6.25 / 20); h = (1 / 25); };
es sollte nun so aussehn:
C
Alles anzeigenclass Notruf : Life_RscButtonMenu { idc = -1; text = "$STR_SMARTPHONE_NOTRUF"; onButtonClick = "createDialog ""Life_smartphone_notruf"";"; colorBackground[] = {0.584, 0.086, 0.086,1.0}; x = 0.325 + 0.7 - (6.25 / 40); y = 0.25 + (1 / 25) + 0.51; w = (6.25 / 40); h = (1 / 25); }; class DeleteMessages : Life_RscButtonMenu { idc = -1; text = "Nachrichten leerern"; onButtonClick = "[3] call life_fnc_smartphone;"; colorBackground[] = { 0.584, 0.086, 0.086, 1.0 }; x = 0 + 0.7 - (6.25 / 40); y = 0.25 + (1 / 25) + 0.51; w = (6.25 / 20); h = (1 / 25); }; }; };
jetzt öffnen wir "core\pmenu\fn_smartphone.sqf" und fügen zw. "case 2" und "case 4" den fehlenden "case 3" ein.
das sieht dann so aus:
Code
Alles anzeigencase 1: { _msg = [_data select 2,40] call KRON_StrLeft; _rowData = [_data select 0, _data select 1, _data select 2, _data select 3]; _cMessageList lnbAddRow[_data select 3,format["%1 ...",_msg]]; _cMessageList lnbSetData[[((lnbSize _cMessageList) select 0)-1,0],str(_rowData)]; }; case 2: { ctrlEnable[887892,true]; _target = lbData[88881,(lbCurSel 88881)]; life_smartphoneTarget = call compile format["%1",_target]; }; case 3: { lbClear _cMessageList; [player] remoteExec ["TON_fnc_cleanupMessages",2]; }; case 4: { createDialog "Life_smartphone_schreiben"; ctrlSetText[88886, format["Message: %1",name life_smartphoneTarget]]; if((FETCH_CONST(life_adminlevel) < 1)) then { ctrlShow[888897,false]; }; }; };
nun gehen wir in die "config.cpp" des life_server und erweiter die "class Smartphone":C
Alles anzeigenclass PlayTime { file = "\life_server\Functions\PlayTime"; class setPlayTime {}; class getPlayTime {}; }; class Smartphone { file = "\life_server\Functions\Smartphone"; class handleMessages {}; class msgRequest {}; class cleanupMessages {}; }; }; };
nun erstellen wir noch in "life_server\Functions\Smartphone" eine "fn_cleanupMessages.sqf" mit folgendem inhalt:
Code: fn_cleanupMessages.sqf
Alles anzeigenprivate["_player","_query"]; _player = [_this,0,ObjNull,[objNull]] call BIS_fnc_param; if(isNull _player) exitWith {}; _query = format["DELETE FROM messages WHERE toID='%1'",getPlayerUID _player]; waitUntil{!DB_Async_Active}; [_query,1] call DB_fnc_asyncCall;
und fertig.
Dank Exodoos hab ich das SQL-Smartphone zum laufen bekommen. Nur dadurch war es mir möglich den Button, aus einer alten Version, zu aktualisieren.
@Exodoos du kannst das gern mit bei dir einbauen/erweitern
und wer es gern wissen möchte, das komplette script läuft auch mit der aktuellen dev Revision 5.0
Also ich habe das bei mir getestet, jedoch funktioniert das bei mir nicht, habe auch keine Fehler in den RPT Logs einfach nichts ... -
Habe ein Problem:
Wenn ich mein Smartphone offfne bekomme ich folgenden fehler:
"No entry'mpmissions\_CUR_MP.[lexicon]Tanoa[/lexicon]\http://description.ext/Life_my_smartp…eList.rowHeight'."
Weiß jemande weiter?
-
Guten Abend,
Ich wollte mal nachfragen ob jemand bezüglich der Medic/Cop Call´s das Problem mit den Coordi gelöst hat? Ich finde keine Lösung.
Mfg Xavier
-
Guten Abend,
Ich wollte mal nachfragen ob jemand bezüglich der Medic/Cop Call´s das Problem mit den Coordi gelöst hat? Ich finde keine Lösung.
Mfg Xavier
Klar, pass deine fn_handleMessages.sqf so an: Geändert ist da glaube ich nur das _grid.
Code
Alles anzeigen/* file: fn_handleMessages.sqf Author: Silex*/ private["_msg","_to","_target","_player","_type","_grid"]; _target = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param; _msg = [_this,1,"",[""]] call BIS_fnc_param; _player = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param; _type = [_this,3,-1] call BIS_fnc_param; _grid = mapGridPosition _player; switch(_type) do{ //normal message case 0: { if(isNULL _target) exitWith {}; _to = call compile format["%1", _target]; [_msg,name _player,0] remoteExec ["TON_fnc_clientMessage",_to]; private["_query","_pid","_toID"]; _pid = getPlayerUID _player; _toID = getPlayerUID _target; _msg = [_msg] call DB_fnc_mresString; _fromName = name _player; _toName = name _target; _query = format["INSERT INTO messages (fromID, toID, message, fromName, toName) VALUES('%1', '%2', '""%3""', '%4', '%5')",_pid,_toID,_msg,_fromName,_toName]; diag_log format["Query: %1",_query]; waitUntil{!DB_Async_Active}; [_query,1] call DB_fnc_asyncCall; }; //message to cops case 1: { [_msg,name _player,1,_grid] remoteExec ["TON_fnc_clientMessage",west]; }; //to admins case 2: { [_msg,name _player,2] remoteExec ["TON_fnc_clientMessage",0]; }; //ems request case 3: { [_msg,name _player,5,_grid] remoteExec ["TON_fnc_clientMessage",independent]; }; //adminToPerson case 4: { _to = call compile format["%1", _target]; if(isNull _to) exitWith {}; [_msg,name _player,3] remoteExec ["TON_fnc_clientMessage",_to]; }; //adminMsgAll case 5: {[_msg,name _player,4] remoteExec ["TON_fnc_clientMessage",0]; }; };
-
Klar, pass deine fn_handleMessages.sqf so an: Geändert ist da glaube ich nur das _grid.
Code
Alles anzeigen/* file: fn_handleMessages.sqf Author: Silex*/ private["_msg","_to","_target","_player","_type","_grid"]; _target = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param; _msg = [_this,1,"",[""]] call BIS_fnc_param; _player = [_this,2,ObjNull,[ObjNull]] call BIS_fnc_param; _type = [_this,3,-1] call BIS_fnc_param; _grid = mapGridPosition _player; switch(_type) do{ //normal message case 0: { if(isNULL _target) exitWith {}; _to = call compile format["%1", _target]; [_msg,name _player,0] remoteExec ["TON_fnc_clientMessage",_to]; private["_query","_pid","_toID"]; _pid = getPlayerUID _player; _toID = getPlayerUID _target; _msg = [_msg] call DB_fnc_mresString; _fromName = name _player; _toName = name _target; _query = format["INSERT INTO messages (fromID, toID, message, fromName, toName) VALUES('%1', '%2', '""%3""', '%4', '%5')",_pid,_toID,_msg,_fromName,_toName]; diag_log format["Query: %1",_query]; waitUntil{!DB_Async_Active}; [_query,1] call DB_fnc_asyncCall; }; //message to cops case 1: { [_msg,name _player,1,_grid] remoteExec ["TON_fnc_clientMessage",west]; }; //to admins case 2: { [_msg,name _player,2] remoteExec ["TON_fnc_clientMessage",0]; }; //ems request case 3: { [_msg,name _player,5,_grid] remoteExec ["TON_fnc_clientMessage",independent]; }; //adminToPerson case 4: { _to = call compile format["%1", _target]; if(isNull _to) exitWith {}; [_msg,name _player,3] remoteExec ["TON_fnc_clientMessage",_to]; }; //adminMsgAll case 5: {[_msg,name _player,4] remoteExec ["TON_fnc_clientMessage",0]; }; };
Das habe ich grade ersetzt, jedoch werden mir immer noch keine coordis angeben beim medic call
-
Dann wüsste ich grade nicht, woran es liegt. Bei mir geht es so. Vielleicht mal in deine Logs schauen?
-
in den logs kommt keine fehler Meldung. habe schon den Notruf vom cop so gemacht das er für Medics gehen sollte. aber er sende die Nachricht auch nicht mit
-
Kann man das eig auch im ProfileNamespace Speichern lassen?
Eigentlich dürfte es doch gehen oder nicht?
-
Hallo,
ich habe gerade mal einen neuen Tanoa Server zum Testen gestartet. Soweit läuft die aktuelle Tanoa 5.0 Version mit exDB3 welches ich hier aus dem Forum runter geladen habe. nun habe ich das SQL Smartphone eingebaut. Es tut auch irgendwie, also Nachrichten werden gesendet etc. Allerdings habe ich das Problem, dass keine Nachrichten in der DB gespeichert werden und immer ein kleiner Fehler kommt, wenn ich als Cop eine Meldung an alle Cops schicke. Siehe Screenshot:
Ich vermute dass es an den Coordinaten liegt, weil die sind in der Nachricht ja als Uncnown angegeben. Habe die Server und Client Logs beigefügt.
Außerdem die Log Datei der DB. Vielleicht hat da jemand eine Idee.
-
Hi,
also ich kann hier nur die beiden folgenden Fehler finden.
Code13:15:28 Error in expression <his select 3; _unit = _this select 4; _message = format > 13:15:28 Error position: <select 4; _message = format > 13:15:28 Error Nullteiler
Auf Grund der Variable würde ich sagen da ist ein Fehler in der Smartphone.sqf
Gruß,
moeck
-
Die einzige Datei in der diese Zeile vorkommt: _unit = _this select 4;
ist die functions.sqf im life Server. Ich hab hier mal beide Dateien hoch geladen, vielelicht entdeckt jemand was da nicht stimmt.
-
Bei mir klappt alles soweit, aber die Nachricht wird doppelt gespeichert und steht doppelt mit dem gleichen Inhalt übereinander und der Lösch Button geht nichts mit dem Lösch Button probiere ich es gerade zu fixen, aber vielleicht hat ja jemand ne Idee oder den selben fehler schonmal gehabt. RPT spucken nichts und der Datenbank Eintrag ist auch nicht doppelt.
Mfg Pius von GermanRPG
-
Ahhh ja genau Koordinaten werden auch als unknow gesendet hmmm..
-
Nvm klappt jetzt alles super! Koordinaten werden normal gesendet, keine doppelt Einträge und die SMS löscht sich super! Versuche jetzt Cops, Zivs und Medics in Farben und nicht Namen zu Soteren, das die Polizei z.B Blau im Telefon angezeigt wird!
Wer Hilfe brauch kann mich anschreiben!
Mfg Pius von GermanRPG
-
Darf man fragen was du gemacht hast?
-
Darf man fragen was du gemacht hast?
Alles was hier gepostet wurde!
-