
[Tutorial] SOS Panikitem für 4.4r3+ | by Brizi Jaeger
-
- Altis Life
-
Brizi Jaeger -
9. April 2017 um 13:10
-
-
Hab es auch getestet aber mit der ersten Version
Hat geklappt - musste mir nur noch eine .paa erstellen
Fauler Hund Brizi Jaeger
-
Ja man wollte nur dem Neuling nen gefallen tun xD da lese ich mir das doch nicht durch dachte das wäre alles fehlerfrei xD
-
Hab mal eine Frage wo kommt die fn_copbackup.sqf rein?
Danke im vorraus!
-
Kannst du in den cop Ordner packen, musst dann aber in der Functions.hpp umtragen in die class Cop
-
Danke! Und noch eine Frage mir wird zwar "Officer in Not" auf der Map angezeigt aber es kommt keine Nachricht woran könnte das liegen?
-
Dann einmal bitte die Logs (Client,RPT)
-
Das kommt in den Logs wenn ich das Item benutze | Scripting function 'ton_fnc_handlemessages' is not allowed to be remotely executed
-
Musst du das in der remoteExec einfügen
-
Und wie mach ich das?
-
Ah habs gefunden und wo muss ich das eintragen unter Client,Server oder Everyone?
-
Schau mal ob das hier schon irgendwo steht.
F(TON_fnc_handleMessages,SERVER)
Wenn nicht setz es mal bei SERVER ein.
-
Hab ich gemacht geht immer noch nicht Logs sagen auch nichts...
-
Bei mir wird keine Nachricht angezeigt, wenn ich den SOS Knopf drücke.
Und bei den Zivis wird auch der Marker auf der Map makiert.
Außerdem können auch die Zivis den SOS Knopf drücken.
Hier einmal die fn_copbackup.sqf
Spoiler anzeigen
/*
Autor : Maximum
Umgeschrieben in 4.4r3+ : powerafro
*/
private ["_backupmsg"];
_msgBck = format["SOS! Officer %1 Benötigt dringend Hilfe %2 !", name player, getPos player];
[0,"%1 benötigt dringende Unterstützung!",true,[profileName]] remoteExec ["life_fnc_broadcast",west];
[ObjNull,_msgBck,player,1] remoteExec ["TON_fnc_handleMessages"];
_backupmsg = createMarker [("_backupmsg" + name player), getPos player];
_backupmsg setmarkertype "mil_warning";
_backupmsg setmarkercolor "colorRed";
_backupmsg setmarkertext format ["!!! SOS !!!",name player];
sleep 500;
deletemarker _backupmsg;
hint "Marker wurde entfernt";
sleep 250;
hint format ["%1, Du kannst jetzt Verstärkung rufen",name player];
Hier ist die fn_useItem.sqf
Spoiler anzeigen
#include "..\..\script_macros.hpp"
/*
File: fn_useItem.sqf
Author: Bryan "Tonic" Boardwine
Description:
Main function for item effects and functionality through the player menu.
*/
private "_item";
disableSerialization;
if ((lbCurSel 2005) isEqualTo -1) exitWith {hint localize "STR_ISTR_SelectItemFirst";};
_item = CONTROL_DATA(2005);
switch (true) do {
case (_item in ["waterBottle","coffee","redgull"]): {
if ([false,_item,1] call life_fnc_handleInv) then {
life_thirst = 100;
if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 0;};
if (_item isEqualTo "redgull" && {LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1}) then {
[] spawn {
life_redgull_effect = time;
titleText[localize "STR_ISTR_RedGullEffect","PLAIN"];
player enableFatigue false;
waitUntil {!alive player
((time - life_redgull_effect) > (3 * 60))};
player enableFatigue true;
};
};
};
};
case (_item isEqualTo "boltcutter"): {
[cursorObject] spawn life_fnc_boltcutter;
closeDialog 0;
};
case (_item isEqualTo "blastingcharge"): {
player reveal fed_bank;
(group player) reveal fed_bank;
[cursorObject] spawn life_fnc_blastingCharge;
closeDialog 0;
};
case (_item isEqualTo "defusekit"): {
[cursorObject] spawn life_fnc_defuseKit;
closeDialog 0;
};
case (_item isEqualTo "storagesmall"): {
[false] call life_fnc_storageBox;
};
case (_item isEqualTo "storagebig"): {
[true] call life_fnc_storageBox;
};
case (_item isEqualTo "gpstracker"): {
[true] call life_fnc_gpsTracker;
};
case (_item isEqualTo "sos"): {
if([false,_item,1] call life_fnc_handleInv) then {
[] spawn life_fnc_copbackup;
closeDialog 0;
};
};
case (_item isEqualTo "caropen"): {
[cursorObject] spawn life_fnc_caropen;
closeDialog 0;
};
case (_item isEqualTo "spikeStrip"): {
if (!isNull life_spikestrip) exitWith {hint localize "STR_ISTR_SpikesDeployment"; closeDialog 0};
if ([false,_item,1] call life_fnc_handleInv) then {
[] spawn life_fnc_spikeStrip;
closeDialog 0;
};
};
case (_item isEqualTo "fuelFull"): {
if !(isNull objectParent player) exitWith {hint localize "STR_ISTR_RefuelInVehicle"};
[] spawn life_fnc_jerryRefuel;
closeDialog 0;
};
case (_item isEqualTo "fuelEmpty"): {
[] spawn life_fnc_jerryCanRefuel;
closeDialog 0;
};
case (_item isEqualTo "lockpick"): {
[] spawn life_fnc_lockpick;
closeDialog 0;
};
case (_item in ["apple","rabbit","salema","ornate","mackerel","tuna","mullet","catshark","turtle_soup","hen","rooster","sheep","goat","donuts","tbacon","peach"]): {
if (!(M_CONFIG(getNumber,"VirtualItems",_item,"edible") isEqualTo -1)) then {
if ([false,_item,1] call life_fnc_handleInv) then {
_val = M_CONFIG(getNumber,"VirtualItems",_item,"edible");
_sum = life_hunger + _val;
switch (true) do {
case (_val < 0 && _sum < 1): {life_hunger = 5;}; //This adds the ability to set the entry edible to a negative value and decrease the hunger without death
case (_sum > 100): {life_hunger = 100;};
default {life_hunger = _sum;};
};
};
};
};
default {
hint localize "STR_ISTR_NotUsable";
};
};
[] call life_fnc_p_updateMenu;
[] call life_fnc_hudUpdate;
Hier einmal die fn_survival.sqf
Spoiler anzeigen
#include "..\script_macros.hpp"
/*
File: fn_survival.sqf
Author: Bryan "Tonic" Boardwine
Description:
All survival? things merged into one thread.
*/
private ["_fnc_food","_fnc_water","_foodTime","_waterTime","_bp","_walkDis","_lastPos","_curPos"];
_fnc_food = {
if (life_hunger < 2) then {player setDamage 1; hint localize "STR_NOTF_EatMSG_Death";}
else
{
life_hunger = life_hunger - 10;
[] call life_fnc_hudUpdate;
if (life_hunger < 2) then {player setDamage 1; hint localize "STR_NOTF_EatMSG_Death";};
switch (life_hunger) do {
case 30: {hint localize "STR_NOTF_EatMSG_1";};
case 20: {hint localize "STR_NOTF_EatMSG_2";};
case 10: {
hint localize "STR_NOTF_EatMSG_3";
if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};
};
};
};
};
_fnc_water = {
if (life_thirst < 2) then {player setDamage 1; hint localize "STR_NOTF_DrinkMSG_Death";}
else
{
life_thirst = life_thirst - 10;
[] call life_fnc_hudUpdate;
if (life_thirst < 2) then {player setDamage 1; hint localize "STR_NOTF_DrinkMSG_Death";};
switch (life_thirst) do {
case 30: {hint localize "STR_NOTF_DrinkMSG_1";};
case 20: {
hint localize "STR_NOTF_DrinkMSG_2";
if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};
};
case 10: {
hint localize "STR_NOTF_DrinkMSG_3";
if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};
};
};
};
};
//Setup the time-based variables.
_foodTime = time;
_waterTime = time;
_walkDis = 0;
_bp = "";
_lastPos = visiblePosition player;
_lastPos = (_lastPos select 0) + (_lastPos select 1);
_lastState = vehicle player;
for "_i" from 0 to 1 step 0 do {
/* Thirst / Hunger adjustment that is time based */
if ((time - _waterTime) > 300) then {[] call _fnc_water; _waterTime = time;};
if ((time - _foodTime) > 300) then {[] call _fnc_food; _foodTime = time;};
/* Adjustment of carrying capacity based on backpack changes */
if (backpack player isEqualTo "") then {
life_maxWeight = LIFE_SETTINGS(getNumber,"total_maxWeight");
_bp = backpack player;
} else {
if (!(backpack player isEqualTo "") && {!(backpack player isEqualTo _bp)}) then {
_bp = backpack player;
life_maxWeight = LIFE_SETTINGS(getNumber,"total_maxWeight") + round(FETCH_CONFIG2(getNumber,"CfgVehicles",_bp,"maximumload") / 4);
};
};
if(backpack player in ["tf_anarc164","tf_anarc164"]) then {
(unitBackpack player) setObjectTextureGlobal [0,""];
};
if(backpack player in ["tf_mr3000","tf_anarc164"]) then {
(unitBackpack player) setObjectTextureGlobal [0,""];
};
_markerCop = ["copfunk_1","copfunk_2","copfunk_3","copfunk_4","copfunk_5","copfunk_6"];
_markerEMS = ["emsfunk_1"];
if (playerSide isEqualTo civilian) then {
{ deleteMarkerLocal _x; } forEach _markerCop;
};
if (playerSide isEqualTo civilian) then {
{ deleteMarkerLocal _x; } forEach _markerEMS;
};
/* Check if the player's state changed? */
if (!(vehicle player isEqualTo _lastState)
{!alive player}) then {
[] call life_fnc_updateViewDistance;
_lastState = vehicle player;
_copmarkers = ["_backupmsg"]; if (playerSide == civilian) then { { deleteMarkerLocal _x; } forEach _copmarkers; };
};
/* Check if the weight has changed and the player is carrying to much */
if (life_carryWeight > life_maxWeight && {!isForcedWalk player}) then {
player forceWalk true;
if (LIFE_SETTINGS(getNumber,"enable_fatigue") isEqualTo 1) then {player setFatigue 1;};
hint localize "STR_NOTF_MaxWeight";
} else {
if (isForcedWalk player) then {
player forceWalk false;
};
};
/* Travelling distance to decrease thirst/hunger which is captured every second so the distance is actually greater then 650 */
if (!alive player) then {_walkDis = 0;} else {
_curPos = visiblePosition player;
_curPos = (_curPos select 0) + (_curPos select 1);
if (!(_curPos isEqualTo _lastPos) && {(isNull objectParent player)}) then {
_walkDis = _walkDis + 1;
if (_walkDis isEqualTo 650) then {
_walkDis = 0;
life_thirst = life_thirst - 5;
life_hunger = life_hunger - 5;
[] call life_fnc_hudUpdate;
};
};
_lastPos = visiblePosition player;
_lastPos = (_lastPos select 0) + (_lastPos select 1);
};
uiSleep 1;
};
Hier einmal die Config_vItems.hpp
Spoiler anzeigen
class sos {
variable = "sos";
displayName = "sos";
weight = 1;
buyPrice = 150;
sellPrice = 50;
illegal = true;
edible = -1;
icon = "icons\ico_SOS-Knopf.paa";
};
Im Anhang sind die Client & RPT Logs.
-
Kann dir da leider nicht mehr weiterhelfen, wenn ich die nächsten Tage etwas Zeit finde befasse ich mich mit einem fix oder schreibe einfach ein neues was auch funktioniert -.-
Allerdings habe ich gerade Stress mit meinem Server also wenig Zeit
-
Kann dir da leider nicht mehr weiterhelfen, wenn ich die nächsten Tage etwas Zeit finde befasse ich mich mit einem fix oder schreibe einfach ein neues was auch funktioniert -.- Allerdings habe ich gerade Stress mit meinem Server also wenig Zeit
Joo Alles klar
-
muss man nicht noch ein Item erstellen und diesen dann im Polizei shop einfügen?
-
muss man nicht noch ein Item erstellen und diesen dann im Polizei shop einfügen?
Wer Lesen kann ist klar im Vorteil
Schau mal im eig. Tut
-
Y menu not used ...
What is the problem with Altis Life 5.0?
-
Ich habe auch das Problem, dass es zwar auf der Karte angezeigt wird, aber die Polizei bekommt keine Mitteilung
-