Skip to content

Commit 2b0b138

Browse files
author
aabbfive
authored
<3
1 parent 9ccf394 commit 2b0b138

3 files changed

Lines changed: 329 additions & 0 deletions

File tree

LifeTraffic.cs

Lines changed: 233 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,233 @@
1+
using CitizenFX.Core;
2+
using CitizenFX.Core.Native;
3+
using System;
4+
using System.Threading.Tasks;
5+
6+
namespace LifeTraffic
7+
{
8+
public class LifeTraffic : BaseScript
9+
{
10+
private float baseTraffic { get; set; }
11+
private float divMultiplier { get; set; }
12+
private TimeSpan LastCheck;
13+
public LifeTraffic()
14+
{
15+
baseTraffic = 0.9999999f;
16+
divMultiplier = 2.0f;
17+
LastCheck = World.CurrentDayTime;
18+
SetDensity();
19+
20+
Tick += new Func<Task>(async delegate
21+
{
22+
if (World.CurrentDayTime.Subtract(LastCheck).Seconds >= 30)
23+
{
24+
SetDensity();
25+
LastCheck = World.CurrentDayTime;
26+
}
27+
await Task.FromResult(0);
28+
//Debug.WriteLine(World.CurrentDayTime.Subtract(LastCheck).Seconds.ToString());
29+
});
30+
}
31+
private void SetDensity()
32+
{
33+
TimeSpan time = World.CurrentDayTime;
34+
if (time.Hours >= 20 || time.Hours <= 5)
35+
{
36+
//Debug.WriteLine("it's the night!");
37+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic + (baseTraffic / 2));
38+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
39+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
40+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
41+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
42+
Function.Call(Hash.SET_RANDOM_TRAINS, 5);
43+
Function.Call(Hash.SET_RANDOM_BOATS, 15);
44+
}
45+
else
46+
{
47+
//Debug.WriteLine("it's the day!");
48+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
49+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
50+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
51+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
52+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
53+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
54+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
55+
}
56+
switch (World.Weather)
57+
{
58+
case Weather.Blizzard:
59+
{
60+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
61+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
62+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
63+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier/2));
64+
Function.Call(Hash.SET_RANDOM_TRAINS, 25);
65+
Function.Call(Hash.SET_RANDOM_BOATS, 0);
66+
break;
67+
}
68+
case Weather.Christmas:
69+
{
70+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, 2.5f);
71+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, 2.5f);
72+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, 3f);
73+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, 2f);
74+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, 2f);
75+
Function.Call(Hash.SET_RANDOM_BOATS, 5);
76+
Function.Call(Hash.SET_RANDOM_TRAINS, 10);
77+
break;
78+
}
79+
case Weather.Clear:
80+
{
81+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
82+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
83+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
84+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
85+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
86+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
87+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
88+
break;
89+
}
90+
case Weather.Clearing:
91+
{
92+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
93+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
94+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
95+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
96+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
97+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
98+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
99+
break;
100+
}
101+
case Weather.Clouds:
102+
{
103+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
104+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
105+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
106+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
107+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
108+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
109+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
110+
break;
111+
}
112+
case Weather.ExtraSunny:
113+
{
114+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, 1.2f);
115+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic + 1.2f);
116+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic + 1.2f);
117+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic + 1.2f);
118+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic + 1.2f);
119+
Function.Call(Hash.SET_RANDOM_TRAINS, 30);
120+
Function.Call(Hash.SET_RANDOM_BOATS, 50);
121+
break;
122+
}
123+
case Weather.Foggy:
124+
{
125+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
126+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
127+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
128+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
129+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
130+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
131+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
132+
break;
133+
}
134+
case Weather.Neutral:
135+
{
136+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
137+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
138+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
139+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
140+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
141+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
142+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
143+
break;
144+
}
145+
case Weather.Overcast:
146+
{
147+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
148+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
149+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
150+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
151+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
152+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
153+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
154+
break;
155+
}
156+
case Weather.Raining:
157+
{
158+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
159+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
160+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
161+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier / 2));
162+
Function.Call(Hash.SET_RANDOM_TRAINS, 25);
163+
Function.Call(Hash.SET_RANDOM_BOATS, 0);
164+
break;
165+
}
166+
case Weather.Smog:
167+
{
168+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
169+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
170+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
171+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
172+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
173+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
174+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
175+
break;
176+
}
177+
case Weather.Snowing:
178+
{
179+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
180+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
181+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
182+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier / 2));
183+
Function.Call(Hash.SET_RANDOM_TRAINS, 25);
184+
Function.Call(Hash.SET_RANDOM_BOATS, 0);
185+
break;
186+
}
187+
case Weather.Snowlight:
188+
{
189+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
190+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
191+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
192+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
193+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
194+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
195+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
196+
break;
197+
}
198+
case Weather.ThunderStorm:
199+
{
200+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
201+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier - (divMultiplier / 2)));
202+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / divMultiplier);
203+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic / (divMultiplier / 2));
204+
Function.Call(Hash.SET_RANDOM_TRAINS, 25);
205+
Function.Call(Hash.SET_RANDOM_BOATS, 0);
206+
break;
207+
}
208+
case Weather.Unknown:
209+
{
210+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
211+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
212+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
213+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
214+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
215+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
216+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
217+
break;
218+
}
219+
default:
220+
{
221+
Function.Call(Hash.SET_PARKED_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, (baseTraffic / divMultiplier) + (baseTraffic / 2));
222+
Function.Call(Hash.SET_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
223+
Function.Call(Hash.SET_RANDOM_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
224+
Function.Call(Hash.SET_SCENARIO_PED_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
225+
Function.Call(Hash.SET_VEHICLE_DENSITY_MULTIPLIER_THIS_FRAME, baseTraffic);
226+
Function.Call(Hash.SET_RANDOM_TRAINS, 15);
227+
Function.Call(Hash.SET_RANDOM_BOATS, 30);
228+
break;
229+
}
230+
}
231+
}
232+
}
233+
}

