mirror of
https://github.com/Defent/DMS_Exile.git
synced 2024-08-30 16:52:12 +00:00
Exile update!
This commit is contained in:
parent
82cea05fb8
commit
3b75fd1a26
@ -4,7 +4,7 @@ class CfgPatches
|
||||
{
|
||||
units[] = {};
|
||||
weapons[] = {};
|
||||
a3_DMS_version = "June 27, 2016";
|
||||
a3_DMS_version = "June 29, 2016";
|
||||
requiredVersion = 1.36;
|
||||
requiredAddons[] = {"exile_client","exile_server_config"};
|
||||
};
|
||||
|
@ -153,13 +153,22 @@ DMS_SpawnMissions_Scheduled = false; // Whether or not to spawn missions in a sc
|
||||
DMS_MinServerFPS = 5; // Minimum server FPS for missions to start
|
||||
|
||||
/*Mission notification settings*/
|
||||
DMS_PlayerNotificationTypes = [ // Notification types. Supported values are: ["dynamicTextRequest", "standardHintRequest", "systemChatRequest", "textTilesRequest"]. Details below
|
||||
"dynamicTextRequest", // You should use either "dynamicTextRequest" or "textTilesRequest", and I think "textTilesRequest" looks better, but this is less performance-intensive.
|
||||
DMS_PlayerNotificationTypes = [ // Notification types. Supported values are: ["dynamicTextRequest", "standardHintRequest", "systemChatRequest", "textTilesRequest", "ExileToasts"]. Details below.
|
||||
//"dynamicTextRequest", // You should use either "dynamicTextRequest" or "textTilesRequest", and I think "textTilesRequest" looks better, but this is less performance-intensive.
|
||||
//"standardHintRequest", // Hints are a bit wonky...
|
||||
//"textTilesRequest", // Keep in mind you can only have 1 "text tile" message up at a time, so the message will disappear if the player gets a kill or something while the message is shown. This message type is also performance-intensive, so I advise against it.
|
||||
"systemChatRequest" // Always nice to show in chat so that players can scroll up to read the info if they need to.
|
||||
//"systemChatRequest", // Always nice to show in chat so that players can scroll up to read the info if they need to.
|
||||
"ExileToasts" // Default notification type since Exile 0.98, see (http://www.exilemod.com/devblog/new-ingame-notifications/)
|
||||
];
|
||||
|
||||
/*Exile Toasts Notification Settings*/
|
||||
DMS_ExileToasts_Title_Size = 22; // Size for Client Exile Toasts mission titles.
|
||||
DMS_ExileToasts_Title_Font = "puristaMedium"; // Font for Client Exile Toasts mission titles.
|
||||
DMS_ExileToasts_Message_Color = "#ff979ba1"; // Exile Toasts color for "ExileToast" client notification type.
|
||||
DMS_ExileToasts_Message_Size = 19; // Exile Toasts size for "ExileToast" client notification type.
|
||||
DMS_ExileToasts_Message_Font = "PuristaLight"; // Exile Toasts font for "ExileToast" client notification type.
|
||||
/*Exile Toasts Notification Settings*/
|
||||
|
||||
/*Dynamic Text Notification Settings*/
|
||||
DMS_dynamicText_Duration = 7; // Number of seconds that the message will last on the screen.
|
||||
DMS_dynamicText_FadeTime = 1.5; // Number of seconds that the message will fade in/out (does not affect duration).
|
||||
@ -253,35 +262,57 @@ DMS_SpawnMissions_Scheduled = false; // Whether or not to spawn missions in a sc
|
||||
DMS_Show_Kill_Rank_Notification = true;
|
||||
DMS_Show_Party_Kill_Notification = true; // Whether or not to show in chat when a party member kills an AI.
|
||||
|
||||
DMS_Spawn_AI_With_Money = true; // Whether or not to spawn AI with money that can be looted from the body.
|
||||
DMS_AIMoney_PopulationMultiplier = 5; // This determines how much EXTRA money an AI will have on his body. For example, setting this to 5 and having a server population of 30 means the AI will have an extra 150 poptabs on the body. Set to 0 to disable.
|
||||
|
||||
DMS_GiveMoneyToPlayer_OnAIKill = true; // Whether or not to give money directly to players when they kill AI (old method of giving money).
|
||||
DMS_GiveRespectToPlayer_OnAIKill = true; // Whether or not to give respect to players when they kill AI.
|
||||
|
||||
DMS_Bandit_Soldier_MoneyGain = 50; // The amount of Poptabs gained for killing a bandit soldier
|
||||
DMS_Bandit_Soldier_RepGain = 10; // The amount of Respect gained for killing a bandit soldier
|
||||
DMS_Bandit_Soldier_RankGain = 15;
|
||||
DMS_Bandit_Soldier_SpawnMoney = 50; // The amount of Poptabs carried by a bandit soldier
|
||||
|
||||
DMS_Bandit_Static_MoneyGain = 75; // The amount of Poptabs gained for killing a bandit static gunner
|
||||
DMS_Bandit_Static_RepGain = 15; // The amount of Respect gained for killing a bandit static gunner
|
||||
DMS_Bandit_Static_RankGain = 30;
|
||||
DMS_Bandit_Static_SpawnMoney = 75; // The amount of Poptabs carried by a bandit static gunner
|
||||
|
||||
DMS_Bandit_Vehicle_MoneyGain = 100; // The amount of Poptabs gained for killing a bandit vehicle crew member
|
||||
DMS_Bandit_Vehicle_RepGain = 25; // The amount of Respect gained for killing a bandit vehicle crew member
|
||||
DMS_Bandit_Vehicle_RankGain = 50;
|
||||
DMS_Bandit_Vehicle_SpawnMoney = 100; // The amount of Poptabs carried by a bandit vehicle crew member
|
||||
|
||||
/* DonkeyPunchDMS Custom Settings for Hero AI*/
|
||||
DMS_Hero_Soldier_MoneyGain = 100; // The amount of Poptabs gained for killing a hero soldier
|
||||
DMS_Hero_Soldier_RepGain = 20; // The amount of Respect gained for killing a hero soldier
|
||||
DMS_Hero_Soldier_RankGain = -30;
|
||||
DMS_Hero_Soldier_SpawnMoney = 100; // The amount of Poptabs carried by a hero soldier
|
||||
|
||||
DMS_Hero_Static_MoneyGain = 120; // The amount of Poptabs gained for killing a hero static gunner
|
||||
DMS_Hero_Static_RepGain = 30; // The amount of Respect gained for killing a hero static gunner
|
||||
DMS_Hero_Static_RankGain = -60;
|
||||
DMS_Hero_Static_SpawnMoney = 120; // The amount of Poptabs carried by a hero static gunner
|
||||
|
||||
DMS_Hero_Vehicle_MoneyGain = 200; // The amount of Poptabs gained for killing a hero vehicle crew member
|
||||
DMS_Hero_Vehicle_RepGain = 50; // The amount of Respect gained for killing a hero vehicle crew member
|
||||
DMS_Hero_Vehicle_RankGain = -100;
|
||||
DMS_Hero_Vehicle_SpawnMoney = 200; // The amount of Poptabs carried by a hero vehicle crew member
|
||||
/* DonkeyPunchDMS Custom Settings for Survivor AI*/
|
||||
DMS_Survivor_Soldier_MoneyGain = -100; // The amount of Poptabs gained for killing a Survivor soldier
|
||||
DMS_Survivor_Soldier_RepGain = -100; // The amount of Respect gained for killing a Survivor soldier
|
||||
DMS_Survivor_Soldier_RankGain = -250;
|
||||
DMS_Survivor_Soldier_SpawnMoney = 0; // The amount of Poptabs carried by a Survivor soldier
|
||||
|
||||
DMS_Survivor_Static_MoneyGain = -100; // The amount of Poptabs gained for killing a Survivor static gunner
|
||||
DMS_Survivor_Static_RepGain = -100; // The amount of Respect gained for killing a Survivor static gunner
|
||||
DMS_Survivor_Static_RankGain = -400;
|
||||
DMS_Survivor_Static_SpawnMoney = 0; // The amount of Poptabs carried by a Survivor static gunner
|
||||
|
||||
DMS_Survivor_Vehicle_MoneyGain = -500; // The amount of Poptabs gained for killing a Survivor vehicle crew member
|
||||
DMS_Survivor_Vehicle_RepGain = -100; // The amount of Respect gained for killing a Survivor vehicle crew member
|
||||
DMS_Survivor_Vehicle_RankGain = -600;
|
||||
DMS_Survivor_Vehicle_MoneyGain = 0; // The amount of Poptabs carried by a Survivor vehicle crew member
|
||||
|
||||
DMS_AIKill_DistanceBonusMinDistance = 100; // Minimum distance from the player to the AI to apply the distance bonus.
|
||||
DMS_AIKill_DistanceBonusCoefficient = 0.05; // If the distance from the player to the killed unit is more than "DMS_AIKill_DistanceBonusMinDistance" meters then the player gets a respect bonus equivalent to the distance multiplied by this coefficient. For example, killing an AI from 400 meters will give 100 extra respect (when the coefficient is 0.25). Set to 0 to disable the bonus. This bonus will not be applied if there isn't a regular AI kill bonus.
|
||||
@ -345,7 +376,7 @@ DMS_SpawnMissions_Scheduled = false; // Whether or not to spawn missions in a sc
|
||||
DMS_ai_freezeCheckingDelay = 30; // How often (in seconds) DMS will check whether to freeze/un-freeze AI.
|
||||
DMS_ai_freezeOnSpawn = true; // Whether or not to freeze an AI group when initially spawned.
|
||||
|
||||
DMS_ai_share_info = true; // Share info about killer
|
||||
DMS_ai_share_info = false; // Share info about killer
|
||||
DMS_ai_share_info_distance = 300; // The distance killer's info will be shared to other AI
|
||||
|
||||
DMS_ai_nighttime_accessory_chance = 75; // Percentage chance that AI will have a flashlight or laser pointer on their guns if spawned during nighttime
|
||||
|
@ -140,6 +140,8 @@ try
|
||||
{
|
||||
throw format["_messages |%1|",_messages];
|
||||
};
|
||||
_msgWIN pushBack "win";
|
||||
_msgLose pushBack "lose";
|
||||
|
||||
|
||||
if !(_onEndingScripts params
|
||||
|
@ -142,6 +142,8 @@ try
|
||||
{
|
||||
throw format["_messages |%1|",_messages];
|
||||
};
|
||||
_msgWIN pushBack "win";
|
||||
_msgLose pushBack "lose";
|
||||
|
||||
|
||||
if !(_onEndingScripts params
|
||||
|
@ -42,7 +42,15 @@ if !(_message isEqualType "") then
|
||||
_message = str _message;
|
||||
};
|
||||
|
||||
if (_message isEqualTo "") exitWith {};
|
||||
private _status =
|
||||
if ((count _this)>2) then
|
||||
{
|
||||
_this select 2
|
||||
}
|
||||
else
|
||||
{
|
||||
"start"
|
||||
};
|
||||
|
||||
{
|
||||
switch (toLower _x) do
|
||||
@ -52,6 +60,38 @@ if (_message isEqualTo "") exitWith {};
|
||||
format["%1: %2",toUpper _messageTitle,_message] remoteExecCall ["systemChat",-2];
|
||||
};
|
||||
|
||||
case "ExileToasts":
|
||||
{
|
||||
private _toast_type =
|
||||
switch (_status) do
|
||||
{
|
||||
case "win": {"SuccessEmpty"};
|
||||
case "lose": {"ErrorEmpty"};
|
||||
default {"InfoEmpty"}; // case "start":
|
||||
};
|
||||
|
||||
[
|
||||
"toastRequest",
|
||||
[
|
||||
_toast_type,
|
||||
[
|
||||
format
|
||||
[
|
||||
"<t color='%1' size='%2' font='%3'>%4</t><br/><t color='%5' size='%6' font='%7'>%8</t>",
|
||||
_titleColor,
|
||||
DMS_ExileToasts_Title_Size,
|
||||
DMS_ExileToasts_Title_Font,
|
||||
_messageTitle,
|
||||
DMS_ExileToasts_Message_Color,
|
||||
DMS_ExileToasts_Message_Size,
|
||||
DMS_ExileToasts_Message_Font,
|
||||
_message
|
||||
]
|
||||
]
|
||||
]
|
||||
] call ExileServer_system_network_send_broadcast;
|
||||
};
|
||||
|
||||
case "standardhintrequest":
|
||||
{
|
||||
format
|
||||
|
@ -34,190 +34,153 @@ private _playerUID = getPlayerUID _playerObj;
|
||||
|
||||
if ((!isNull _playerObj) && {(_playerUID != "") && {_playerObj isKindOf "Exile_Unit_Player"}}) then
|
||||
{
|
||||
private _moneyChange = missionNamespace getVariable [format ["DMS_%1_%2_MoneyGain",_AISide,_AIType],0];
|
||||
private _repChange = missionNamespace getVariable [format ["DMS_%1_%2_RepGain",_AISide,_AIType],0];
|
||||
private _rankChange = missionNamespace getVariable [format ["DMS_%1_%2_RankGain",_AISide,_AIType],0];
|
||||
|
||||
// Check for individually defined AI money/respect/rank.
|
||||
private _unitMoney = _unit getVariable ["DMS_AI_Money",""];
|
||||
private _unitRespect = _unit getVariable ["DMS_AI_Respect",""];
|
||||
private _unitRank = _unit getVariable ["DMS_AI_Rank",""];
|
||||
|
||||
if !(_unitMoney isEqualTo "") then
|
||||
{
|
||||
_moneyChange = _unitMoney;
|
||||
};
|
||||
|
||||
if !(_unitRespect isEqualTo "") then
|
||||
{
|
||||
_repChange = _unitRespect;
|
||||
};
|
||||
|
||||
if !(_unitRank isEqualTo "") then
|
||||
{
|
||||
_rankChange = _unitRank;
|
||||
};
|
||||
private _moneyChange = _unit getVariable ["DMS_AI_Money",0];
|
||||
private _repChange = _unit getVariable ["DMS_AI_Respect",0];
|
||||
//private _unitRank = _unit getVariable ["DMS_AI_Rank",0];
|
||||
|
||||
|
||||
if (_roadKilled && {_unit getVariable ["DMS_Diff_RepOrTabs_on_roadkill",DMS_Diff_RepOrTabs_on_roadkill]}) then
|
||||
{
|
||||
_moneyChange = missionNamespace getVariable [format ["DMS_%1_%2_RoadkillMoney",_AISide,_AIType],0];
|
||||
_repChange = missionNamespace getVariable [format ["DMS_%1_%2_RoadkillRep",_AISide,_AIType],0];
|
||||
_rankChange = missionNamespace getVariable [format ["DMS_%1_%2_RoadkillRank",_AISide,_AIType],0];
|
||||
//_rankChange = missionNamespace getVariable [format ["DMS_%1_%2_RoadkillRank",_AISide,_AIType],0];
|
||||
};
|
||||
|
||||
|
||||
if ((_moneyChange!=0) || {_repChange!=0} || {_rankChange!=0}) then
|
||||
private _playerMoney = _playerObj getVariable ["ExileMoney", 0];
|
||||
private _playerRespect = _playerObj getVariable ["ExileScore", 0];
|
||||
//private _playerRank = _playerObj getVariable ["ExileHumanity", 0];
|
||||
private _unitName = name _unit;
|
||||
private _distance = [];
|
||||
|
||||
/*
|
||||
if (DMS_DEBUG) then
|
||||
{
|
||||
private _playerMoney = _playerObj getVariable ["ExileMoney", 0];
|
||||
private _playerRespect = _playerObj getVariable ["ExileScore", 0];
|
||||
private _playerRank = _playerObj getVariable ["ExileHumanity", 0];
|
||||
private _unitName = name _unit;
|
||||
private _distance = [];
|
||||
|
||||
/*
|
||||
if (DMS_DEBUG) then
|
||||
{
|
||||
format ["PlayerAwardOnAIKill :: Attempting to give %1 (%2) %3 poptabs and %4 respect and %5 rank. Player currently has %6 tabs and %7 respect and &8 rank.", name _playerObj, _playerUID, _moneyChange, _repChange, _rankChange,_playerMoney, _playerRespect,_playerRank] call DMS_fnc_DebugLog;
|
||||
};
|
||||
*/
|
||||
|
||||
if (_moneyChange!=0) then
|
||||
{
|
||||
// Set client's money
|
||||
// I also make sure that they don't get negative poptabs
|
||||
_playerMoney = (_playerMoney + _moneyChange) max 0;
|
||||
_playerObj setVariable ["ExileMoney",_playerMoney];
|
||||
|
||||
private _msgType = "moneyReceivedRequest";
|
||||
private _msgParams = [str _playerMoney, format ["killed %1",_unitName]];
|
||||
|
||||
if (_moneyChange<0) then
|
||||
{
|
||||
// Change message for players when they're actually LOSING poptabs
|
||||
_msgType = "notificationRequest";
|
||||
_msgParams = ["Whoops",[format ["Lost %1 poptabs for killing %2 AI!",abs _moneyChange,_AIType]]]; //changed wording, negative result is not necessarily a roadkill
|
||||
|
||||
// With the error message the money value won't be updated on the client, so I just directly PVC the value.
|
||||
ExileClientPlayerMoney = _playerMoney;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerMoney";
|
||||
ExileClientPlayerMoney = nil;
|
||||
};
|
||||
|
||||
if (DMS_Show_Kill_Poptabs_Notification) then
|
||||
{
|
||||
// Send notification and update client's money stats
|
||||
[_playerObj, _msgType, _msgParams] call ExileServer_system_network_send_to;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Player's money will already be updated for negative values, so let's not create unnecessary network traffic by sending another PVC
|
||||
if (_moneyChange>0) then
|
||||
{
|
||||
ExileClientPlayerMoney = _playerMoney;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerMoney";
|
||||
ExileClientPlayerMoney = nil;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
if (_repChange!=0) then
|
||||
{
|
||||
private _attributes = [[format ["KILLED %1",toUpper(_unitName)],_repChange]];
|
||||
|
||||
if (DMS_AIKill_DistanceBonusCoefficient>0) then
|
||||
{
|
||||
_distance = floor (_unit distance _playerObj);
|
||||
|
||||
if (_distance>DMS_AIKill_DistanceBonusMinDistance) then
|
||||
{
|
||||
private _distanceBonus = floor (_distance * DMS_AIKill_DistanceBonusCoefficient);
|
||||
_attributes pushBack [format ["%1m RANGE BONUS",_distance], _distanceBonus];
|
||||
|
||||
_repChange = _repChange + _distanceBonus;
|
||||
};
|
||||
};
|
||||
|
||||
// Set client's respect
|
||||
_playerRespect = _playerRespect + _repChange;
|
||||
_playerObj setVariable ["ExileScore",_playerRespect];
|
||||
|
||||
if (DMS_Show_Kill_Respect_Notification) then
|
||||
{
|
||||
// Send frag message
|
||||
[_playerObj, "showFragRequest", [_attributes]] call ExileServer_system_network_send_to;
|
||||
};
|
||||
|
||||
// Send updated respect value to client
|
||||
ExileClientPlayerScore = _playerRespect;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerScore";
|
||||
ExileClientPlayerScore = nil;
|
||||
};
|
||||
format ["PlayerAwardOnAIKill :: Attempting to give %1 (%2) %3 poptabs and %4 respect and %5 rank. Player currently has %6 tabs and %7 respect and &8 rank.", name _playerObj, _playerUID, _moneyChange, _repChange, _rankChange,_playerMoney, _playerRespect,_playerRank] call DMS_fnc_DebugLog;
|
||||
};
|
||||
*/
|
||||
|
||||
|
||||
//DONKEYPUNCH CUSTOM KILL STAT ADD FOR AI KILL
|
||||
if (DMS_Add_AIKill2DB) then
|
||||
{
|
||||
_newKillerFrags = _killer getVariable ["ExileKills", 0];
|
||||
_newKillerFrags = _newKillerFrags + 1;
|
||||
_killer setVariable ["ExileKills", _newKillerFrags];
|
||||
format["addAccountKill:%1", getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
|
||||
ExileClientPlayerKills = _newKillerFrags;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerKills";
|
||||
ExileClientPlayerKills = nil;
|
||||
};
|
||||
|
||||
//DONKEYPUNCH CUSTOM KILL RANK CHANGE FOR AI KILL
|
||||
if (DMS_Enable_RankChange && {_rankChange!=0}) then
|
||||
{
|
||||
_playerRank = (_playerRank+_rankChange);
|
||||
_killer setVariable ["ExileHumanity",_playerRank];
|
||||
format["modifyAccountHumanity:%1:%2",_rankChange,getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
|
||||
ExileClientPlayerHumanity = _playerRank;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerHumanity";
|
||||
ExileClientPlayerHumanity = nil;
|
||||
};
|
||||
|
||||
|
||||
if (DMS_DEBUG) then
|
||||
{
|
||||
format ["PlayerAwardOnAIKill :: %1 (%2) awarded %3 poptabs and %4 respect for killing %5. Player's money is now %6, and respect is now %7. Roadkill: %8", name _playerObj, _playerUID, _moneyChange, _repChange, _unit, _playerMoney, _playerRespect, _roadKilled] call DMS_fnc_DebugLog;
|
||||
};
|
||||
|
||||
if (DMS_Show_Party_Kill_Notification) then
|
||||
{
|
||||
private _group = group _playerObj;
|
||||
private _members = units _group;
|
||||
if (!(_group isEqualTo ExileGraveyardGroup) && {(count _members)>1}) then
|
||||
{
|
||||
private _msg = format
|
||||
[
|
||||
"%1 killed %2 from %3 meters away and received %4 poptabs, and %5 respect.",
|
||||
name _playerObj,
|
||||
_unitName,
|
||||
if (_distance isEqualTo []) then {floor(_unit distance _playerObj)} else {_distance},
|
||||
_moneyChange,
|
||||
_repChange
|
||||
];
|
||||
|
||||
if (DMS_Enable_RankChange) then
|
||||
{
|
||||
_msg = _msg + format[" (+%1 rank)", _rankChange];
|
||||
};
|
||||
|
||||
{
|
||||
_msg remoteExecCall ["systemChat", _x];
|
||||
} forEach _members;
|
||||
};
|
||||
};
|
||||
}
|
||||
else
|
||||
if (DMS_GiveMoneyToPlayer_OnAIKill && {_moneyChange!=0}) then
|
||||
{
|
||||
if (DMS_DEBUG) then
|
||||
// Set client's money
|
||||
_playerMoney = (_playerMoney + _moneyChange) max 0; //Also make sure that they don't get negative poptabs
|
||||
_playerObj setVariable ["ExileMoney",_playerMoney,true];
|
||||
|
||||
if (DMS_Show_Kill_Poptabs_Notification) then
|
||||
{
|
||||
format ["PlayerAwardOnAIKill :: %1 (%2) was not awarded any poptabs or respect.", name _playerObj, _playerUID] call DMS_fnc_DebugLog;
|
||||
// Create and send message to player
|
||||
_msgParams =
|
||||
if (_moneyChange > 0) then
|
||||
{
|
||||
["SuccessTitleOnly",[format ["Gained %1 poptabs for killing %2 AI!",abs _moneyChange,_AIType]]];
|
||||
}
|
||||
else
|
||||
{
|
||||
["ErrorTitleOnly",[format ["Lost %1 poptabs for killing %2 AI!",abs _moneyChange,_AIType]]];
|
||||
};
|
||||
|
||||
// Send notification
|
||||
[_playerObj, "toastRequest", _msgParams] call ExileServer_system_network_send_to;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
if (DMS_GiveRespectToPlayer_OnAIKill && {_repChange!=0}) then
|
||||
{
|
||||
private _attributes = [[format ["KILLED %1",toUpper(_unitName)],_repChange]];
|
||||
|
||||
if (DMS_AIKill_DistanceBonusCoefficient>0) then
|
||||
{
|
||||
_distance = floor (_unit distance _playerObj);
|
||||
|
||||
if (_distance>DMS_AIKill_DistanceBonusMinDistance) then
|
||||
{
|
||||
private _distanceBonus = floor (_distance * DMS_AIKill_DistanceBonusCoefficient);
|
||||
_attributes pushBack [format ["%1m RANGE BONUS",_distance], _distanceBonus];
|
||||
|
||||
_repChange = _repChange + _distanceBonus;
|
||||
};
|
||||
};
|
||||
|
||||
// Set client's respect
|
||||
_playerRespect = _playerRespect + _repChange;
|
||||
_playerObj setVariable ["ExileScore",_playerRespect];
|
||||
|
||||
if (DMS_Show_Kill_Respect_Notification) then
|
||||
{
|
||||
// Send frag message
|
||||
[_playerObj, "showFragRequest", [_attributes]] call ExileServer_system_network_send_to;
|
||||
};
|
||||
|
||||
// Send updated respect value to client
|
||||
ExileClientPlayerScore = _playerRespect;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerScore";
|
||||
ExileClientPlayerScore = nil;
|
||||
};
|
||||
|
||||
|
||||
if (DMS_Show_Party_Kill_Notification) then
|
||||
{
|
||||
private _group = group _playerObj;
|
||||
private _members = units _group;
|
||||
if (!(_group isEqualTo ExileGraveyardGroup) && {(count _members)>1}) then
|
||||
{
|
||||
private _msg = format
|
||||
[
|
||||
"%1 killed %2 from %3 meters away and received %4 poptabs, and %5 respect.",
|
||||
name _playerObj,
|
||||
_unitName,
|
||||
if (_distance isEqualTo []) then {floor(_unit distance _playerObj)} else {_distance},
|
||||
_moneyChange,
|
||||
_repChange
|
||||
];
|
||||
|
||||
/*
|
||||
if (DMS_Enable_RankChange) then
|
||||
{
|
||||
_msg = _msg + format[" (+%1 rank)", _rankChange];
|
||||
};
|
||||
*/
|
||||
|
||||
{
|
||||
_msg remoteExecCall ["systemChat", _x];
|
||||
} forEach _members;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
//DONKEYPUNCH CUSTOM KILL STAT ADD FOR AI KILL
|
||||
if (DMS_Add_AIKill2DB) then
|
||||
{
|
||||
_newKillerFrags = _killer getVariable ["ExileKills", 0];
|
||||
_newKillerFrags = _newKillerFrags + 1;
|
||||
_killer setVariable ["ExileKills", _newKillerFrags];
|
||||
format["addAccountKill:%1", getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
|
||||
ExileClientPlayerKills = _newKillerFrags;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerKills";
|
||||
ExileClientPlayerKills = nil;
|
||||
};
|
||||
|
||||
/*
|
||||
//DONKEYPUNCH CUSTOM KILL RANK CHANGE FOR AI KILL
|
||||
if (DMS_Enable_RankChange && {_rankChange!=0}) then
|
||||
{
|
||||
_playerRank = (_playerRank+_rankChange);
|
||||
_killer setVariable ["ExileHumanity",_playerRank];
|
||||
format["modifyAccountHumanity:%1:%2",_rankChange,getPlayerUID _killer] call ExileServer_system_database_query_fireAndForget;
|
||||
ExileClientPlayerHumanity = _playerRank;
|
||||
(owner _playerObj) publicVariableClient "ExileClientPlayerHumanity";
|
||||
ExileClientPlayerHumanity = nil;
|
||||
};
|
||||
*/
|
||||
|
||||
|
||||
if (DMS_DEBUG) then
|
||||
{
|
||||
format ["PlayerAwardOnAIKill :: %1 (%2) awarded %3 poptabs and %4 respect for killing %5. Player's money is now %6, and respect is now %7. Roadkill: %8", name _playerObj, _playerUID, _moneyChange, _repChange, _unit, _playerMoney, _playerRespect, _roadKilled] call DMS_fnc_DebugLog;
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -7,6 +7,7 @@
|
||||
*/
|
||||
|
||||
private _time = diag_tickTime;
|
||||
private _playerCount = count allPlayers;
|
||||
|
||||
if (DMS_RunningBMissionCount >= DMS_MaxBanditMissions) then
|
||||
{
|
||||
@ -20,7 +21,7 @@ if ((count DMS_RunningStaticMissions) >= DMS_MaxStaticMissions) then
|
||||
|
||||
|
||||
|
||||
if (diag_fps >= DMS_MinServerFPS && {(count allPlayers) >= DMS_MinPlayerCount}) then
|
||||
if (diag_fps >= DMS_MinServerFPS && {_playerCount >= DMS_MinPlayerCount}) then
|
||||
{
|
||||
if (DMS_DynamicMission && {_time - DMS_BMissionLastStart > DMS_BMissionDelay}) then
|
||||
{
|
||||
|
@ -410,14 +410,47 @@ if (_type == "Paratroopers") then
|
||||
_unit addBackpackGlobal "B_Parachute";
|
||||
};
|
||||
|
||||
// Set info variables
|
||||
_unit setVariable ["DMS_AISpawnTime", time];
|
||||
_unit setVariable ["DMS_AI_Side", _side];
|
||||
_unit setVariable ["DMS_AI_Type", _type];
|
||||
|
||||
// Set money/respect variables
|
||||
_unit setVariable
|
||||
[
|
||||
"DMS_AI_Money",
|
||||
missionNamespace getVariable [format ["DMS_%1_%2_MoneyGain",_side,_type],0]
|
||||
];
|
||||
_unit setVariable
|
||||
[
|
||||
"DMS_AI_Respect",
|
||||
missionNamespace getVariable [format ["DMS_%1_%2_RepGain",_AISide,_AIType],0]
|
||||
];
|
||||
|
||||
|
||||
private _AIMoney =
|
||||
if (DMS_Spawn_AI_With_Money) then
|
||||
{
|
||||
private _base_money_amount = missionNamespace getVariable [format["DMS_%1_%2_SpawnMoney",_side,_type], 0];
|
||||
private _population_bonus = DMS_AIMoney_PopulationMultiplier * (if (isNil '_playerCount') then {count allPlayers} else {_playerCount});
|
||||
_base_money_amount + _population_bonus
|
||||
}
|
||||
else
|
||||
{
|
||||
0
|
||||
};
|
||||
|
||||
_unit setVariable
|
||||
[
|
||||
"ExileMoney",
|
||||
_AIMoney,
|
||||
true
|
||||
];
|
||||
|
||||
|
||||
if (DMS_DEBUG) then
|
||||
{
|
||||
(format ["SpawnAISoldier :: Spawned a %1 %2 %6 AI at %3 with %4 difficulty to group %5",_class,_side,_pos,_difficulty,_group,_type]) call DMS_fnc_DebugLog;
|
||||
(format ["SpawnAISoldier :: Spawned a %1 %2 %6 AI at %3 with %4 difficulty carrying %7 poptabs to group %5",_class,_side,_pos,_difficulty,_group,_type,_AIMoney]) call DMS_fnc_DebugLog;
|
||||
};
|
||||
|
||||
|
||||
|
25
README.md
25
README.md
@ -150,6 +150,31 @@ ___
|
||||
# Changelog:
|
||||
|
||||
### Main Branch
|
||||
#### June 29, 2016 (4:00 PM CST-America):
|
||||
* **NEW CONFIG VALUES**
|
||||
DMS_ExileToasts_Title_Size
|
||||
DMS_ExileToasts_Title_Font
|
||||
DMS_ExileToasts_Message_Color
|
||||
DMS_ExileToasts_Message_Size
|
||||
DMS_ExileToasts_Message_Font
|
||||
DMS_Spawn_AI_With_Money
|
||||
DMS_AIMoney_PopulationMultiplier
|
||||
DMS_GiveMoneyToPlayer_OnAIKill
|
||||
DMS_GiveRespectToPlayer_OnAIKill
|
||||
DMS_Bandit_Soldier_SpawnMoney
|
||||
DMS_Bandit_Static_SpawnMoney
|
||||
DMS_Bandit_Vehicle_SpawnMoney
|
||||
DMS_Hero_Soldier_SpawnMoney
|
||||
DMS_Hero_Static_SpawnMoney
|
||||
DMS_Hero_Vehicle_SpawnMoney
|
||||
DMS_Survivor_Soldier_SpawnMoney
|
||||
DMS_Survivor_Static_SpawnMoney
|
||||
DMS_Survivor_Vehicle_MoneyGain
|
||||
* Pastebin of new config values: http://pastebin.com/eXw93CkD
|
||||
* **It is also recommended to update "DMS_PlayerNotificationTypes"!!!**
|
||||
* Added support for new Exile "Toasts" notification. This is now the default (and only) DMS notification type.
|
||||
* Complete overhaul and update of "DMS_fnc_PlayerAwardOnAIKill", it is now more efficient and updated to new Exile standards.
|
||||
|
||||
#### June 27, 2016 (7:00 PM CST-America):
|
||||
* DMS should now properly detect VEMF markers (it wasn't working before because of a minor typo).
|
||||
* DMS will now detect (and avoid) ZCP missions if you're updated to the latest version of ZCP on the test branch.
|
||||
|
Loading…
Reference in New Issue
Block a user