Hallo,
nach mehrstündiger Suche hab ich immer noch kein Farmboost Script gefunden, dann hab ich mal gedacht: ich programmiere einfach eins und stelle es Native Network zur verfügung.
Erklärung Farmboost-Script:
Man gibt einen Code ein (der in einer MYSQL Tabelle steht), nach der Code Eingabe bekommen alle Spieler einen Boost beim Farmen (mehr Items, schnellere Verarbeitung, mehr Geld)
Es gibt auch unterschiedliche Farmboosttypen, z.B. Typ A: 200% schneller Farmen, 200% schneller Verarbeiten, 50% mehr Geld oder z.B. Typ C: 50% schneller Verarbeiten & Farmen, ich glaube ihr versteht es.
Dann zum Tutorial:
PS Unbedingt Backups machen!!!
PPS Sicher sein, dass der Einkaufsspreis aller ZItems mindestens 51% Teurer ist als der Verkaufspreis
Schritt 1
Im Missionshauptverzeichnis die "CfgRemoteExec.hpp" suchen und öffnen
Unter HeadlessClient only functions diesen Schnipsel drunter schreiben:
Unter Client only Functions das:
Und zu guter letzt unter Server only Functions:
Datei Speichern & Schließen
Schritt 2
In die Datei Functions.hpp gehen und folgende Zeilen unter class Dialog_Controls { hinzufügen:
Schritt 3
2 Dateien im Ordner mission/dialog/function erstellen
#include "..\..\script_macros.hpp"
/*
File: fn_farmboost.sqf
Author: Alex Smith
Description:
-
*/
private ["_code"];
params ["_code"];
if (count _code isEqualTo 0) exitWith {
hint "Der Code ist ungültig!";
};
//arma is scheiße
private _darray = _code select 0;
private _selarray = _darray select 3;
if (_selarray == "A") then {
hint "Der Farmboost (200% Farmen, 200% Verarbeiten) wurde erfolgreich eingelöst! Du kannst den Code nichtmehr benutzen!";
life_farmboost_A = true;
publicVariable "life_farmboost_A";
};
if (_selarray == "B") then {
hint "Der Farmboost (100% Farmen, 100% Verarbeiten) wurde erfolgreich eingelöst! Du kannst den Code nichtmehr benutzen!";
life_farmboost_B = true;
publicVariable "life_farmboost_B";
};
if (_selarray == "C") then {
hint "Der Farmboost (50% Farmen, 50% Verarbeiten) wurde erfolgreich eingelöst! Du kannst den Code nichtmehr benutzen!";
life_farmboost_C = true;
publicVariable "life_farmboost_C";
};
life_farmboost = true;
publicVariable "life_farmboost";
if(!life_farmboost) then {
hint "Ein schwerwiegender Fehler ist aufgetreten! Bitte kontaktiere schnellstmöglich einen Admin!";
};
Alles anzeigen
#include "..\..\script_macros.hpp"
/*
File: fn_farmboost.sqf
Author: Alex Smith
Description:
-
*/
private["_value"];
//13377
_dialog = findDisplay 76548;
_value = ctrlText 13377;
if !(isnil "life_farmboost") exitWith {
hint "Bitte warte bis zum nächsten Restart, dann kannst du deinen Farmboost einlösen!";
};
hint "Dein Code wird geprüft...";
if (life_HC_isActive) then {
[_value, player] remoteExecCall ["HC_fnc_getFarmcodes",HC_Life];
} else {
[_value, player] remoteExecCall ["TON_fnc_getFarmcodes",RSERV];
};
Alles anzeigen
Schritt 4
Eine Datei im Ordner /mission/dialog erstellen
class farmcodeeingabe
{
idd = 76548;
movingEnable = true;
class ControlsBackground
{
class Life_RscTitleBackground : Life_RscText
{
idc = -1;
x = 0.3;
y = 0.2;
w = 0.47;
h = (1/25);
colorBackground[] = {0.102,0,0.4078,1};
};
class MainBackground : Life_RscText
{
idc = -1;
x = safeZoneX + safeZoneW * 0.41770834;
y = safeZoneY + safeZoneH * 0.35925926;
w = safeZoneW * 0.19375;
h = safeZoneH * 0.09166667;
colorBackground[] = {0,0,0,0.7};
};
};
class Controls
{
class inputBox : Life_RscEdit
{
idc = 13377;
x = safeZoneX + safeZoneW * 0.44375;
y = safeZoneY + safeZoneH * 0.375;
w = safeZoneW * 0.1375;
h = safeZoneH * 0.025;
text = "";
colorBackground[] = {1,1,1,1};
colorDisabled[] = {0.2,0.2,0.2,1};
colorSelection[] = {1,0,0,1};
colorText[] = {0,0,0,1};
};
class payTicket : Life_RscButtonMenu
{
idc = -1;
x = safeZoneX + safeZoneW * 0.4671875;
y = safeZoneY + safeZoneH * 0.40925926;
w = safeZoneW * 0.08958334;
h = safeZoneH * 0.02222223;
text = "Einlösen";
colorBackground[] = {0.6,0.2,0,1};
onButtonClick = "[] call life_fnc_farmboostquery;";
class HitZone
{
top = 0.0;
right = 0.0;
bottom = 0.0;
left = 0.0;
};
class ShortcutPos
{
top = 0.005;
left = (6.25*(((safezoneW/safezoneH)min1.2)/40))-0.0225-0.005;
w = 0.0225;
h = 0.03;
};
class TextPos
{
top = (((((safezoneW/safezoneH)min1.2)/1.2)/25)-(((((safezoneW/safezoneH)min1.2)/1.2)/25)*1))/2;
right = 0.005;
bottom = 0.0;
left = 0.25*(((safezoneW/safezoneH)min1.2)/40);
};
};
};
};
Alles anzeigen
Dann in der /mission/dialog/MasterHandler.hpp eintragen:
und in der /mission/dialog/player_inv.hpp unter class Controls { das hinzufügen:
class ButtonFarmcode: Life_RscButtonMenu {
idc = 2011;
text = "Farmcode";
onButtonClick = "{createDialog 'farmcodeeingabe';}";
x = 0.1 + (6.25 / 19.8) + (1 / 250 / (safezoneW / safezoneH));
y = 0.805;
w = (6.25 / 40);
h = (1 / 25);
};
Schritt 5
Jetzt noch die fn_gather.sqf, fn_virt_sell.sqf und die fn_processAction.sqf editieren
Unter
if (_exit) exitWith {life_action_inUse = false;};
_amount = round(random(_maxGather)) + 1;
Das einfügen:
if !(isnil "life_farmboost") then {
if(life_farmboost_A) then {
_amount = (_amount * 3);
};
if(life_farmboost_B) then {
_amount = (_amount * 2);
};
if(life_farmboost_C) then {
_amount = round((_amount * 1.5));
};
};
Alles anzeigen
unter
_price = (_price * _amount);
das einfügen:
if !(isnil "life_farmboost") then {
if(life_farmboost_A) then {
_price = round((_price * 1.5));
};
if(life_farmboost_B) then {
_price = round((_price * 1.25));
};
};
Unter
_cP = 0.01;
life_is_processing = true;
if (_hasLicense) then {
for "_i" from 0 to 1 step 0 do {
Das Einfügen:
_time = 0.28;
if !(isnil "life_farmboost") then {
if(life_farmboost_A) then {
_time = 0.09;
};
if(life_farmboost_B) then {
_time = 0.14;
};
if(life_farmboost_C) then {
_time = 0.19;
};
};
uiSleep _time;
_cP = _cP + 0.10;
Alles anzeigen
und das LÖSCHEN:
uiSleep 0.28;
_cP = _cP + 0.01;
Schritt 6 - @life_server editieren!!!
Alles weitere muss man im life_server editieren
Gehe in die config.cpp und füge unter TON_System { hinzu:
Schritt 7
Erstelle eine Datei im Ordner /life_server/Functions/Systems
#include "\life_server\script_macros.hpp"
/*
File: fn_getFarmcodes.sqf
Author: Alex Smith
Description:
Hör auf zu lesen und kopier schneller!
*/
private ["_code","_tickTime","_queryResult", "_queryResult2"];
params ["_code", "_unit"];
_query = format ["SELECT id, code, active, type FROM farmkeys WHERE code='%1' AND active='1'",_code];
_tickTime = diag_tickTime;
_queryResult = [_query,2,true] call DB_fnc_asyncCall;
diag_log "------------- FARMCODE!! -------------";
diag_log format ["QUERY: %1",_query];
diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
diag_log format ["Result: %1",_queryResult];
diag_log "------------------------------------------------";
//if (_queryResult isEqualType "") exitWith {};
_queryREM = format ["UPDATE farmkeys SET active='0' WHERE code='%1'",_code];
_queryREMRES = [_queryREM,1] call DB_fnc_asyncCall;
diag_log "------------- FARMCODEREMOVE!! -------------";
diag_log format ["QUERY: %1",_queryREM];
diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
diag_log format ["Result: %1",_queryREMRES];
diag_log "------------------------------------------------";
[_queryResult] remoteExec ["life_fnc_farmboost",_unit];
Alles anzeigen
Dann als PBO packen!
Schritt 8 - MYSQL
Eine Tabelle in MYSQL namens "farmkeys" in der altislife Datenbank erstellen (Ohne Anführungszeichen!)
Dann die folgenden Spalten erstellen:
id - int(255) - Auto Increment & Primärschlüssel
code - varchar(255)
active - int(255)
type - varchar(255)
Hier ein Bild dazu von phpMyAdmin:
Server starten und Spaß haben!
Falls es bei euch funktioniert und es euch gefällt würde mir ein Like gefallen :3
So sollte es aussehen, wenn man einen Code erstellt hat:
GANZ LINKS: ID
LINKS IN DER MITTE: Code
RECHTS IN DER MITTE: Ob der Code aktiv ist, also ob er funktioniert oder nicht 1= ja, 0= nope
GANZ RECHTS: Der Farmboosttyp