LifeTraffic.csproj

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
4+
<PropertyGroup>
5+
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
6+
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
7+
<ProjectGuid>{56C08A76-A438-4FCA-B024-7939E66DB7BF}</ProjectGuid>
8+
<OutputType>Library</OutputType>
9+
<AppDesignerFolder>Properties</AppDesignerFolder>
10+
<RootNamespace>LifeTraffic</RootNamespace>
11+
<AssemblyName>lifetraffic.net</AssemblyName>
12+
<TargetFrameworkVersion>v4.5.2</TargetFrameworkVersion>
13+
<FileAlignment>512</FileAlignment>
14+
</PropertyGroup>
15+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
16+
<DebugSymbols>true</DebugSymbols>
17+
<DebugType>full</DebugType>
18+
<Optimize>false</Optimize>
19+
<OutputPath>bin\Debug\</OutputPath>
20+
<DefineConstants>DEBUG;TRACE</DefineConstants>
21+
<ErrorReport>prompt</ErrorReport>
22+
<WarningLevel>4</WarningLevel>
23+
</PropertyGroup>
24+
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
25+
<DebugType>pdbonly</DebugType>
26+
<Optimize>true</Optimize>
27+
<OutputPath>bin\Release\</OutputPath>
28+
<DefineConstants>TRACE</DefineConstants>
29+
<ErrorReport>prompt</ErrorReport>
30+
<WarningLevel>4</WarningLevel>
31+
</PropertyGroup>
32+
<ItemGroup>
33+
<Reference Include="CitizenFX.Core">
34+
<HintPath>..\..\..\..\..\AppData\Local\FiveM\FiveM.app\citizen\clr2\lib\mono\4.5\CitizenFX.Core.dll</HintPath>
35+
</Reference>
36+
<Reference Include="System" />
37+
<Reference Include="System.Core" />
38+
<Reference Include="System.Xml.Linq" />
39+
<Reference Include="System.Data.DataSetExtensions" />
40+
<Reference Include="Microsoft.CSharp" />
41+
<Reference Include="System.Data" />
42+
<Reference Include="System.Net.Http" />
43+
<Reference Include="System.Xml" />
44+
</ItemGroup>
45+
<ItemGroup>
46+
<Compile Include="LifeTraffic.cs" />
47+
<Compile Include="Properties\AssemblyInfo.cs" />
48+
</ItemGroup>
49+
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
50+
<PropertyGroup>
51+
<PostBuildEvent>copy /y "$(TargetPath)" "C:\Users\Bravo\Desktop\cfx-server\resources\lifetraffic"</PostBuildEvent>
52+
</PropertyGroup>
53+
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
54+
Other similar extension points exist, see Microsoft.Common.targets.
55+
<Target Name="BeforeBuild">
56+
</Target>
57+
<Target Name="AfterBuild">
58+
</Target>
59+
-->
60+
</Project>

Properties/AssemblyInfo.cs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using System.Reflection;
2+
using System.Runtime.CompilerServices;
3+
using System.Runtime.InteropServices;
4+
5+
// Les informations générales relatives à un assembly dépendent de
6+
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
7+
// associées à un assembly.
8+
[assembly: AssemblyTitle("LifeTraffic")]
9+
[assembly: AssemblyDescription("")]
10+
[assembly: AssemblyConfiguration("")]
11+
[assembly: AssemblyCompany("")]
12+
[assembly: AssemblyProduct("LifeTraffic")]
13+
[assembly: AssemblyCopyright("Copyright © ForDoog 2017")]
14+
[assembly: AssemblyTrademark("")]
15+
[assembly: AssemblyCulture("")]
16+
17+
// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
18+
// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
19+
// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
20+
[assembly: ComVisible(false)]
21+
22+
// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
23+
[assembly: Guid("56c08a76-a438-4fca-b024-7939e66db7bf")]
24+
25+
// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
26+
//
27+
// Version principale
28+
// Version secondaire
29+
// Numéro de build
30+
// Révision
31+
//
32+
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
33+
// en utilisant '*', comme indiqué ci-dessous :
34+
// [assembly: AssemblyVersion("1.0.*")]
35+
[assembly: AssemblyVersion("1.0.0.0")]
36+
[assembly: AssemblyFileVersion("1.0.0.0")]

0 commit comments

Comments
 (0)