Achievement System
Hey Leute ich bins mal wieder Deathman,
Ich habe mich mal die Tage hingesetzt und für euch ein kleines Achievement System gemacht. Ich bedanke mich nochmal bei moeck und Joe Barbaro für Skript unterstützung.
Wir fangen dann mal an.
Vorab macht bitte ein Backup von euren Life_Server und euern Missions Ordner.
Wir Fangen in der Life_Server an.
Schritt 1. Geht in die fn_insertRequest.sqf und fügt hinter med_gear folgendes ein civ_Achievement und am Ende dieses Codes das hier noch einfügen '""[]""' das ganze sollte dann so aussehen.
_query = format ["INSERT INTO players (pid, name, cash, bankacc, aliases, cop_licenses, med_licenses, civ_licenses, civ_gear, cop_gear, med_gear, civ_Achievement) VALUES('%1', '%2', '%3', '%4', '%5','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""','""[]""')"
Schritt 2. Geht in die fn_queryRequest.sqf und fügt hinter civ_position folgendes ein civ_Achievement. Nun sucht ihr in der datei den code _queryResult set[6,_old];
und fügt darunter folgendes ein.
Spoiler anzeigen
//Achievement
_new = [(_queryResult select 12)] call DB_fnc_mresToArray;
if (_new isEqualType "") then {_new = call compile format ["%1", _new];};
_queryResult set[12,_new];
_old = _queryResult select 12;
for "_i" from 0 to (count _old)-1 do {
_data = _old select _i;
_old set[_i,[_data select 0, ([_data select 1,1] call DB_fnc_bool)]];
};
_queryResult set[12,_old];
Alles anzeigen
Schritt 3. Geht in die fn_updatePartial.sqf und fügt unter dem case 7 folgendes ein.
Spoiler anzeigen
case 8: {
_value = [_this,2,[],[[]]] call BIS_fnc_param;
for "_i" from 0 to count(_value)-1 do {
_bool = [(_value select _i) select 1] call DB_fnc_bool;
_value set[_i,[(_value select _i) select 0,_bool]];
};
_value = [_value] call DB_fnc_mresArray;
switch (_side) do {
case civilian: {_query = format ["UPDATE players SET civ_Achievement='%1' WHERE pid='%2'",_value,_uid];};
};
};
Alles anzeigen
Schritt 4. Geht in die fn_updateRequest.sqf und fügt unter _position folgendes ein
_Achievement = [_this,11,[],[[]]] call BIS_fnc_param;
Dann sucht ihr den Code _licenses = [_licenses] call DB_fnc_mresArray; und fügt folgendes darunter ein.
Spoiler anzeigen
Nun sucht ihr den code civ_alive='%8' und fügt dahinter folgendes ein civ_Achievement='%12' ganz am ende des codes findet ihr die Variable _uid und fügt dahinter dann _Achievement ein.
Jetzt geht ihr nochmal ganz hoch in die private[“”] und fügt am ende hinter "_thread" folgendes ein "_Achievement".
Schritt 5. Geht in die script_macros.hpp und fügt dort folgendes ein
Spoiler anzeigen
Schritt 6. Fügt folgendes bei euer Datenbank hinzu
ALTER TABLE `altislife`.`players` ADD COLUMN `civ_Achievement` TEXT NOT NULL;
Nun sind wir in der Life_Server Fertig und wir gehen in eure Missionsdatei über.
Schritt 1. Geht in die fn_requestReceived.sqf und sucht dort im case Civilian den code [] spawn life_fnc_initHouses; und fügt darunter folgendes ein.
Spoiler anzeigen
Schritt 2. Geht in die fn_updatePartial.sqf sucht den case 7 und fügt darunter folgendes ein
Spoiler anzeigen
Schritt 3. Geht in die fn_updateRequest.sqf und sucht im case Civilian nach dem code _packet pushBack _position; darunter wird folgendes eingefügt
Spoiler anzeigen
Schritt 4. Geht in die configuration.sqf und sucht /* Setup life_hideoutBuildings */ und fügt darüber folgendes ein.
Spoiler anzeigen
Schritt 5. Geht in die script_macros.hpp und fügt dort folgendes ein.
Spoiler anzeigen
Schritt 6. Kopiert euch den ordner Achievement in den Core Ordner Download link hier drunter.core.rar
Schritt 7. Geht in die Functions.hpp und fügt folgendes hinzu.
Spoiler anzeigen
Schritt 8. Kopier die Datei Achievement.hpp in den Dialog Ordner.dialog.rar
Schritt 9. Geht in die MasterHandler.hpp und fügt dort folgendes am Ende ein
#include "Achievement.hpp"
Schritt 10. Kopiert die Datei Config_Achievement.hpp in den Config Ordner.config.rar
Schritt 11. Geht in die Config_Master.hpp und fügt am ende folgendes ein.
#include "Config_Achievement.hpp"
Schritt 12. Um das Achievement Menü zu öffnen Müsst ihr einen neuen Button Erstellen und dort um das Menü zu öffnen folgenden code ein onbuttonclick = "closeDialog 0; createdialog ""Achievement_Menu"";";
Da ich schon ein paar Achievements für euch gemacht habe könnt ihr diese nehmen müsst es aber nicht ich schreibe sie trotzdem mit unten rein aber als Zusatz Schritte. Ganz am Ende Gebe ich euch den Code womit ihr eure eigenen Achievements einfügen könnt so wie in Skripts wie auch in der Config.
Zusatz Schritte für das Achievements System
Zusatz Schritt 1. Geht in die fn_vehicleShopBuy.sqf und sucht folgenden code if !(_className in LIFE_SETTINGS(getArray,"vehicleShop_rentalOnly")) then { fügt darunter folgendes ein
if (!Achievement_FirstCar) then {Achievement_FirstCar = true; ["FirstCar"] call life_fnc_getAchievement;};
Zusatz Schritt 2. Geht in die fn_processAction.sqf und sucht folgenden code if (_minimumConversions isEqualTo (_totalConversions call BIS_fnc_lowestNum)) then {hint localize "STR_NOTF_ItemProcess";} else {hint localize "STR_Process_Partial";}; life_is_processing = false; life_action_inUse = false;
und fügt darunter folgendes ein.
if (!Achievement_Proccecing) then {Achievement_Proccecing = true; ["Proccecing"] call life_fnc_getAchievement;};
Zusatz Schritt 3. Geht in die fn_gather.sqf und suche folgenden code titleText[format [localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
füge dann darunter das ein.
if (!Achievement_FirstStepgathering) then {Achievement_FirstStepgathering = true; ["FirstStepgathering"] call life_fnc_getAchievement;};
Zusatz Schritt 4. Geht in die fn_mine.sqf und suche folgenden code titleText[format [localize "STR_NOTF_Mine_Success", (localize _itemName), _diff], "PLAIN"];
füge dann darunter das ein.
if (!Achievement_FirstStepofMining) then {Achievement_FirstStepofMining = true; ["FirstStepofMining"] call life_fnc_getAchievement;};
Zusatz Schritt 5. Geht in die fn_repairTruck.sqf und suche folgenden code titleText[localize "STR_NOTF_RepairedVehicle","PLAIN"];
und fügt darunter das ein.
if (!Achievement_ReapairCar) then {Achievement_ReapairCar = true; ["ReapairCar"] call life_fnc_getAchievement;};
Zusatz Schritt 6. Geht in die fn_buyHouse.sqf und sucht folgenden code [1] call SOCK_fnc_updatePartial;
und fügt darunter folgendes ein.
if (!Achievement_TehfirstHouse) then {Achievement_TehfirstHouse = true; ["TehfirstHouse"] call life_fnc_getAchievement;};
Zusatz Schritt 7. Geht in die fn_captureHideout.sqf und sucht folgenden code titleText[localize "STR_GNOTF_Captured","PLAIN"];
und fügt darunter das ein.
if (!Achievement_Ganghideoutcapture) then {Achievement_Ganghideoutcapture = true; ["Ganghideoutcapture"] call life_fnc_getAchievement;};
Zusatz Schritt 8. Geht in die fn_dpFinish.sqf sucht folgenden code player removeSimpleTask life_cur_task;
und fügt das darunter ein.
if (!Achievement_Packetddeliverd) then {Achievement_Packetddeliverd = true; ["Packetddeliverd"] call life_fnc_getAchievement;};
Nun seid ihr Fertig mit der Installation.
Jetzt zu den Code zum Achievement kriegen.
if (!Achievement_HiermussderVariablenamerein) then {Achievement_HiermussderVariablenamerein = true; ["HiermussderVariablenamerein"] call life_fnc_getAchievement;};
Simpel oder jetzt noch ein Bsp. zu Config.
Spoiler anzeigen
Auch Simpel oder ja.
Jetzt Wünsche ich euch noch sehr viel spaß mit dem Skript.
Noch ein paar Worte von mir wenn ihr sagt man hätte es so machen können und so dann macht das so wir ihr wollt aber ich habe es so gemacht und damit Schluss. Wenn jemand es besser kann dann soll er das machen. Wenn natürlich Gravierende Fehler drinne sind dann besser ich die natürlich aus.
Bei Fehlern bitte Client_Log, Server_Log und ExtDB_log mir bitte rein senden Danke.
Gruß Deathman
Achja ich bins nochmal natürlich könnt ihr das Skript veränderen so wie ihr wollt. Eine Bedingung hätte ich da aber das ihr mich als Author bei den Skripts die ich gemacht habe mit drinne last THX achja hier noch die icons
Und noch ein paar Bilder
Sorry wegen dem 2 Bild