Need help?
Create a topic in the appropriate section
Don't write everything in the chat!Take a look at the marketplace
There you can buy
everything related to game serversDon't want a ban?
Please read our rules
Don't disturb the order!Sell or buy?
Use services of the guarantor
We will make your deal safe
- 0
-
Similar Content
-
By Sancezz063
Пропадают машины, люди говорят до рестарта оставляют машину, а после она просто пропадает, может ли на это влиять админка ?
Машины пропадают которые собирают на сервере
-
By BorizzK
//AUTHOR: BORIZZ.K //Version 20.12.2018.0011 void PlaceAllCarsToGround() { array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; Object object; string className; int objectcount = 0; vector mapcenter = "7500 0 7500"; int radius = 20000; vector foundcar_pos; mapcenter[1] = GetGame().SurfaceY( mapcenter[0], mapcenter[2] ); GetGame().GetObjectsAtPosition(mapcenter, radius, nearest_objects, proxy_cargos); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if ( GetGame().IsKindOf(className, "Car" ) ) //if ( className == "OffroadHatchback" || className == "V3SVehicle" || className == "V3SChassis" || className == "CivilianSedan") { EntityAI objectEnt = EntityAI.Cast(object); if (objectEnt) { foundcar_pos = objectEnt.GetPosition(); Print("::: PlaceAllCarsToGround() ::: Found car: " + className + ", objectEnt: " + objectEnt + ", Position: " + foundcar_pos.ToString() + ", SurfaceGetNormal: " + GetGame().SurfaceGetNormal(foundcar_pos[0], foundcar_pos[2]).ToString()); //Check surface under car /* string surface_type; int liquidType; GetGame().SurfaceUnderObject(object, surface_type, liquidType); Print("::: PlaceAllCarsToGround() ::: Found car: " + className + ", objectEnt: " + objectEnt + ", surface_type: " + surface_type + ", liquidType: " + liquidType); */ if ( foundcar_pos[1] < (GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2])) - 0.1 || foundcar_pos[1] > (GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2])) + 0.1 ) { foundcar_pos[1] = GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2]); objectEnt.SetPosition(foundcar_pos); objectEnt.SetOrientation(objectEnt .GetOrientation()); objectEnt.SetDirection(objectEnt .GetDirection()); Print("::: PlaceAllCarsToGround() ::: Position changed for car : " + className + ", objectEnt: " + objectEnt + ", Position: " + foundcar_pos.ToString()); } else { Print("::: PlaceAllCarsToGround() ::: No position change required for car : " + className + ", objectEnt: " + objectEnt); } } } } } Добавить код в init.c (ВНЕ КЛАССА)
Вызывать в конце функции main()
Просто вставив в конце
PlaceAllCarsToGround();
P.S. Поправил код, + учел рекомендации Ультимы
У меня на сервере с машинами все ок
-
By BorizzK
Накрапал функций (по мотивам того что делали для 0.62 когда-то)
Проверяем сколько машин на сервере (кстати, кому известны координаты центра Черноруси и макс полезный радиус от центра где могут располагаться объекты?)
Если машин данного типа достаточно на карте, не спавним
Если не хватает, перед спавном проверяем нет ли машины рядом (что бы не заспавнить внутрь другой)
Если все норм, спавним
int CheckNearObjects(vector pos, int radius, string objectClass) //Проверка обьектов поблизости { array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; Object object; string className; int objectcount = 0; GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); Print("::: SpawnCars.c ::: CheckNearObjects (EntityAI m_Object, int radius) ::: Radius: " + radius.ToString() + ", all nearest_objects: " + nearest_objects.Count().ToString()); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if ( className == objectClass ) { objectcount++; Print( "::: SpawnCars.c ::: CheckNearestObjects: found object " + objectcount.ToString() + ": " + object.ToString() + ", Type/Class: " + className + " !!!"); } } return objectcount; } int SpawnCar(string m_Car_Class, TVectorArray spawn_Points, int max_Car_Count, float min_Car_Health, float max_Car_Health, bool damageallow) //Спавн машины по заданным параметрам { Print("::: SpawnCars.c ::: SpawnCar(" + m_Car_Class + ", " + spawn_Points.ToString() + ") :::"); vector m_Car_Pos; EntityAI m_Car; int n_Car_Count = 0; int all_Car_Count = 0; int s_Car_Count = 0; array<string> m_Car_Equip_Array = new array<string>; if (m_Car_Class == "OffroadHatchback") { /* Так то же можно m_Car_Equip_Array.Insert("HatchbackWheel"); m_Car_Equip_Array.Insert("HatchbackWheel"); m_Car_Equip_Array.Insert("HatchbackWheel"); m_Car_Equip_Array.Insert("HatchbackWheel"); m_Car_Equip_Array.Insert("CarBattery"); m_Car_Equip_Array.Insert("SparkPlug"); m_Car_Equip_Array.Insert("EngineBelt"); m_Car_Equip_Array.Insert("CarRadiator"); m_Car_Equip_Array.Insert("HatchbackDoors_Driver"); m_Car_Equip_Array.Insert("HatchbackDoors_CoDriver"); m_Car_Equip_Array.Insert("HatchbackHood"); m_Car_Equip_Array.Insert("HatchbackTrunk"); */ //И так можно m_Car_Equip_Array = {"HatchbackWheel","HatchbackWheel","HatchbackWheel","HatchbackWheel","CarBattery","SparkPlug","SparkPlug","EngineBelt","CarRadiator","HatchbackDoors_Driver","HatchbackDoors_CoDriver","HatchbackHood","HatchbackTrunk"}; //Проверяем m_Car_Equip_Array.Debug(); } /* else if (m_Car_Class == "M3S") { //Тут заполняем массив комплектующими M3S } */ else { Print("::: SpawnCars.c ::: SpawnCar() ::: NO CAR / WRONG CLASS SPECIFIED :::"); return s_Car_Count; } all_Car_Count = CheckNearObjects("7000 0 7000", 20000, m_Car_Class); //Можно отключить если сервер глючит при старте, тогда присовойте all_Car_Count значение - all_Car_Count = 1; (см ниже) //all_Car_Count = 1; for ( int i = 0; i < spawn_Points.Count(); i++ ) { m_Car_Pos = spawn_Points.Get(i); n_Car_Count = CheckNearObjects(m_Car_Pos, 10, m_Car_Class); Print("::: SpawnCars.c ::: n_Car_Count = " + n_Car_Count.ToString()); if (s_Car_Count + all_Car_Count < max_Car_Count) { if (n_Car_Count < 1) { m_Car = EntityAI.Cast(GetGame().CreateObject(m_Car_Class, m_Car_Pos, false, true)); for ( int e = 0; e < m_Car_Equip_Array.Count(); e++ ) { m_Car.GetInventory().CreateAttachment( m_Car_Equip_Array.Get(e) ); } m_Car.SetAllowDamage(damageallow); m_Car.SetHealth("","",Math.RandomInt(min_Car_Health,max_Car_Health)); Print("::: SpawnCars.c ::: Spawned car: " + m_Car.ToString() + ", Position: " + m_Car.GetPosition().ToString()); if (m_Car) { s_Car_Count++; } } else { Print("::: SpawnCars.c ::: Car spawn not allowed at position: " + m_Car_Pos.ToString() + ", becouse nearest car with same class " + m_Car_Class + " found."); } } else { Print("::: SpawnCars.c ::: Car spawn not allowed becouse cars with same class " + m_Car_Class + " >= " + max_Car_Count.ToString()); } } return s_Car_Count; }
Подключение
Правим по своему вкусу
Помещаем код в файл и размещаем в папке доступной серверу
В самом начале init.c
#include "$CurrentDir:\\путь\\путь\\имя файла с кодом.c
Далее в функции main вызываем спавн
TVectorArray spawn_Points_Niva = {"6063 0 7871"}; //array with positions, for more cars write more positios in to array int SpawnCarsCarsCount = SpawnCar("OffroadHatchback", spawn_Points_Niva, 32, 100, 100, false); //Class, Positions, Max count, min health, max health, damage allow - true/false Print("::: SpawnCars.c ::: SpawnCars() ::: Spawned cars: " + SpawnCarsCarsCount.ToString()); //это просто каммент
Или просто
int SpawnCarsCarsCount;
SpawnCarsCarsCount = SpawnCar("M3S", {"6000 0 6000", "7000 0 8000"}, 44, 100, 100, false);
Но для M3S нужно прописать комплектуху в SpawnCar() в массив m_Car_Equip_Array
Ну вобщем разберетесь )))
Добавлено:
Альтернативный вариант от комьюнити:
-
By petpoleoo
Всем добрый день уважаемые знатоки,есть проблема которую самостоятельно решить не могу,в интернете информации нет,здесь не нашёл,хотелось бы провести людям аукцион техники,но проблема в том что с инфистара техника в аренде,просто не имею понятия как это сделать,помогите кто знает.
-
By Evgen66
Добрый день.
Ребят, подскажите кто знает как правильно написать скрипт машины в магазине, если она в моде имеет несколько цветов.
Машины вот такие
"R35lu_civ"; "R35lu_civ_rouge"; "R35lu_civ_bleu"; "R35lu_civ_noir"; "R35lu_civ_gris"; "R35lu_civ_yellow"; Правильным ли будет если я сделаю вот это таким образом ?
class R35lu_civ { vItemSpace = 50; conditions = ""; price = 75000; textures[] = {}; materials[] = {"rouge","bleu","noir","gris","yellow"}; };
и ещё, объсните пожалуйста, для чего тут нужна наследственность ? "class ext_ivory_isf_police: ext_ivory_rs4_police { price = 25000; };
class ext_ivory_rs4_police { vItemSpace = 50; conditions = ""; price = 25000; textures[] = {}; materials[] = {"glossy","matte","metallic","chrome"}; }; class ext_ivory_isf_police: ext_ivory_rs4_police { price = 25000; }; class ext_ivory_m3_police: ext_ivory_rs4_police { price = 25000; }; class ext_ivory_evox_police: ext_ivory_rs4_police { price = 23000; };
-
-
Our picks
Ребят, подскажите, можно ли добавить цвета/текстуры на автомобили, чтобы при покупке выбирать?
вот кусок кода Config_Vehicles.hpp... в нем две телеги, у первой есть цвета (так и не понял, откуда они тянутся), у второй - нет. есть варианты реализации?
class madsa_hummer_h2 { realname="Hummer H2"; buyPrice=344000; inventory=85; side="CIV"; insurance=0; disableOwnerInfos=1; licenses[]={"rebelle_1"}; fuel="SP95"; fuelCapacity=121; colors[]= { "madsa_hummer_h2_black_F", "madsa_hummer_h2_blue_F", "madsa_hummer_h2_gold_F", "madsa_hummer_h2_green_F", "madsa_hummer_h2_pink_F", "madsa_hummer_h2_purple_F", "madsa_hummer_h2_red_F", "madsa_hummer_h2_silver_F", "madsa_hummer_h2_white_F", "madsa_hummer_h2_yellow_F" }; }; class madsa_hummer_h2_black_F: madsa_hummer_h2 {}; class madsa_hummer_h2_blue_F: madsa_hummer_h2 {}; class madsa_hummer_h2_gold_F: madsa_hummer_h2 {}; class madsa_hummer_h2_green_F: madsa_hummer_h2 {}; class madsa_hummer_h2_pink_F: madsa_hummer_h2 {}; class madsa_hummer_h2_purple_F: madsa_hummer_h2 {}; class madsa_hummer_h2_red_F: madsa_hummer_h2 {}; class madsa_hummer_h2_silver_F: madsa_hummer_h2 {}; class madsa_hummer_h2_white_F: madsa_hummer_h2 {}; class madsa_hummer_h2_yellow_F: madsa_hummer_h2 {}; class madsa_zl1_f { realname="Chevrolet zl1f"; buyprice=260000; inventory=20; side="CIV"; insurance=1; licence[]={"driver"}; fuel="SP98"; fuelCapacity=67; colors[]={}; };
Share this post
Link to post
Share on other sites