Japs,
SQL1_1 = INSERT INTO perso(pid, persoCop, persoMed, persoCiv, persoEast) VALUES (?,'[]','[]','[]','[]');
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.
Japs,
SQL1_1 = INSERT INTO perso(pid, persoCop, persoMed, persoCiv, persoEast) VALUES (?,'[]','[]','[]','[]');
Found a issue in perso\fn_persoBeantragenAenderung.sqf. Could you describe your problem a bit more? (my English "meh")
Also ich habe jeden Befehl in einer Datei stehen.
@extDB2\[lexicon]extdb[/lexicon]\SQL_CUSTOM_V2\altis-life-rpg-4.ini
Da in den anderen life_server Varianten die Befehle selber drin stehen, habe ich diese genommen, da dort ja die Befehle aus der .ini angesprochen werden.
Sorry, wenn ich mich da jetzt total verrenne. Mit Datenbanksachen habe ich es noch nicht so ganz.
Sie werden zwar angesprochen, müssen aber selber hinzugefügt werden.
Also wenn du damit die SQL_Custom meinst, dann sieht die so aus bei mir:
Oder nutzt du keine vordefinierten SQL-Befehle? So wie du die persoRequest eingebaut hast schon :o
Ich schick jetzt einfach mal einen Screenshot von dem Table `perso`.
Wie ich gerade gesehen habe, nutzt du vordefinierte SQL-Statements und die life_server Variante für extDB3. Soll das so? Wie siehen die vordefinierten SQL-Statements in der ".ini" aus?
Any issues in your clientside rpt-file?
@Draxprod
Nicht der Datensatz als INSERT sondern so, wie man in bspw. mit Navicat oder in phpmyadmin drin sieht. Der Rest scheint eig ok zu sein wobei mich aber wundert, warum beim INSERT die Spalten fehlen
Hey,
welche Altis Version nutzt du?
Wie sieht die life_server\Functions\MySQL\perso\fn_persoRequest.sqf aus? Aus welcher life_server-Version hast du den perso-Ordner kopiert?
Wie sieht der Datensatz in der Datenbank aus?
Das Alter wird mit dem Missionsdatum gegengerechnet (2035 Arma Kampagne). Bei dem anderen Fehler mit ini: hier musst du die ini erweitern, also vordefinierte SQL-Statements erstellen (an vorhandene richten und schauen wie diese aufgerufen werden). Zum mrestoarry: wenn füge diese im MySQL-Verzeichnis hinzu, passe dazu die Config.cpp an und testen. Ich bin stumpf davon ausgegangen, dass die in jeder altisversion existiert
#handy kann also nicht so viel helfen
ZIP-Archiv im Anhang aktualisiert und Vorabinformationen (Versionen) aktualisiert
Hast du irgendwie das Beitragsthema nicht mitbekommen? Lies es dir nochmal durch und gut ist.
Mir ist Sehr bewusst was Wireshark alles machen kann. Hier geht es aber nicht um die Benutzung von Wireshark sondern und eine Möglichkeit herauszufinden wieso seine Kommunikation mit den Servern von Steam so langsam ist.
Entschuldige, dass ich nur auf etwas an sich wichtiges hinweisen wollte. Lesen kann ich natürlich auch... search
Dann schreibe das... Wireshark wird auch gerne mal anderweitig eingesetzt....
Natürlich musst du mit Wireshark auf Datenschutz achten (je nachdem, was du von wem mitsniffst...)
Zu deiner life_server:Ist das die Komplette oder hast du den Ausschnitt nur geteilt
In welchen Dateien hast du was geändert? Hast du ein Backup erstellt? Im zweifelsfall (bevor es hin und her geht) mache es mit einer Kopie des Backups erneut
Hast du extDB2 neu installiert oder lief extDB2 vorher schon? Allein durch das Hinzufügen der Dateien darf es nicht und kann es nicht zu diesem Problem kommen :o
Das Skript gefällt mir. Habt ihr gut gemacht. Was soll der Pink/Lilane Bereich auf dem Personalausweis darstellen?
In der Config_Perso kannst du ein Pfad zum Beispiel zu einem Logo setzen (Dienstmarke) oder setzt die Transparenz auf 0. Soll die Fraktionszugehörigkeit regeln.
Irgendwelche Fehlermeldungen in den jeweiligen Logs vorhanden? Ist das Format für dein abgespeichertes Loadout korrekt?
Fehler: Config_Perso.hpp
class CfgServer {
DatabaseName = not found.
Schaue mal nach ob in der description.ext das so aus sieht (im TUT hat ein " gefehlt):
#include "Config_Perso.hpp"
Danke @Nostra.
Traurig. Wieso auch immer so etwas zur copy&paste Arma Life Community beigetragen wird.
Ich möchte zwar keine Diskussuin starten, aber egal für wen oder was du programmierst, ein großer Bestandteil ist es Vorhandenes zu übernehmen und eigenen Bedürfnissen anzupassen. Also "traurig" ist es nicht, sondern hilfreich.
Habe meinen Beitrag oben bearbeitet.
Sagt bitte bescheid, ob es bei euch funktioniert.
Und nicht einfach Copy&Paste. Womöglich sind ein paar Hindernisse platziert.
Ordnerstruktur war nicht ganz eindeutig.
Ist nun erstellt
Mittlerweile ist V2 verfügbar! Diese beinhaltet diverse Verbesserungen & Erweiterungen. Zu ihr gelangst du hier: [KLICK MICH]
--------------------------
Hallo zusammen,
ich teile mit euch meine Personalausweis-Scripts.
Vorab soll was erwähnt sein:
Die Nutzung dieses Pakets und die enthaltenen Scripts/Dateien erlaube ich nur, wenn die begefügte License-FvS.txt im Missionsordner liegt (oder in einem Verzeichnis wo weitere liegen) und dass die jeweiligen Punkte akzeptiert und eingehalten werden.
WICHTIG: Erstelle vor dem Einfügen der Personalausweis-Scripts ein Backup deiner Mission (Mission.Altis und life_server sowie der Datenbankstruktur und deren Inhalt)! Die Weiterverbreitung in anderen Foren untersage ich (eine Erlaubnis ist bei mir einzuholen).
(ein englisch-sprachiges Tutorial darf gerne für Native-Network erstellt werden!)
Lade dir nun das anghängte ZIP-Archiv herunter. Und los gehts...
Dialog anpassen und einfügen
Öffne das Verzeichnis Altis_life.Altis\dialog
class perso_idcard: Life_RscButtonMenu
{
onButtonClick = "private[""_rang_1""]; _rang_1 = switch(playerSide) do {case west: {str(call life_coplevel)};case independent: {str(call life_mediclevel)};case civilian: {""""};case east: {""""};}; [player,_rang_1] remoteExecCall [""fvs_fnc_zeigePerso"",player]; closeDialog 0;";
idc = -1;
text = "ID CARD";
x = 0.738657;
y = 0.849;
w = 0.15625;
h = 0.04;
tooltip = "Meinen Personal-/Dienstausweis ansehen \/ Take a look on my ID card";
};
Alles anzeigen
class Life_Checkbox
{
access = 0; // Control access (0 - ReadAndWrite, 1 - ReadAndCreate, 2 - ReadOnly, 3 - ReadOnlyVerified)
idc = -1; // Control identification (without it, the control won't be displayed)
type = 77; // Type
style = ST_LEFT + ST_MULTI; // Style
default = 0; // Control selected by default (only one within a display can be used)
blinkingPeriod = 0; // Time in which control will fade out and back in. Use 0 to disable the effect.
x = 0;
y = 0;
w = 1 * GUI_GRID_CENTER_W; // Width
h = 1 * GUI_GRID_CENTER_H; // Height
//Colors
color[] = { 1, 1, 1, 0.7 }; // Texture color
colorFocused[] = { 1, 1, 1, 1 }; // Focused texture color
colorHover[] = { 1, 1, 1, 1 }; // Mouse over texture color
colorPressed[] = { 1, 1, 1, 1 }; // Mouse pressed texture color
colorDisabled[] = { 1, 1, 1, 0.2 }; // Disabled texture color
//Background colors
colorBackground[] = { 0, 0, 0, 0 }; // Fill color
colorBackgroundFocused[] = { 0, 0, 0, 0 }; // Focused fill color
colorBackgroundHover[] = { 0, 0, 0, 0 }; // Mouse hover fill color
colorBackgroundPressed[] = { 0, 0, 0, 0 }; // Mouse pressed fill color
colorBackgroundDisabled[] = { 0, 0, 0, 0 }; // Disabled fill color
//Textures
textureChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; //Texture of checked CheckBox.
textureUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; //Texture of unchecked CheckBox.
textureFocusedChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa"; //Texture of checked focused CheckBox (Could be used for showing different texture when focused).
textureFocusedUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa"; //Texture of unchecked focused CheckBox.
textureHoverChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";
textureHoverUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";
texturePressedChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";
texturePressedUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";
textureDisabledChecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_checked_ca.paa";
textureDisabledUnchecked = "\A3\Ui_f\data\GUI\RscCommon\RscCheckBox\CheckBox_unchecked_ca.paa";
tooltip = ""; // Tooltip text
tooltipColorShade[] = { 0, 0, 0, 1 }; // Tooltip background color
tooltipColorText[] = { 1, 1, 1, 1 }; // Tooltip text color
tooltipColorBox[] = { 1, 1, 1, 1 }; // Tooltip frame color
//Sounds
soundClick[] = { "\A3\ui_f\data\sound\RscButton\soundClick", 0.09, 1 }; // Sound played after control is activated in format {file, volume, pitch}
soundEnter[] = { "\A3\ui_f\data\sound\RscButton\soundEnter", 0.09, 1 }; // Sound played when mouse cursor enters the control
soundPush[] = { "\A3\ui_f\data\sound\RscButton\soundPush", 0.09, 1 }; // Sound played when the control is pushed down
soundEscape[] = { "\A3\ui_f\data\sound\RscButton\soundEscape", 0.09, 1 }; // Sound played when the control is released after pushing down
};
Alles anzeigen
Hinzufügen einer neuen Lizenz für Zivilisten
Zivilisten benötigen diese Lizenz um ihre Daten auf dem Personalausweis selber (später) anpassen zu können.
Versionen 3.1.4.8 und weitere ohne Config_Licenses.hpp
Versionen über 4.0 mit Config_Licenses.hpp
class einbuergerung {
variable = "einbuergerung";
displayName = "STR_License_einb";
price = 2500;
illegal = false;
side = "civ";
};
Funktionen/Scripts und Dialoge einbinden
class felixvonstudsinske
{
tag = "fvs";
class perso
{
file = "core\pmenu\perso";
class perso_laden {};
class persoCheck {};
class persoCheck_aenderung {};
class persoErgebnis {};
class persoNeu {};
class updateTag {};
class updateTagA {};
class updateMonat {};
class updateMonatA {};
class updateHsnr {};
class updateHsnrA {};
class updateStrasse {};
class updateStrasseA {};
class persoBeantragen {};
class persoBeantragenAenderung {};
class persoInteractionMenu {};
class zeigePerso {};
class updatePersoBild {};
class updatePersoBildA {};
class aenderePerso {};
};
};
Alles anzeigen
class falschprof
{
title = "Falscher Profilname";
subTitle = "";
description = "Dein aktuelles Profil (Name) stimmt nicht mit dem abgespeicherten Namen im Personalausweis überein! Bitte aendere dein Profil. Falls du deinen Namen nicht mehr kennst, melde dich bitte beim Support!";
pictureBackground = "";
picture = "";
pictureColor[] = {0,0.3,0.6,1};
};
class fehlerprof
{
title = "Fehler im Personalausweis";
subTitle = "";
description = "Bitte melde dich im Support und gebe den Fehler mit an!";
pictureBackground = "";
picture = "";
pictureColor[] = {0,0.3,0.6,1};
};
class persoA
{
title = "Personalausweis";
subTitle = "";
description = "Bitte aendere dein Profilnamen auf den Namen, den du vor 5 Minuten beim Buergeramt angegeben hast!";
pictureBackground = "";
picture = "";
pictureColor[] = {0,0.3,0.6,1};
};
class fformatprof
{
title = "Format Personalausweis";
subTitle = "";
description = "Bitte melde dich im Support und gebe den Fehler mit an!";
pictureBackground = "";
picture = "";
pictureColor[] = {0,0.3,0.6,1};
};
class dialogperso
{
title = "Personalausweisdialog geschlossen";
subTitle = "";
description = "Dialog des Personalausweises wurde geschlossen...";
pictureBackground = "";
picture = "";
pictureColor[] = {0,0.3,0.6,1};
};
Alles anzeigen
/*
File: fn_setupActions.sqf
Description:
Master addAction file handler for all client-based actions.
*/
switch (playerSide) do
{
case civilian:
{
//Drop fishing net
life_actions = [player addAction[localize "STR_pAct_DropFishingNet",life_fnc_dropFishingNet,"",0,false,false,"",'
(surfaceisWater (getPos vehicle player)) && (vehicle player isKindOf "Ship") && life_carryWeight < life_maxWeight && speed (vehicle player) < 2 && speed (vehicle player) > -1 && !life_net_dropped ']];
//Rob person
life_actions = life_actions + [player addAction[localize "STR_pAct_RobPerson",life_fnc_robAction,"",0,false,false,"",'
!isNull cursorTarget && player distance cursorTarget < 3.5 && isPlayer cursorTarget && animationState cursorTarget == "Incapacitated" && !(cursorTarget getVariable["robbed",FALSE]) ']];
life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
};
case west:
{
life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
};
case independent:
{
life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
};
case east:
{
life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'
isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
};
};
Alles anzeigen
life_actions = life_actions + [player addAction["Personalausweis zeigen",{[player] remoteExecCall ["fvs_fnc_zeigePerso",cursorTarget];},"",0,false,false,"",'isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1)']];
life_actions = life_actions + [player addAction["Personalausweis ansehen",{[cursorTarget] remoteExecCall ["fvs_fnc_zeigePerso",player];},"",0,false,false,"",'isPlayer cursorTarget && alive cursorTarget && (player distance cursorTarget < 3) && (speed player < 1 && speed cursorTarget < 1) && !(player getVariable ["restrained",false]) && (cursorTarget getVariable ["restrained",false])']];
F(fvs_fnc_perso_laden,CLIENT) // Perso
F(fvs_fnc_persoBeantragen,CLIENT) // Perso
F(fvs_fnc_persoCheck,CLIENT) // Perso
F(fvs_fnc_persoErgebnis,CLIENT) // Perso
F(fvs_fnc_persoNeu,CLIENT) // Perso
F(fvs_fnc_updateMonat,CLIENT) // Perso
F(fvs_fnc_updateTag,CLIENT) // Perso
F(fvs_fnc_zeigePerso,CLIENT) // Perso
F(fvs_fnc_updatePersoBild,CLIENT) // Perso
F(DB_fnc_persoRequest,SERVER) // Perso
F(DB_fnc_persoInsert,SERVER) // Perso
F(DB_fnc_persoUpdate,SERVER) // Perso
Alles anzeigen
fvs_persoReady = false;
fvs_hakenregeln = false;
fvs_checking = false;
fvs_hakenrichtig = false;
fvs_namenInfo = false;
fvs_checking_a = false;
fvs_namen_a = false;
fvs_hakendaten = false;
diag_log "::Client:: Pruefe Personalausweisdaten.";
0 cutText ["Ueberpruefe Daten des Personalausweises...","BLACK FADED"];
[] call fvs_fnc_perso_laden;
0 cutFadeOut 99999999;
waitUntil{fvs_persoReady};
_query_2 = format["INSERT INTO perso(pid, persoCop, persoMed, persoCiv, persoEast) VALUES ('%1','""[]""','""[]""','""[]""','""[]""')",_uid];
waitUntil {!DB_Async_Active};
[_query_2,1] call DB_fnc_asyncCall;
class perso
{
file = "\life_server\Functions\MySQL\perso";
class persoRequest {};
class persoInsert {};
class persoUpdate {};
};
Datenbank
CREATE TABLE IF NOT EXISTS `perso` (
`id` int(12) NOT NULL AUTO_INCREMENT,
`pid` varchar(50) NOT NULL DEFAULT '',
`persoCop` text NOT NULL,
`persoMed` text NOT NULL,
`persoCiv` text NOT NULL,
`persoEast` text NOT NULL,
`Erstellungsdatum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`Aenderungsdatum` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`,`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Alles anzeigen
Optional - Karte editieren
this allowDamage false;
this enableSimulation false;
this addAction[format["%1 ($%2)",["license_civ_einbuergerung"] call life_fnc_varToStr,[(["einbuergerung"] call life_fnc_licensePrice)] call life_fnc_numberText],life_fnc_buyLicense,"einbuergerung",0,false,false,"",' !license_civ_einbuergerung && playerSide == civilian '];
this addAction["Persoenliche Daten aendern (Kosten: $250.000)",fvs_fnc_aenderePerso,"",0,false,false,"",' license_civ_einbuergerung && playerSide == civilian '];
this allowDamage false;
this enableSimulation false;
this addAction[format["%1 fuer $%2 abholen",localize (getText(missionConfigFile >> "Licenses" >> "einbuergerung" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "einbuergerung" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"einbuergerung",0,false,false,"",' !license_civ_einbuergerung && playerSide == civilian '];
this addAction["Persoenliche Daten aendern (Kosten: $250.000)",fvs_fnc_aenderePerso,"",0,false,false,"",' license_civ_einbuergerung && playerSide == civilian '];
Das sollte es gewesen sein. Wenn ich etwas vergessen habe, werde ich das schnellsmöglichst ergänzen und Fehler natürlich korrigieren.
Sollten Fehler auftreten, dann bitte ich dich die jeweiligen Logs sowie die Dateien anzuhängen, in denen du etwas geändert hast.
Fragen? Raus damit
Grüße und viel Spaß damit
Rom