Und ich dachte das ding basiert inzwischen auf einem vernünfigten Framework
Ohne Framework geht natürlich auch solange man programmieren "kann" & sich auskennt. Aber bei Cyberworks ist das leider nicht so
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.
Und ich dachte das ding basiert inzwischen auf einem vernünfigten Framework
Ohne Framework geht natürlich auch solange man programmieren "kann" & sich auskennt. Aber bei Cyberworks ist das leider nicht so
bitte mein Update anschauen.
Alle die die alte Version habe, bitte in index.php das require("mods/workaround.php"); sowie den Ordner mods komplett löschen.
@Multivitamin: Ist ja quasi genau das was ich geschrieben habe, nur in der Login zusammen gefasst.
EDIT: Habe meine Version aktualisiert, macht im Prinzip das gleiche wie die von Multivitamin.
Liebe Native-Network Community,
hier ein kleines Sicherheitsupdate für das Cyberworks Panel. Getestet mit Version 5. Habe das Workaround geschrieben auf Grund folgendem Problem:
Ich weiss nicht ob es an den cookies lag, aber bei mir konnte sich ein ex-admin wessen account ich gebannt, passwort geändert und Login geändert habe sich immernoch mit den gleichen details rein "hacken". Glaube es könnte an den cookies liegen oder anderem.
EDIT:
Bitte folgende Datei komplett mit dieser ersetzen: classes/login.php:
<?php
require_once("gfunctions.php");
/**
* Class login
* handles the user's login and logout process
*/
class Login
{
/**
* @var array Collection of error messages
*/
public $errors = array();
/**
* @var array Collection of success / neutral messages
*/
public $messages = array();
/**
* @var object The database connection
*/
private $db_connection = null;
/**
* the function "__construct()" automatically starts whenever an object of this class is created,
* you know, when you do "$login = new Login();"
*/
public function __construct()
{
// create/read session, absolutely necessary
//session_start();
// check the possible login actions:
// if user tried to log out (happen when user clicks logout button)
if (isset($_GET["logout"])) {
$this->doLogout();
} // login via post data (if user just submitted a login form)
elseif (isset($_POST["login"])) {
$this->dologinWithPostData();
}
}
/**
* perform the logout
*/
public function doLogout()
{
// delete the session of the user
if (isset($_SESSION['user_name'])) {
logAction($_SESSION['user_name'], 'Logged Out', 1);
}
$_SESSION = array();
session_destroy();
// return a little feeedback message
$this->messages[] = 'You have been logged out';
}
/**
* log in with post data
*/
private function dologinWithPostData()
{
$settings = require('config/settings.php');
// check login form contents
if (empty($_POST['user_name'])) {
$this->errors[] = "Username field was empty.";
} elseif (empty($_POST['user_password'])) {
$this->errors[] = "Password field was empty.";
} elseif (!empty($_POST['user_name']) && !empty($_POST['user_password'])) {
if (isset($settings['db']['port'])) {
$this->db_connection = new mysqli(decrypt($settings['db']['host']), decrypt($settings['db']['user']), decrypt($settings['db']['pass']), decrypt($settings['db']['name']), decrypt($settings['db']['port']));
} else {
$this->db_connection = new mysqli(decrypt($settings['db']['host']), decrypt($settings['db']['user']), decrypt($settings['db']['pass']), decrypt($settings['db']['name']));
}
// change character set to utf8 and check it
if (!$this->db_connection->set_charset("utf8")) {
$this->errors[] = $this->db_connection->error;
}
// if no connection errors (= working database connection)
if (!$this->db_connection->connect_errno) {
// escape the POST stuff
$user_name = $this->db_connection->real_escape_string($_POST['user_name']);
// database query, getting all the info of the selected user (allows login via email address in the
// username field)
$sql = "SELECT user_name, user_email, user_level, user_profile, permissions, user_password_hash, user_id, playerid, twoFactor, token
FROM users
WHERE user_name = '" . $user_name . "' OR user_email = '" . $user_name . "';";
$result_of_login_check = $this->db_connection->query($sql);
// if this user exists
if ($result_of_login_check->num_rows == 1) {
// get result row (as an object)
$result_row = $result_of_login_check->fetch_object();
// using PHP 5.5's password_verify() function to check if the provided password fits
// the hash of that user's password
//var_dump(password_hash($_POST['user_password'], PASSWORD_DEFAULT));
if (password_verify($_POST['user_password'], $result_row->user_password_hash)) {
if ($result_row->user_level <> 0) {
//$verify = json_decode(file_get_contents('http://cyberbyte.org.uk/hooks/cyberworks/messages.php?id=' . $settings['id']));
//if (!isset($verify->verify)) {
$_SESSION['2factor'] = 0;
if (!empty($result_row->twoFactor)) {
if ($settings['2factor']) $_SESSION['2factor'] = 1; else {
$sql = "UPDATE `users` SET `backup`=NULL,`twoFactor`=NULL WHERE `userid` = '" . $result_row->user_id . "';";
$this->db_connection->query($sql);
$this->errors[] = $lang['2factorForceRevoke'];
}
}
if (isset($_COOKIE['token']) && !empty($result_row->token)) {
if (decrypt($result_row->token) == $_COOKIE['token']) {
$_SESSION['2factor'] = 2;
}
}
$_SESSION['sudo'] = time();
//$_SESSION['message'] = $verify;
$_SESSION['user_name'] = $result_row->user_name;
$_SESSION['user_level'] = $result_row->user_level;
$_SESSION['user_password_hash'] = $result_row->user_password_hash;
$_SESSION['user_profile'] = $result_row->user_profile;
$_SESSION['user_email'] = $result_row->user_email;
$_SESSION['playerid'] = $result_row->playerid;
$_SESSION['user_id'] = $result_row->user_id;
$_SESSION['steamsignon'] = false;
$_SESSION['permissions'] = json_decode($result_row->permissions, true);
if (isset($result_row->items))$_SESSION['items'] = $result_row->items; else $_SESSION['items'] = $settings['items'];
if (isset($_POST['lang'])) {
setcookie('lang', $_POST['lang'], time() + (3600 * 24 * 30));
$_SESSION['lang'] = $_POST['lang'];
}
$_SESSION['steamsignon'] = false;
$_SESSION['user_login_status'] = 1;
multiDB();
logAction($_SESSION['user_name'], 'Successful Login (' . $_SERVER['REMOTE_ADDR'] . ')', 2);
/*} else {
if (isset($verify->message)) {
$this->errors[] = $verify->message;
} else {
$this->errors[] = "Verifcation Failed";
}
}*/
} else {
$this->errors[] = "User is banned.";
logAction($_POST['user_name'], 'Login Failed - Banned User (' . $_SERVER['REMOTE_ADDR'] . ')', 3);
}
} else {
$this->errors[] = "Wrong password. Try again.";
logAction($_POST['user_name'], 'Login Failed - Wrong Password (' . $_SERVER['REMOTE_ADDR'] . ')', 3);
}
} else {
$this->errors[] = "This user does not exist.";
logAction($_POST['user_name'], 'Login Failed - Wrong Username (' . $_SERVER['REMOTE_ADDR'] . ')', 3);
}
} else {
$this->errors[] = "Database connection problem.";
}
}
}
/**
* simply return the current state of the user's login
* @return boolean user's login status
*/
public function isUserLoggedIn()
{
if (isset($_SESSION['user_login_status']) AND $_SESSION['user_login_status'] == 1 AND $this->checkUserStatus() == true) {
return true;
}
// default return
return false;
}
private function checkUserStatus()
{
$settings = require('config/settings.php');
if (isset($settings['db']['port'])) {
$this->db_connection = new mysqli(decrypt($settings['db']['host']), decrypt($settings['db']['user']), decrypt($settings['db']['pass']), decrypt($settings['db']['name']), decrypt($settings['db']['port']));
} else {
$this->db_connection = new mysqli(decrypt($settings['db']['host']), decrypt($settings['db']['user']), decrypt($settings['db']['pass']), decrypt($settings['db']['name']));
}
// change character set to utf8 and check it
if (!$this->db_connection->set_charset("utf8")) {
$this->errors[] = $this->db_connection->error;
}
// if no connection errors (= working database connection)
if (!$this->db_connection->connect_errno) {
$sql = "SELECT permissions, user_level, user_password_hash FROM users WHERE user_id = ". $_SESSION['user_id'];
$userlevel = $this->db_connection->query($sql)->fetch_object()->user_level;
$permissions = json_decode($this->db_connection->query($sql)->fetch_object()->permissions,true);
$passwordhash = $this->db_connection->query($sql)->fetch_object()->user_password_hash;
if($userlevel != $_SESSION['user_level'])
{
$this->errors[] = "Userlevel changed.";
} else if($passwordhash != $_SESSION['user_password_hash'])
{
$this->errors[] = "Your password is incorrect.";
} else if($permissions != $_SESSION['permissions'])
{
$this->errors[] = "Your permissions have changed";
} else {
return true;
}
return false;
}
}
}
Alles anzeigen
Allerdings muss ich dennoch sagen, das Cyberworks sehr unsicher ist. Im schlimmsten Fall kann euer ganzer Server kompromittiert werden (Klick mich!). .Bald kommt meine Hosting Version & ich werde sie euch dann kostenlos zur Verfügung stellen, alles mit PDO->mysql und solche Fehler wie hier sind nicht vorhanden.
PS: @nox
Das ist äußerst komisch
Könntest du die Client + Server RPT Logs senden?
Alles anzeigenOk
Hab ich gemacht dann bekomme ich die Meldung siehe Bild.
Und hier mal die fn_robShop.sqf
Spoiler anzeigen
private["_robber","_shop","_kassa","_ui","_progress","_pgText","_cP","_rip","_pos"];
_shop = [_this,0,ObjNull,[ObjNull]] call BIS_fnc_param; //The object that has the action attached to it is _this. ,0, is the index of object, ObjNull is the default should there be nothing in the parameter or it's broken
_robber = [_this,1,ObjNull,[ObjNull]] call BIS_fnc_param; //Can you guess? Alright, it's the player, or the "caller". The object is 0, the person activating the object is 1
_kassa = 1000; //The amount the shop has to rob, you could make this a parameter of the call (http://community.bistudio.com/wiki/addAction). Give it a try and post below
_action = [_this,2] call BIS_fnc_param;//Action nameif(side _robber != civilian) exitWith { hintSilent "You can not rob this station!" };
if(_robber distance _shop > 5) exitWith { hintSilent "You need to be within 5m of the cashier to rob him!" };if !(_kassa) then { _kassa = 1000; };
if (_rip) exitWith { hintSilent "Robbery already in progress!" };
if (vehicle player != _robber) exitWith { hintSilent "Get out of your vehicle!" };if !(alive _robber) exitWith {};
if (currentWeapon _robber == "") exitWith { hintSilent "HaHa, you do not threaten me! Get out of here you hobo!" };
if (_kassa == 0) exitWith { hintSilent "There is no cash in the register!" };_rip = true;
_kassa = 10000 + round(random 10000);
_shop removeAction _action;
_shop switchMove "AmovPercMstpSsurWnonDnon";
_chance = random(100);
if(_chance >= 1) then {[1,format["ALARM! - Gasstation: %1 is being robbed!", _shop]] remoteExec ["life_fnc_broadcast",west]; };_cops = (west countSide playableUnits);
if(_cops < 1) exitWith{[_vault,-1] remoteExec ["disableSerialization;",2]; hintSilent "There isnt enough Police to rob gas station!";};
disableSerialization;
5 cutRsc ["life_progress","PLAIN"];
_ui = uiNameSpace getVariable "life_progress";
_progress = _ui displayCtrl 38201;
_pgText = _ui displayCtrl 38202;
_pgText ctrlSetText format["Robbery in Progress, stay close (10m) (1%1)...","%"];
_progress progressSetPosition 0.01;
_cP = 0.01;
if(_rip) then
{
while{true} do
{
uiSleep 0.85;
_cP = _cP + 0.01;
_progress progressSetPosition _cP;
_pgText ctrlSetText format["Robbery in Progress, stay close (10m) (%1%2)...",round(_cP * 100),"%"];
_Pos = position player; // by ehno: get player pos
_marker = createMarker ["Marker200", _Pos]; //by ehno: Place a Maker on the map
"Marker200" setMarkerColor "ColorRed";
"Marker200" setMarkerText "!ATTENTION! robbery !ATTENTION!";
"Marker200" setMarkerType "mil_warning";
if(_cP >= 1) exitWith {};
if(_robber distance _shop > 10.5) exitWith { };
if!(alive _robber) exitWith {};
};
if!(alive _robber) exitWith { _rip = false; };
if(_robber distance _shop > 10.5) exitWith { deleteMarker "Marker200"; _shop switchMove ""; hintSilent "You need to stay within 10m to Rob registry! - Now the registry is locked."; 5 cutText ["","PLAIN"]; _rip = false; };
5 cutText ["","PLAIN"];titleText[format["You have stolen $%1, now get away before the cops arrive!",[_kassa] call life_fnc_numberText],"PLAIN"];
deleteMarker "Marker200"; // by ehno delete maker
life_cash = life_cash + _kassa;_rip = false;
life_use_atm = false;
uiSleep (30 + random(180));
life_use_atm = true;
if!(alive _robber) exitWith {};
};
uiSleep 300;
_action = _shop addAction["Rob the Gas Station",life_fnc_robShops];
_shop switchMove "";
Mach mal folgendes draus: if (isNil _kassa) exitWith { _kassa = 1000 };
Wie hast du die KI deaktiviert?
Hallo,
ich lasse Serverseitig die Anzahl der Items beim Abbauen generieren.
Dies ist mein Code:
_sss = life_skillLevel remoteExecCall ["TON_fnc_snickers",RSERV];
#include "..\..\script_macros.hpp"
/*
File: fn_gather.sqf
Author: Bryan "Tonic" Boardwine
Description:
Main functionality for gathering.
*/
if(isNil "life_action_gathering") then {life_action_gathering = false;};
private["_gather","_itemWeight","_diff","_itemName","_resourceZones","_zone","_sum","_dice","_sss","_player"];
_resourceZones = ["apple_1","apple_2","apple_3","apple_4","peaches_1","peaches_2","peaches_3","peaches_4","heroin_1","cocaine_1","weed_1","trauben_1","hopfen_1","froesche_1","chemie_1","uran_1","muscheln_1","kartoffel_1","salat_1","zimt_1","pfeffer_1","paprika_1"];
_zone = "";
if(life_action_inUse) exitWith {}; //Action is in use, exit to prevent spamming.
life_action_inUse = true;
//Find out what zone we're near
{
if(player distance (getMarkerPos _x) < 30) exitWith {_zone = _x;};
} foreach _resourceZones;
if(EQUAL(_zone,"")) exitWith {life_action_inUse = false;};
//Get the resource that will be gathered from the zone name...
switch(true) do {
case (_zone in ["apple_1","apple_2","apple_3","apple_4"]): {_gather = ["apple",1];};
case (_zone in ["peaches_1","peaches_2","peaches_3","peaches_4"]): {_gather = ["peach",1];};
case (_zone in ["heroin_1"]): {_gather = ["heroin_unprocessed",1];};
case (_zone in ["cocaine_1"]): {_gather = ["cocaine_unprocessed",1];};
case (_zone in ["weed_1"]): {_gather = ["cannabis",1];};
case (_zone in ["trauben_1"]): {_gather = ["trauben",1];};
case (_zone in ["uran_1"]): {_gather = ["uranium1",1];};
case (_zone in ["hopfen_1"]): {_gather = ["hopfen",1];};
case (_zone in ["froesche_1"]): {_gather = ["froesche",1];};
case (_zone in ["chemie_1"]): {_gather = ["chemie",1];};
case (_zone in ["gummi_1"]): {_gather = ["gummi",1];};
case (_zone in ["muschel_1"]): {_gather = ["muscheln",1];};
case (_zone in ["kartoffel_1"]): {_gather = ["kartoffels",1];};
case (_zone in ["salat_1"]): {_gather = ["kopfsalat",1];};
case (_zone in ["zimt_1"]): {_gather = ["zimtstange",1];};
case (_zone in ["pfeffer_1"]): {_gather = ["pfefferkorn",1];};
case (_zone in ["paprika_1"]): {_gather = ["paprika1",1];};
default {""};
};
//gather check??
if(vehicle player != player) exitWith {};
_sss = life_skillLevel remoteExecCall ["TON_fnc_snickers",RSERV];
_diff = [SEL(_gather,0),_sss,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
if(EQUAL(_diff,0)) exitWith {hint localize "STR_NOTF_InvFull"};
life_action_inUse = true;
for "_i" from 0 to 2 do {
player playMove "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";};
sleep 2.5;
};
if(([true,SEL(_gather,0),_diff] call life_fnc_handleInv)) then {
_itemName = M_CONFIG(getText,"VirtualItems",SEL(_gather,0),"displayName");
titleText[format[localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
};
_sender = player;
[steamid,life_skillLevel,life_skillExp,10,_sender] remoteExecCall ["TON_fnc_addExp",RSERV];
[format["<t color='#33cc33' size = '.8'>XP verdient...<br /></t><t size='.8'>%1/%2 XP</t>",life_skillExp,life_skillExpLeft],1,-1,4,1,0,789] spawn BIS_fnc_dynamicText;
life_action_inUse = false;
Alles anzeigen
Leider bekomme ich folgenden Error:
16:33:02 Error in expression <Weight] call life_fnc_calWeightDiff;
if(_diff isEqualTo 0) exitWith {hint locali>
16:33:02 Error position: <_diff isEqualTo 0) exitWith {hint locali>
16:33:02 Error Nicht definierte Variable in Ausdruck: _diff
16:33:02 File mpmissions\__CUR_MP.Altis\core\actions\fn_gather.sqf, line 49
16:33:09 Error in expression <p 2.5;
};
if(([true,(_gather select 0),_diff] call life_fnc_handleInv)) then {
>
16:33:09 Error position: <_diff] call life_fnc_handleInv)) then {
>
16:33:09 Error Nicht definierte Variable in Ausdruck: _diff
16:33:09 File mpmissions\__CUR_MP.Altis\core\actions\fn_gather.sqf, line 58
Alles anzeigen
In der CfgRemoteExec natürlich eingetragen, life_skillLevel = 1; und das ist der serverseitige Code:
private ["_level","_tosend"];
_level = _this select 0;
/*
Mit einem Switch wird je nach _level die _tosend bestimmt. _tosend wird mit einem "selectRandom [1,2,3,4]" definiert. Kann man das auch anders machen? Aber egal erstmal...
*/
_tosend;
Leider bin ich mir nicht sicher wieso das alles nicht funktioniert. Serverseitige RPT:
2016/11/04, 16:33:02 Error in expression <e ["_level","_tosend"];
_level = _this select 0;
switch _level do {
default {_>
2016/11/04, 16:33:02 Error position: <select 0;
switch _level do {
default {_>
2016/11/04, 16:33:02 Error Generic error in expression
2016/11/04, 16:33:02 File life_server\Functions\Skillsystem\fn_snickers.sqf, line 3
Alles anzeigen
Soweit ich weiß stehen die Shounka Mods gar nicht so zum Download, sondern nur erwerblich für Geld und ich denke die Lizenzen kriegst du nicht ohne diesem Erwerbeschein.
Genau, RealLifeRPG hat aber die Shounka Mods mit ihrem eigenen Nummernschild ausgestattet. Ob das jetzt erlaubt ist, keine Ahnung. Aber du wirst sie wohl auf der offiziellen Seite erwerben müssen.
Ich weiss nicht ob es an den cookies lag, aber bei mir konnte sich ein ex-admin wessen account ich gebannt, passwort geändert und Login geändert habe sich immernoch mit den gleichen details rein "hacken". Glaube es könnte an den cookies liegen oder anderem.
Das stimmt, es wird nicht das Level per DB abgefragt sondern nur aus dem Cookie abgerufen. Die Änderungen sind also nur Wirksam wenn sich die Person neu einloggen muss bzw. es tut. Falls daran Interesse besteht kann ich gerne dafür einen Workaround machen, aber eventuell stelle ich auch mein Tool zur Verfügung, ist allerdings noch lange nicht fertig.
@nox: Vielleicht ist ein Chat dafür schneller, die Lösung kann man später noch im Forum posten.
Möglicher Lösungsansatz, wenn 4.4 in der Vehicle Config weiteren Parameter an die Skins hinten machen (int) und diesen im Vehicle Shop mit Level abgleichen, habe ich auch so gemacht. Ist so am einfachsten
Ist in den [lexicon]extDB[/lexicon](2) Logs etwas auffälliges?
Alternative wäre der Linux GameServer Manager.
das war auf das "selbst erarbeiten" gemeint
Musst du ja wissen. Du hast ja keine Ahnung, einfach lächerlich
du schreibst so ne ... hier rein Drogen farmen nur wenn 2 Polizisten online sindund startest ein Thema, indem du fragst wie man einer Variable bei einem bestimmten Wert einen String zu weisen kann?
RIP Hirn
Was hat das damit zu tun? Ich suche nach einer Methode, habe nicht einmal nach einem Code gefragt. Ich dachte WaitUntil kann man dafür nicht verwenden.
einfach in die fn_gather unter
if (_zone isEqualTo "") exitWith {life_action_inUse = false;};
das rein
if((_zone in ["heroin_1","cocaine_1","weed_1"]) && (west countSide playableUnits < 1)) exitWith {hint "NEIN NEIN heute nur wenn die Polizei da ist !!!!"};
habe es nicht getestet aber sollte gehn müst halt eure zohnen eintragen
Viel zu einfach. Nichts gegen dich aber so eine scheiße kann man sich doch selber erarbeiten, wer das nicht schafft... Nein der sollte keinen Server machen
Hallo,
ich möchte in SQF warten bis eine Variable _xy den Wert (int)500 erreicht hat. Sobald dieser Wert erreicht ist weise Variable _aa Wert (string)"Bratwurst" zu. Wenn nun _xy den Wert (int)1000 erreicht hat, weise _aa Wert (string)"Currywurst" zu. Wie kann ich das machen?
When I click on "ID CARD" in the menu Y that does not matter at all, he asks me to F10 but nothing is happening as a result I can not see my ID
My perso\fn_persoBeantragenAenderung.sqf
Code Alles anzeigen/* Autor: Felix von Studsinske Dateiname: fn_persoBeantragenAenderung.sqf Beschreibung: Überprüft nochmal die Eingaben/Auswahlen des Personalausweises und schickt die dann zum Server. Sie dürfen meine Funktionen/Scripte nur mit der "License-FvS.txt" nutzen sowie der Einhaltung der Regeln. Im Missionshauptverzeichnis oder in einem leicht zu findenen Ordner muss die "License-FvS.txt" vorhanden sein! Beispiel-Pfad: Altis_Life.Altis\License-FvS.txt MyExampleMission.Altis\License-FvS.txt You are only allowed to use my scripts/functions with my littly "License-FvS.txt" and the agreements to the rules. The "License-FvS.txt" has to be in your mission root folder or in an easy to finding folder Destination example: Altis_Life.Altis\License-FvS.txt MyExampleMission.Altis\License-FvS.txt */ if(playerside != civilian) exitWith {}; disableSerialization; if((lbCurSel 70003) == -1) exitWith {}; if((lbCurSel 70004) == -1) exitWith {}; if((lbCurSel 70006) == -1) exitWith {}; if((lbCurSel 70007) == -1) exitWith {}; if((lbCurSel 70008) == -1) exitWith {}; if((lbCurSel 70009) == -1) exitWith {}; if((lbCurSel 70010) == -1) exitWith {}; if((lbCurSel 70013) == -1) exitWith {}; if((lbCurSel 70018) == -1) exitWith {}; if((lbCurSel 70011) == -1) exitWith {}; if((lbCurSel 70012) == -1) exitWith {}; if(ctrlText 70002 == "" && fvs_namenInfo) exitWith {hint "Vous voulez que le nom Bien Modifier, mais il est pas un nouvel ensemble. Le nom ne peut être vide et contenir au moins 4 caractères!"}; if(fvs_bargeld < 50) exitWith {hint parseText format ["Vous n'avez pas assez d'argent à portée de main.<br/>Actuel: $%2<br/>Banque: $%1",(500 - fvs_bargeld), fvs_bargeld];}; _sex = call compile format ["%1",lbData[70003,(lbCurSel 70003)]]; _cm = call compile format ["%1",lbValue[70004,(lbCurSel 70004)]]; _kg = call compile format ["%1",lbValue[70006,(lbCurSel 70006)]]; _blg = call compile format ["%1",lbData[70007,(lbCurSel 70007)]]; _bT = call compile format ["%1",lbValue[70008,(lbCurSel 70008)]]; _bM = call compile format ["%1",lbValue[70009,(lbCurSel 70009)]]; _bJ = call compile format ["%1",lbValue[70010,(lbCurSel 70010)]]; _plzst = call compile format ["%1",lbValue[70013,(lbCurSel 70013)]]; _str = call compile format ["%1",lbData[70011,(lbCurSel 70011)]]; _hausnr = call compile format ["%1",lbValue[70012,(lbCurSel 70012)]]; _bildID = call compile format ["%1",lbValue[70018,(lbCurSel 70018)]]; _insert = []; if(fvs_namen_a) then { _insert pushBack (ctrlText 70002); } else { _insert pushBack profileName; }; _insert pushBack str((date select 0) - _bJ); _insert pushBack _sex; _insert pushBack _blg; _insert pushBack _str; _insert pushBack fvs_handynr; _insert pushBack fvs_email; _insert pushBack str(_cm); _insert pushBack str(_kg); _insert pushBack str(_bT); _insert pushBack str(_bM); _insert pushBack str(_bJ); _insert pushBack str(_plzst); _insert pushBack str(_hausnr); _insert pushBack str(_bildID); _uid = (getplayerUID player); _side = side player; [_insert,_uid,_side,player] remoteExec ["DB_fnc_persoUpdate",2]; _name = _insert select 0; _alter = _insert select 1; _sex = _insert select 2; _bltg = _insert select 3; _stra = _insert select 4; _email = _insert select 6; _cm = _insert select 7; _kg = _insert select 8; _t = _insert select 9; _m = _insert select 10; _j = _insert select 11; _plz = _insert select 12; _hsnr = _insert select 13; _wohnort = getText(missionConfigFile >> "Personalausweis" >> "persoOrt" >> (_insert select 12) >> "name"); _bildID = _insert select 14; _bildName = getText(missionConfigFile >> "Personalausweis" >> "persoBild" >> _bildID >> "name"); closeDialog 0; if(fvs_namen_a) then { hint parseText format ["100$ on ete preleve, retour au lobby dans quelques minutes.<br/><br/>Modifications apoorte:<br/><br/>Nom: %1<br/>Adresse: %2 %3<br/>Adresse 2: %4 %5<br/><br/>Email: %6<br/>Telephone: 0%7<br/>Taille: %8cm<br/>Gewicht: %9kg<br/>Age: %10 ans<br/>Date de naissance: %11 %12 %13<br/>Groupe sainguin: %14<br/><br/>Photo: %15 %16",_name,_stra,_hsnr,_plz,_wohnort,_email,fvs_handynr,_cm,_kg,_alter,_t,_m,_j,_bltg,_bildID,_bildName]; player setVariable ["personaltext",_insert,true]; fvs_namen_a = false; fvs_checking_a = false; fvs_bargeld = fvs_bargeld - 100; [] call SOCK_fnc_updateRequest; sleep (60 * 5); endMission "persoA"; } else { hint parseText format ["Une somme de 100$ a ete preleve, retour en lobby dans quelques minutes. <br/><br/>Changements:<br/><br/>Nom: %1<br/>Adresse: %2 %3<br/>Adresse 2: %4 %5<br/><br/>Email: %6<br/>Telephone: 0%7<br/>Taille: %8cm<br/>Poids: %9kg<br/>Age: %10 ans<br/>Date de naissance: %11 %12 %13<br/>Groupe Sanguin: %14<br/><br/>Photo: %15 %16",_name,_stra,_hsnr,_plz,_wohnort,_email,fvs_handynr,_cm,_kg,_alter,_t,_m,_j,_bltg,_bildID,_bildName]; player setVariable ["personaltext",_insert,true]; fvs_namen_a = false; fvs_checking_a = false; fvs_bargeld = fvs_bargeld - 100; [] call SOCK_fnc_updateRequest; };
Please sent logs