Harland David Sanders
Куратор портала
Автор темы
Команда форума
Куратор портала
VIP
high coder
media
- 10 Сен 2020
- 2,432
- 1,678
- 199
В данном мануале мы установим систему тест-драйва для автосалона в мод RedAge RolePlay (NeptuneEvo).
Если у Вас возникли проблемы с этой системой или просто что-то не получается - пишите в эту тему, постараюсь помочь.
Тест-драйв проходит в другом измерении (dimension), прерывается при выходе из машины.
В файле NeptuneEvo/Core/Carroom.cs добавляем два новых серверных эвента (в пустое место, можете добавить рядом с другими похожими строчками):
Внимание! Один эвент enterCarroom уже есть в RedAge RP, вам необходимо его заменить на новый, старый удалить.
Переходим к клиенту. В файле client_packages/cef/js/auto.js находим строчку buy: function() и ниже ее добавляем новое событие тестдрайва:
В файле client_packages/menus.js добавляем новый клиентский эвент:
Переходим к визуальной части. Внимание! Если у вас кастомный интерфейс то делайте кнопки и стили под себя, ниже предоставлен код под стандартный RedAge RP.
В файле client_packages/cef/menu.html находим строчку @click="buy" (это кнопка покупки авто) ниже ее добавляем кнопку тестдрайва:
В файле client_packages/cef/css/auto.css в самый конец добавляем стили для нашей кнопки желтого цвета:
Готово. Чтобы изменить координаты появления машины на тестдрайве редактируйте RemoteEvent - carroomTestDrive в файле NeptuneEvo/Core/Carroom.cs
находим строку:
меняем на:
Если у Вас возникли проблемы с этой системой или просто что-то не получается - пишите в эту тему, постараюсь помочь.
Тест-драйв проходит в другом измерении (dimension), прерывается при выходе из машины.
В файле 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);
}
}
Переходим к клиенту. В файле client_packages/cef/js/auto.js находим строчку buy: function() и ниже ее добавляем новое событие тестдрайва:
JavaScript:
testdrive: function() {
console.log('testdriveAuto');
mp.trigger('testdriveAuto');
},
В файле 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;
})
Переходим к визуальной части. Внимание! Если у вас кастомный интерфейс то делайте кнопки и стили под себя, ниже предоставлен код под стандартный RedAge RP.
В файле client_packages/cef/menu.html находим строчку @click="buy" (это кнопка покупки авто) ниже ее добавляем кнопку тестдрайва:
HTML:
<div @click="testdrive" class="btn testdrive">Тест-драйв</div>
В файле client_packages/cef/css/auto.css в самый конец добавляем стили для нашей кнопки желтого цвета:
CSS:
.auto .testdrive { border-color: #ffdb00; margin-bottom: 10px; } .auto .testdrive:hover { background-color: #ffce00; }
Готово. Чтобы изменить координаты появления машины на тестдрайве редактируйте RemoteEvent - carroomTestDrive в файле NeptuneEvo/Core/Carroom.cs
находим строку:
C#:
var veh = NAPI.Vehicle.CreateVehicle(vh, player.Position, player.Rotation.Z, 0, 0);
меняем на:
C#:
var veh = NAPI.Vehicle.CreateVehicle(vh, new Vector3(-18.867155, -1109.2737, 26.70288), player.Rotation.Z, 0, 0);
Последнее редактирование: