[TUTORIAL] SQL basiertes Smartphone

Ab sofort füllen wir den Artikel-Bereich von Native-Network.net regelmäßig mit neuen Inhalten zu verschiedenen Themen! Direkt zu den Artikeln gelangst du

HIER

  • SQL BASIERTES SMARTPHONE FÜR 4.4 UND 4.4 R4
    Upgedated von Alaskavet , Basis Code von Silex


    Hallo, heute mache ich mal was ganz schmackhaftes, was viele von euch kennen und lieben gelernt haben.


    Dann fangen wir mal an.


    CLIENT PART:

    Öffnet eure "configuration.sqf" und fügt dort, wo die life_variables sind, das hier ein:

    SQL: configuration.sqf
    1. life_smartphoneTarget = ObjNull;




    In der "CfgRemoteExec.hpp", fügt das hier ein:


    SQL: CfgRemoteExec.hpp
    1. F(TON_fnc_handleMessages,SERVER)
    2. F(TON_fnc_msgRequest,SERVER)


    Dann geht in die "Functions.hpp" und fügt das hier unter der class "Player_Menu" ein:


    SQL: Functions.hpp
    1. class smartphone {};
    2. class newMsg {};
    3. class showMsg {};


    Öffnet eure "Masterhandler.hpp", diese findet ihr im "dialog" Ordner und fügt das ein:


    SQL: Masterhandler.hpp
    1. #include "smartphone.hpp"


    Dann geht in die "player_inv.hpp" im "dialog" Ordner, sucht nach "ButtonCell" und ersetzt diesen Event "onButtonClick" mit diesem hier:


    SQL: player_inv.hpp
    1. createDialog ""Life_my_smartphone"";


    Erstellt im "dialog" Ordner eine neue Datei namens "smartphone.hpp" und fügt das hier ein:



    Öffnet dann eure "stringtable.xml" und fügt eine neue Package ein:


    Geht dann in den Ordner "core\pmenu" und erstellt 3 neue Dateien:


    "fn_newMsg.sqf" , "fn_smartphone.sqf" , fn_showMsg.sqf


    1. fn_newMsg.sqf


    2. fn_smartphone.sqf


    3. fn_showMsg.sqf


    LIFE_SERVER PART:


    Öffnet eure "config.cpp" und sucht nach der class "TON_system", unter diesem class fügt eine weitere class hinzu:

    SQL: config.cpp
    1. class Smartphone
    2. {
    3. file = "\life_server\Functions\Smartphone";
    4. class handleMessages {};
    5. class msgRequest {};
    6. };


    Geh in den "Functions" Ordner und erstelle einen Ordner namens "Smartphone", in diesem Ordner erstellt 2 Dateien:


    "fn_handleMessages.sqf" , "fn_msgRequest.sqf"


    1. fn_handleMessages.sqf


    2. fn_msgRequest.sqf


    Erstellt nun eine neue Datei auf dem Desktop namens "smartphone.sql" und fügt folgendes ein:


    SQL: smartphone.sql
    1. CREATE TABLE IF NOT EXISTS `messages` (
    2. `uid` int(12) NOT NULL AUTO_INCREMENT,
    3. `fromID` varchar(50) NOT NULL,
    4. `toID` varchar(50) NOT NULL,
    5. `message` text,
    6. `fromName` varchar(32) NOT NULL,
    7. `toName` varchar(32) NOT NULL,
    8. `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    9. PRIMARY KEY (`uid`)
    10. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    Nun führt ihr diese Datei in eurer Datenbank aus und schon habt ihr die Tabelle "messages".



    FERTIG!


    Falls ihr irgendwelche Fragen habt, stellt Sie mir einfach












    Mit freundlichen Grüßen,


    Exodoos
    ________________________________


    Macht euch doch ein Bild!


    Ohne Logs & entsprechende Dateien kein Support!

    Dieser Beitrag wurde bereits 5 Mal editiert, zuletzt von Exodoos ()

  • [lexicon]extDB[/lexicon] Logs, RPT Logs alles bereits durchgeschaut?

    Jep, einzig Auffällige wären die [lexicon]extDB[/lexicon] Logs, die Anzeigen: "[22:47:16 +02:00] [Thread 27207] extDB2: No Config Option Found: "


    Was laut Lexicon auf einen falschen Prefix hinweist, dieser wurde aber nicht verändert. Nehme ich die PBOs vor der Bearbeitung, (ohne die extDB2.ini anzurühren), startet der Server ohne solche Fehler.


    Und in der Konsole natürlich: "22:47:16 "extDB2: Error with Database Connection"" als Meldung

  • Jep, einzig Auffällige wären die [lexicon]extDB[/lexicon] Logs, die Anzeigen: "[22:47:16 +02:00] [Thread 27207] extDB2: No Config Option Found: "
    Was laut Lexicon auf einen falschen Prefix hinweist, dieser wurde aber nicht verändert. Nehme ich die PBOs vor der Bearbeitung, (ohne die extDB2.ini anzurühren), startet der Server ohne solche Fehler.


    Und in der Konsole natürlich: "22:47:16 "extDB2: Error with Database Connection"" als Meldung

    Da kann ich dir leider nicht helfen, kenne diesen Fehlern nicht.



    Diese Datei müsste doch eine .sqf sein oder? Jedenfalls sagt mein Server:Script/core/pmenu/fn_smartphone.sql not found



    Sowie die Datei "fn_showMsg.sqf":
    Script/core/pmenu/fn_showMsg.sql not found

    Ups hab mich da vertippt. Aber ist ja logisch oder nicht Killarobo?

  • Ich habe alles eingefügt. zuerst hatte der Server keine Verbindung mehr zur Datenbank. Dann habe ich den life_server Part neu gemacht aber nun wenn ich auf Telefon drücken will kommt nix. es passiert einfach gar nichts.
    Im Anhang meine RPT LOG.txt ;) cce7c9d79c.rpt

    Was hast du beim "life_server Part" denn neu gemacht?
    Ich hab alles fein säuberlich nach Anleitung gemacht, gerade nochmals wiederholt, dennoch der selbe Fehler. Keine DB Verbindung mehr. Ich erkenne auch kein Fehler.

  • Jep, einzig Auffällige wären die [lexicon]extDB[/lexicon] Logs, die Anzeigen: "[22:47:16 +02:00] [Thread 27207] extDB2: No Config Option Found: "
    Was laut Lexicon auf einen falschen Prefix hinweist, dieser wurde aber nicht verändert. Nehme ich die PBOs vor der Bearbeitung, (ohne die extDB2.ini anzurühren), startet der Server ohne solche Fehler.


    Und in der Konsole natürlich: "22:47:16 "extDB2: Error with Database Connection"" als Meldung

    Das Problem hatte ich einmal auch, als ich einen Fehler in meiner MasterHandler.hpp hatte und da vor dem [lexicon]extDB[/lexicon] Prefix in der description.ext die MasterHandler.hpp includet wird, siehe hier:


    wird der [lexicon]extDB[/lexicon] Prefix nicht richtig an den Server übergeben.
    Mein Fehler damals war, dass ich in der MasterHandler.hpp #include "smartphone.hpp" vor #include "common.hpp" eingefügt habe.


    Ob das bei dir jetzt genauso ist, kann ich nicht sagen. Jedenfalls andere


    Da kann ich dir leider nicht helfen, kenne diesen Fehlern nicht.

    wissen anscheinend auch nicht weiter. Und auch wenn es nur Vermutungen meinerseits sind, vielleicht ist das für dich ein nützlicher Denkanstoß.

  • Vielen Dank für dein Denkanstoß.
    Es macht auch durchaus Sinn, wenn die Including Reihenfolge so ist.
    Ich hab nochmal alles nachvollzogen und kontrolliert:


    Das #include "smartphone.hpp" habe ich in der MasterHandler.hpp am Ende inkludiert. Also auch nach dem common.hpp. Nichts desto trotz habe ich die MasterHandler nach dem initalisieren des Prefix Testweise gesetzt, immer noch der selbe Fehler.


    Nungut, ich schau es mir morgen nochmals an ob ich irgend ein Fehler erkennen kann, bis dato ist es aber 1 zu 1 wie im Tutorial.


    Ich hab absolut keine Ahnung wo der Hund begraben liegt.






    Nachtrag:
    Ich bin nun dem "Original" auf Englisch gefolgt und habe dementsprechend auch die Sachen dort kopiert und eingefügt. Jetzt fährt der Server normal hoch. Senden und Empfangen funktioniert auch Wunderbar.


    Nur 2 Bugs:


    1. Nachrichten werden doppelt angezeigt. Beispielsweise, man schickt mir Nachricht A und B, dann ist in der Auflistung der Nachrichten "A B A B" am stehen.
    2. Ich erhalte die Fehlermeldung "No Entry 'mpmission\_cur_MP.Altis\description.ext/Life_my_smartphone/controls/MessageList.rowHeight'.



    Fehlermeldungen in den Logs erhalte ich nun garkeine. Nachrichten sind in der DB auch nicht doppelt. Weiß bei den zwei Dingen jemand Rat?
    Screenshot:

  • Zu den doppelten Einträgen: hier in Tutorial ist im life_server-Teil in der Datei fn_msgRequest.sqf


    Code
    1. _queryResult = [_query,2,true] call DB_fnc_asyncCall;
    2. if(count _queryResult == 0) exitWith {};
    3. {[1,_x] remoteExec ["life_fnc_smartphone",_player];
    4. }forEach _queryResult;

    doppelt vorhanden, was im Tutorial auf altisliferpg.com nicht der Fall ist.

  • zu deinem Screenshot:


    du musst bei deiner Common.hpp bei class Life_RscListNBox das unten hinzufügen wie es bei mir im Code ist.


    drawSideArrows = 0;
    idcLeft = -1;
    idcRight = -1;

  • ....

    Vielen vielen Dank, daran hat es gelegen! :-)

    ....

    Auch dir vielen vielen Dank!
    Ich habe mir zusätzlich noch das "rowHeight" gemobst, hat ebenfalls gefehlt :-)




    Nun funktioniert das Smartphone Klasse. Einzige was ich wünschenswert finden würde:
    Wenn die Medics / Cops die Nachrichten, welche per Handy verschickt wurden als Notrufe ebenfalls dort angezeigt werden würden. Zumindestens solang die jeweiligen Einsatzkräfte online sind.
    Ansonsten nochmals vielen Dank für das Script und die tatkräftige Hilfe :-)