НН-челик
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В данном мануале мы установим систему тест-драйва для автосалона в мод RedAge RolePlay (NeptuneEvo).
Если у Вас возникли проблемы с этой системой или просто что-то не получается - пишите в эту тему, постараюсь помочь.
Тест-драйв проходит в другом измерении (dimension), прерывается при выходе из машины.
1) В файле NeptuneEvo/Core/Carroom.cs добавляем два новых серверных эвента (в пустое место, можете добавить рядом с другими похожими строчками):
Внимание! Один эвент enterCarroom уже есть в RedAge RP, вам необходимо его заменить на новый, старый удалить.
C#:
[ServerEvent(Event.PlayerExitVehicle)]
public void Event_OnPlayerExitVehicle(Client player, Vehicle vehicle)
{
try
{
if (!player.HasData("CARROOMTEST")) return;
enterCarroom(player, "CARROOMTEST");
var veh = player.GetData("CARROOMTEST");
veh.Delete();
player.ResetData("CARROOMTEST");
}
catch (Exception e) { Log.Write("PlayerExitVehicle: " + e.Message, nLog.Type.Error); }
}
public static void enterCarroom(Client player, string name)
{
if (NAPI.Player.IsPlayerInAnyVehicle(player) && player.HasData("CARROOMTEST") == false) return;
Main.Players[player].ExteriorPos = player.Position;
NAPI.Entity.SetEntityPosition(player, new Vector3(CamPosition.X, CamPosition.Y - 2, CamPosition.Z));
NAPI.Entity.SetEntityDimension(player, 1);
player.FreezePosition = true;
player.SetData("INTERACTIONCHECK", 0);
Trigger.ClientEvent(player, "carRoom");
OpenCarromMenu(player, BusinessManager.BizList[player.GetData("CARROOMID")].Type);
}
[RemoteEvent("carroomTestDrive")]
public static void RemoteEvent_carroomTestDrive(Client player, string vName, string color)
{
try
{
if (!player.HasData("CARROOMID")) return;
player.FreezePosition = false;
Trigger.ClientEvent(player, "destroyCamera");
uint mydim = (uint)(player.Value + 400);
NAPI.Entity.SetEntityDimension(player, mydim);
VehicleHash vh = (VehicleHash)NAPI.Util.GetHashKey(vName);
var veh = NAPI.Vehicle.CreateVehicle(vh, player.Position, player.Rotation.Z, 0, 0);
veh.Dimension = mydim;
veh.NumberPlate = "TESTDRIVE";
veh.PrimaryColor = 131;
veh.SecondaryColor = 131;
veh.SetData("BY", player.Name);
VehicleStreaming.SetEngineState(veh, true);
NAPI.Player.SetPlayerIntoVehicle(player, veh, -1);
player.SetData("CARROOMTEST", veh);
Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"CARROOMID - " + player.GetData("CARROOMID"), 3000);
}
catch (Exception e) { Log.Write("TestDrive: " + e.Message, nLog.Type.Error); }
2) Переходим к клиенту. В файле client_packages/cef/js/auto.js находим строчку buy: function() и ниже ее добавляем новое событие тестдрайва:
JavaScript:
testdrive: function(){ console.log('testdriveAuto');
mp.trigger('testdriveAuto');
},
3) В файле client_packages/menus.js добавляем новый клиентский эвент:
JavaScript:
mp.events.add('testdriveAuto', () => { if(new Date().getTime() - global.lastCheck < 50) return;
global.lastCheck = new Date().getTime();
global.menuClose();
global.menu.execute('auto.active=0');
mp.events.callRemote('carroomTestDrive', auto.model, auto.color);
if (auto.entity == null) return;
auto.entity.destroy();
auto.entity = null;
})
4) Переходим к визуальной части. Внимание! Если у вас кастомный интерфейс то делайте кнопки и стили под себя, ниже предоставлен код под стандартный RedAge RP.
В файле client_packages/cef/menu.html находим строчку @click="buy" (это кнопка покупки авто) ниже ее добавляем кнопку тестдрайва:
HTML:
<div @click="testdrive" class="btn testdrive">Тест-драйв</div>
5) В файле client_packages/cef/css/auto.css в самый конец добавляем стили для нашей кнопки желтого цвета:
CSS:
.auto .testdrive {
border-color: #ffdb00;
margin-bottom: 10px;
}
.auto .testdrive:hover {
background-color: #ffce00;
}
6) Готово. Чтобы изменить координаты появления машины на тестдрайве редактируйте RemoteEvent - carroomTestDrive в файле NeptuneEvo/Core/Carroom.cs
Если у Вас возникли проблемы с этой системой или просто что-то не получается - пишите в эту тему, постараюсь помочь.
Тест-драйв проходит в другом измерении (dimension), прерывается при выходе из машины.
1) В файле NeptuneEvo/Core/Carroom.cs добавляем два новых серверных эвента (в пустое место, можете добавить рядом с другими похожими строчками):
Внимание! Один эвент enterCarroom уже есть в RedAge RP, вам необходимо его заменить на новый, старый удалить.
C#:
[ServerEvent(Event.PlayerExitVehicle)]
public void Event_OnPlayerExitVehicle(Client player, Vehicle vehicle)
{
try
{
if (!player.HasData("CARROOMTEST")) return;
enterCarroom(player, "CARROOMTEST");
var veh = player.GetData("CARROOMTEST");
veh.Delete();
player.ResetData("CARROOMTEST");
}
catch (Exception e) { Log.Write("PlayerExitVehicle: " + e.Message, nLog.Type.Error); }
}
public static void enterCarroom(Client player, string name)
{
if (NAPI.Player.IsPlayerInAnyVehicle(player) && player.HasData("CARROOMTEST") == false) return;
Main.Players[player].ExteriorPos = player.Position;
NAPI.Entity.SetEntityPosition(player, new Vector3(CamPosition.X, CamPosition.Y - 2, CamPosition.Z));
NAPI.Entity.SetEntityDimension(player, 1);
player.FreezePosition = true;
player.SetData("INTERACTIONCHECK", 0);
Trigger.ClientEvent(player, "carRoom");
OpenCarromMenu(player, BusinessManager.BizList[player.GetData("CARROOMID")].Type);
}
[RemoteEvent("carroomTestDrive")]
public static void RemoteEvent_carroomTestDrive(Client player, string vName, string color)
{
try
{
if (!player.HasData("CARROOMID")) return;
player.FreezePosition = false;
Trigger.ClientEvent(player, "destroyCamera");
uint mydim = (uint)(player.Value + 400);
NAPI.Entity.SetEntityDimension(player, mydim);
VehicleHash vh = (VehicleHash)NAPI.Util.GetHashKey(vName);
var veh = NAPI.Vehicle.CreateVehicle(vh, player.Position, player.Rotation.Z, 0, 0);
veh.Dimension = mydim;
veh.NumberPlate = "TESTDRIVE";
veh.PrimaryColor = 131;
veh.SecondaryColor = 131;
veh.SetData("BY", player.Name);
VehicleStreaming.SetEngineState(veh, true);
NAPI.Player.SetPlayerIntoVehicle(player, veh, -1);
player.SetData("CARROOMTEST", veh);
Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"CARROOMID - " + player.GetData("CARROOMID"), 3000);
}
catch (Exception e) { Log.Write("TestDrive: " + e.Message, nLog.Type.Error); }
2) Переходим к клиенту. В файле client_packages/cef/js/auto.js находим строчку buy: function() и ниже ее добавляем новое событие тестдрайва:
JavaScript:
testdrive: function(){ console.log('testdriveAuto');
mp.trigger('testdriveAuto');
},
3) В файле client_packages/menus.js добавляем новый клиентский эвент:
JavaScript:
mp.events.add('testdriveAuto', () => { if(new Date().getTime() - global.lastCheck < 50) return;
global.lastCheck = new Date().getTime();
global.menuClose();
global.menu.execute('auto.active=0');
mp.events.callRemote('carroomTestDrive', auto.model, auto.color);
if (auto.entity == null) return;
auto.entity.destroy();
auto.entity = null;
})
4) Переходим к визуальной части. Внимание! Если у вас кастомный интерфейс то делайте кнопки и стили под себя, ниже предоставлен код под стандартный RedAge RP.
В файле client_packages/cef/menu.html находим строчку @click="buy" (это кнопка покупки авто) ниже ее добавляем кнопку тестдрайва:
HTML:
<div @click="testdrive" class="btn testdrive">Тест-драйв</div>
5) В файле client_packages/cef/css/auto.css в самый конец добавляем стили для нашей кнопки желтого цвета:
CSS:
.auto .testdrive {
border-color: #ffdb00;
margin-bottom: 10px;
}
.auto .testdrive:hover {
background-color: #ffce00;
}
6) Готово. Чтобы изменить координаты появления машины на тестдрайве редактируйте RemoteEvent - carroomTestDrive в файле NeptuneEvo/Core/Carroom.cs
Последнее редактирование: