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
NoNameUltima
Тема не новая, но однообразные вопросы, возникают постоянно и у многих.
Записал коротенькое, и надеюсь понятное видео по теме.
-
By BorizzK
//Функция создания зданий/обьектов BORIZZ.K //Не поставит здание/обьект там где оно уже есть в радиусе 10м!!! //параметры вызова //НазваниеКласса, координаты, коррекция высоты (добавляется к высоте если > 0 - можно поставить здание на здание/поверхность выше земли или повесить в воздухе), Ориентация, Направление. int SpawnBuilding(string m_Building_Class, vector spawn_Point, float alt_Correct, vector spawn_Orient, vector spawn_Dir) //Спавн { Print("::: SpawnBuilding ::: SpawnBuilding(m_Building_Class = " + m_Building_Class + ", spawn_Point = " + spawn_Point.ToString() + ", alt_Correct = " + alt_Correct + ", spawn_Orient = " + spawn_Orient + ", spawn_Dir = " + spawn_Dir + ") :::"); array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; string className; Object object; float radius = 10; Object m_Building; int n_Building_Count = 0; spawn_Point[1] = GetGame().SurfaceY( spawn_Point[0], spawn_Point[2] ); if (alt_Correct > 0) { spawn_Point[1] = spawn_Point[1] + alt_Correct; } GetGame().GetObjectsAtPosition(spawn_Point, radius, nearest_objects, proxy_cargos); Print("::: SpawnBuilding ::: 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 == m_Building_Class ) { Print("::: SpawnBuilding ::: Found object: " + object.ToString() + ", className: " + className + ", Position: " + object.GetPosition() + " : Spawn " + m_Building_Class + " cancelled. ::: "); return 0; } } m_Building = GetGame().CreateObject( m_Building_Class, spawn_Point, false, true ); //m_Building.PlaceOnSurface(); if ( spawn_Orient[0] == 0 && spawn_Orient[1] == 0 && spawn_Orient[2] == 0) { m_Building.SetOrientation(m_Building.GetOrientation()); } else { m_Building.SetOrientation(spawn_Orient); } if ( spawn_Dir[0] == 0 && spawn_Dir[1] == 0 && spawn_Dir[2] == 0) { m_Building.SetDirection(m_Building.GetDirection()); } else { m_Building.SetDirection(spawn_Dir); } if (m_Building) { Print("::: SpawnBuilding ::: Result: Object: " + m_Building.ToString() + ", spawn_Point = " + m_Building.GetPosition().ToString() + ", alt_Correct = " + alt_Correct + ", spawn_Orient = " + m_Building.GetOrientation().ToString() + ", spawn_Dir = " + m_Building.GetDirection().ToString() + ") :::"); return 1; } else { Print("::: SpawnBuilding ::: Result: create object error. :::"); } return 0; } void SpawnBuildings() { int Buildings_Count; // пример Buildings_Count = SpawnBuilding("Land_City_FireStation", "6275 0 8013" , 0, "0 0 0", "0 0 40"); // Buildings_Count будет = 0 если здание не поставлено, 1 если поставлено } Простой способ установки
Вставить в init.c (ВНЕ КЛАССА!)
Вызывать в конце main()
вот так
SpawnBuildings();
в функции SpawnBuildings() по примеру (там есть) прописываем какие здания куда, какая ориентация/и или направление
-
By CPUblackman
Всем доброго времени суток, назрел вопрос который сам решить не в состоянии. В общем понадобился скрипт на спавн техники с записью в БД, решил переделать под это дело скрипт из инфика или ваи, ни то ни другое результатов не дало, техника спавнится, в БД её нет. Я уверен что сотворил сказочную ересь, но где именно в упор не вижу. Скрипт исполняется с сервера, так что в чём проблема не понимаю и прошу помощи.
_veh = "M1A1" createVehicle position player;
_veh setVariable ["ObjectID","1",true];
_keyid = ceil(random(12500));
_veh setVariable ["CharacterID",str(_keyid),true];
_class = typeOf _veh;
_characterID = _veh getVariable ["CharacterID", "0"];
_worldspace = [getDir _veh, getPosATL _veh];
_hitpoints = _veh call vehicle_getHitpoints;
_damage = damage _veh;
_array = [];
{
_hit = [_veh,_x] call object_getHit;
_selection = getText (configFile >> "CfgVehicles" >> (typeOf _veh) >> "HitPoints" >> _x >> "name");
if (_hit > 0) then {_array set [count _array,[_selection,_hit]]};
} count _hitpoints;
_inventory = [
getWeaponCargo _veh,
getMagazineCargo _veh,
getBackpackCargo _veh
];
_fuel = fuel _veh;
_uid = _worldspace call dayz_objectUID2;
_key = format["CHILD:308:%1:%2:%3:%4:%5:%6:%7:%8:%9:",dayZ_instance,_class,_damage,_characterID,_worldspace,_inventory,_array,_fuel,_uid];
_key call server_hiveWrite;
[_veh,_uid,_fuel,_damage,_array,_characterID,_class] spawn {
private ["_veh","_uid","_fuel","_damage","_array","_characterID","_done","_retry","_key","_result","_outcome","_oid","_class","_res"];
_veh = _this select 0;
_uid = _this select 1;
_fuel = _this select 2;
_damage = _this select 3;
_array = _this select 4;
_characterID = _this select 5;
_class = _this select 6;
_done = false;
//ЧЁТО СТРАННОЕ
while {!_done} do {
_key = format["CHILD:388:%1:",_uid];
_result = _key call server_hiveReadWrite;
_outcome = _result select 0;
waitUntil {!isNil "_outcome"};
if(_outcome == "PASS") then {
_oid = _result select 1;
_veh setVariable ["ObjectID", _oid, true];
_done = true;
} else {
_done = false;
};
};
sleep 0.2;
_veh setVariable ["lastUpdate",time];
};
-
By WiSTeR
пробовал по этой теме, не получилось, помогите кто нибудь, подскажите как поставить сервер на последнюю версию DayZ Epoch
-
-
Our picks
В общем продолжаю работу над модом, и снова столкнулся с проблемой перенесения созданного и оттестированого в редакторе на мультиплеер =(
В общем суть в том что создается юнит и ему вешается диалог через kbAddTopic то же самое на игрока. Ну вернее на юнита вешается *.bikb и fsm'ка обработчик а на игрока та же *.bikb и компилируется event_handler. В редакторе все просто - подходим к нпц на скроле появляется диалог, при выборе определенного пункта происходит какое то действие - получаем задание какое то например.
С бисовского сайта, описание kbAddTopic (special for NoNameUltima =) ):
В мультиплеере пробовал несколько вариантов:
Создаем юнита на стороне сервера в mission.sqf вешаем на него глобальную переменную.
По принципу подключения ботов - подключаем скрипт в server_monitor там где на глобальную переменную коей является наш юнит вешаем kbAddTopic.
Дальше идут различия:
в первом варианте: в скрипте который вызывается из server_monitor делаем проверку на наличие рядом игроков и потом в цикле форич вешаем им kbAddTopic. В результате ничего не работает =(
во втором варианте пробовал ставить по позиции НПЦ тригер который при активации вешает на игрока его активировавшего kbAddTopic. В результате так же ничего не работает. При чем пробовал в скрипт который я компилирую в kbAddTopic ставить хинт - не хинтит.
Вот и задаюсь вопросом кто то вообще замарачивался созданием диалогов по средством kbAddTopic в мультиплеере? Я понимаю конечно то можно все это сделать с кучей проверок через addaction но это все писать же с нуля снова =( Или там переработать скрипт торговцев под нпц но хотелось бы уже через kbAddTopic если он вообще в мультике работает.
Написал все на словах по сколько нет скриптов под рукой, попробую примерно накидать от руки:
mission.sqf:
server_monitor:
npc.sqf (1 вариант):
может что то не совсем так написал, пишу по памяти
npc.sqf (2 вариант):
во втором варианте по координатам спауна нпц в mission.sqm вешается триггер где при активации происходит
при деактивации
Ну плюс хинтов раскидал для проверки, по хинтам все должно работать, все скрипті все правильно хинтит, единственное что kbAddtopic не работает.
Edited by ka3ant1p (see edit history)В общем как то так =(
Share this post
Link to post
Share on other sites