Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
Armor

Массив параметров

Всем привет, может кто подсказать как создать массив параметров и как к нему обращаться.
ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>> testArr = new array<ref Param4<string,ItemBase,ItemBase,ItemBase>>; - компилятор не кушает.
А обращаться я думаю надо так - testArr[idx].param1 = somestring; и тд, поправьте если я не прав.

Изменено пользователем Armor (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 1

1 В контексте миссии и вообще за пределами контекста scripts наследование классов из контекста scripts невозможно
2 504ю строку бы увидеть

 

Непонятно, что Вы хотите реализовть?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
MagicByte MagicByte MagicByte
  • 1

@Armor Какой еще ник, харе бредить. Составляй свой РПС как хочешь, хочешь прям в него клади позицию сразу.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 1

@Armor Хреново модифицируешь. Мод сделай нормальный и 4_World запихай моддед класс

 

modded PlayerBase

{

private int m_MyVar = 0;

 

int GetMyVar()

{

return m_MyVar;

}

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 1
Только что, Armor сказал:

Зачем же мне все перелопачить, если я буду использовать свой супер класс только в 1 функции, видимо я не могу понять какой то истинны, неужели если я создаю класс, который наследуется от PlayerBase, я должен заменить все PlayerBase переменные на свои?(сомнительно)

Когда игрок входит создается экземпляр PlayerBase для его перса
Ваш класс при этом просто есть и ничего не создается

Ну вот совсем

Ну и наследование за пределами контекста ваще бред

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 1

@Armor 

У тебя есть наследник, ну и хер бы с ним - это абстрактный класс какой то...

Игра то создаст PlayerBase

Ты где то в своих скриптах то что будешь делать?)

Брать и писать

MySuperPlayerBase m_MySuperPlayerBase = new .... ? - И чО?))))))

Или ты вздумал делать так

MySuperPlayerBase m_MySuperPlayerBase = PlayerBase.Cast( m_Player );

?)))))))))

И чо ты получаешь в итоге?)

Даже еслион каким то хером прокастит класс игрока в твой, то получится 2 класса одинаковых по факту, где во втором только 1 метод добавлен.

)

Какая то жуть)

 

Модди СТАНДАРТНЫЙ класс игрока, и добавляй в него СВОЙ класс, чтоб с ним работать, и уж в него суй что хочешь.

 

Пример

modded class PlayerBase

{

private ref MyPlayerBase m_MyPlayerBase = new MyPlayerBase();

 

ref MyPlayerBase GetMyPlayerBase()

{

return m_MyPlayerBase ();

}

}

 

class MyPlayerBase

{

........

}

 

Теперь спокойно обращаемся к игроку и своему классу внутри игрока, как тотак

player.GetMyPlayerBase().GetXXX();

player.GetMyPlayerBase().SetXXX( argument1 );

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 1

@Armor Модди в своем моде, миссионСервер, и не ползай в инит, и будет тебе счастие.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
9 часов назад, BorizzK сказал:

Хоть один нормальный вопрос ))))

 

Проще создать класс с переменными

Создать массив типа этого класса

Создаешь экземпляр класса, присваиваешь значения его переменным, пихаешь ссылку на него в массив и тд итп

Классика же

 

Кстати, а вики Богемии смотрели?

Да, смотрел, если имеется ввиду этот раздел https://community.bistudio.com/wiki/DayZ:Enforce_Script_Syntax, а за идею большое спасибо, опробую

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Тогда ещё вопрос, есть ли какая-нибудь функция движка, которая пробегается по всем вещам, которые имеются на сервере(лут или предметы которые выбрасывают игроки), создал небольшую пвп миссию, трупы исчезают как надо, но вот оружие остается лежать, не могу придумать как от него избавиться. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 часа назад, Armor сказал:

Тогда ещё вопрос, есть ли какая-нибудь функция движка, которая пробегается по всем вещам, которые имеются на сервере(лут или предметы которые выбрасывают игроки), создал небольшую пвп миссию, трупы исчезают как надо, но вот оружие остается лежать, не могу придумать как от него избавиться. 

А если просто прописать время жизни для каждого оружия пару минут и оно будет пропадать. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
37 минут назад, Prilip сказал:

А если просто прописать время жизни для каждого оружия пару минут и оно будет пропадать. 

Вчера пробовал в types.xml прописывать лайфтамы по 10 всем вещам и не работало, щас после твоего сообщения попробовал снова и все пропадает как надо), спасибо за совет, видимо у меня руки не из нужного места растут.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
17 минут назад, BorizzK сказал:

Хоть бы спасибо сказал жмяканьем кнопочки )))

Не получается реализовать эту идею, видимо я что то не правильно делаю.
Вот класс, который хранит массив нужных мне параметров + гуид 

class CustomPreset
{
    ref array<string> attach = new array<string>;
    string presetUids;
}

Вот я объявляю массив из объектов моего класса - ref array<ref CustomPreset> custmPreset = new array<ref CustomPreset>;
Но все равно выбивает ошибку, такую же как когда я создавал массив параметров.
image.png.d2bcb368ce67f8262a2142b0ce0ce0f2.png

Изменено пользователем Armor (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 час назад, BorizzK сказал:

Ща покажу

 

Вот класс - хранилка

 


class StoreCustomObject
{
	int 	m_ObjectId;
	string 	m_ObjectClassname;
	vector 	m_ObjectPostition;
	vector 	m_ObjectOrientation;
}


Вот мы  в рабочем классе создаем массив-ссылок на обьекты этого класса

 


class void MyClass()
{
	private ref array<ref StoreCustomObject> m_StoreCustomObjectsArray;
	private static ref StoreCustomObject m_StoreCustomObject;

	void MyClass() //Это конструктор!
    {

    	m_StoreCustomObjectsArray = new ref array<ref StoreCustomObject>;
        Init();
    }

	private void Init()
    {
		m_StoreCustomObject = new ref StoreCustomObject();
   		m_StoreCustomObject.m_ObjectId 				= 1;
		m_StoreCustomObject.m_ObjectClassname		= "ClassName1";
		m_StoreCustomObject.m_ObjectPostition		= "10 10 10";
		m_StoreCustomObject.m_ObjectOrientation		= Vector(10,10,10);
		m_StoreCustomObjectsArray.Insert(m_StoreCustomObject);

		m_StoreCustomObject = new ref StoreCustomObject();
   		m_StoreCustomObject.m_ObjectId 				= 2;
		m_StoreCustomObject.m_ObjectClassname		= "ClassName2";
		m_StoreCustomObject.m_ObjectPostition		= "10 10 10";
		m_StoreCustomObject.m_ObjectOrientation		= Vector(10,10,10);
		m_StoreCustomObjectsArray.Insert(m_StoreCustomObject);
    }
}

 

Тут доступность только в классе
 

 

ЗЫ Про ошибку выше - переменную i где-то в пределах функции обьявили 2 раза, либо в 2х разных циклах, либо где-то еще

Я в те дебри по ошибке даже не лазил, движковые правки не вношу, а за то что ты скинул спасибо, но мне вне класса этот массив нужен, а на твоем примере это не реализуемо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
Только что, BorizzK сказал:

Эт почем нереализуемо?

 


static ref array<ref StoreCustomObject> m_StoreCustomObjectsArray;
static ref StoreCustomObject m_StoreCustomObject;

class void MyClass()
{

	void MyClass() //Это конструктор!
    {

    	m_StoreCustomObjectsArray = new ref array<ref StoreCustomObject>;
        Init();
    }

	private void Init()
    {
		m_StoreCustomObject = new ref StoreCustomObject();
   		m_StoreCustomObject.m_ObjectId 				= 1;
		m_StoreCustomObject.m_ObjectClassname		= "ClassName1";
		m_StoreCustomObject.m_ObjectPostition		= "10 10 10";
		m_StoreCustomObject.m_ObjectOrientation		= Vector(10,10,10);
		m_StoreCustomObjectsArray.Insert(m_StoreCustomObject);

		m_StoreCustomObject = new ref StoreCustomObject();
   		m_StoreCustomObject.m_ObjectId 				= 2;
		m_StoreCustomObject.m_ObjectClassname		= "ClassName2";
		m_StoreCustomObject.m_ObjectPostition		= "10 10 10";
		m_StoreCustomObject.m_ObjectOrientation		= Vector(10,10,10);
		m_StoreCustomObjectsArray.Insert(m_StoreCustomObject);
    }
}

 

в не класса релазиую это, та же самая ошибка с мультиопределением)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
Только что, BorizzK сказал:

какая именно? i? i тут при чем???

В том то и дело, даже при таком создание массива ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>> testArr = new array<ref Param4<string,ItemBase,ItemBase,ItemBase>> вылетает эта ошибка. Конфликт на этапе компиляции/интерпритирования (хз как этот язык читается)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
59 минут назад, BorizzK сказал:

ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>> testArr = new ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>>;

проверил

испытал

вне класса сделал
static ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>> testArr = new ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>>;

Ваще никаких проблем - все работает

Может ли быть проблема в том, что я объявляю этот массив на стороне сервера в миссии?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 час назад, BorizzK сказал:

как где почему
 

покажи код - куски кода итд итп а то ни че го не по ня т но

 

Какой кусок кода, если после объявления массива (в начале файла) выбивает ошибку. Вот кусок кода 

ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>> testArr = new array<ref Param4<string,ItemBase,ItemBase,ItemBase>>

Я даже не использую элементы этого массива далее, просто на объявлении ошибка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 час назад, NoNameUltima сказал:

там все прально

а ты создал массив указателей. которые хз на что указывают.

Такой вариант выбивает ту же самую ошибку 

ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>> testArr = new array<ref Param4<string,ItemBase,ItemBase,ItemBase>>("",NULL,NULL,NULL);

Вот пример объявления из кода игры 

ref array<ref Param6<vector, vector, float, float, float, int>>	m_Cameras;

void CTSaveStructure()
	{
		m_Cameras	= new array<ref Param6<vector, vector, float, float, float, int>>;
	}

Разве не то же самое? Тут тоже можно сказать, что эти указатели хз на что указывают, я думаю проблема в том, что я реализую это вне класса.


Забавно что такое объявления запускается без проблем - 

ref array<ref Param6<vector, vector, float, float, float, int>>	m_Test = new array<ref Param6<vector, vector, float, float, float, int>>;

А то что я пишу выше выбивает ошибку. image.png.fde09f4ce07970bb6da2f1cdec94e925.png

Изменено пользователем Armor (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

//#include "$CurrentDir:\\mpmissions\\oksopPVPNORMdayzOffline.chernarusplus\\scripts\\CustomPreset.c"

ref array<string> redCom = new array<string>;
ref array<string> blueCom = new array<string>;
ref array<string> allPlayersGUID = new array<string>;
ref array<int> allPlayerPreset = new array<int>;
//ref array<ref Param4<string,ItemBase,ItemBase,ItemBase>> testArr = new array<ref Param4<string,ItemBase,ItemBase,ItemBase>>("",NULL,NULL,NULL);
//ref array<ref Param6<vector, vector, float, float, float, string>>	m_Cameras = new array<ref Param6<vector, vector, float, float, float, string>>;





int i=1;
int j=0;
int oldRedCom = 0;
int oldBlueCom = 0;
vector NormalizePos(vector pos)
{
	pos[1] = GetGame().SurfaceY(pos[0],pos[2]);
	return pos;
}

void autoTeam(PlayerIdentity identity)
{	
	bool flag = false;
	string m_UID = identity.GetPlainId();
	bool flag2=true;
	for (int fr=0;fr<allPlayersGUID.Count();fr++)
	{
		if ( (allPlayersGUID[fr]==m_UID) )
		{
			flag2=false;
		}
	}
	if (flag2)
	{
		allPlayersGUID.Insert(m_UID);
		allPlayerPreset.Insert(0);

	}
	for (int o=0;o<redCom.Count();o++){if (redCom[o]==m_UID) flag = true}
	for (int g=0;g<blueCom.Count();g++){if (blueCom[g]==m_UID) flag = true}
	if (flag)
	{
		Print("[PvP]:Player already exiting");
	} 
	else
	{
		if (i<=j) 
		{
			redCom.Insert(m_UID);
			Print("[PvP]:"+m_UID+" joined to Red Team");
		}
		if (i>j) 
		{
			blueCom.Insert(m_UID);
			Print("[PvP]:"+m_UID+" joined to Blue Team");
		}
		if (redCom.Count() != oldRedCom)
		{
			i++;
			oldRedCom = redCom.Count();
		} 
		if (blueCom.Count() != oldBlueCom)
		{
			j++;
			oldBlueCom = blueCom.Count();
		}
	}
}
void PPos()
{
	ref array<Man> mplayers = new array<Man>;
	GetGame().GetPlayers( mplayers );
}


void TpTrig()
{
	PlayerBase player;
	vector position_player;
	array<vector> tp_trig_points = new array<vector>;
	array<vector> tp_lopatino = new array<vector>;
	array<vector> tp_north_military = new array<vector>;
	array<vector> tp_FFA_build = new array<vector>;
	tp_trig_points = {NormalizePos("4665.784180 339.565277 10349.320313"),NormalizePos("4669.664551 339.089447 10341.631836"),"4664.572266 339.012482 10357.545898"};//coors triggers 0 -lopatino 1 -severmilitary| 2 - FFF build
	tp_lopatino = {NormalizePos("2660 0 9900"),NormalizePos("2718 0 10094")};// destination 0 - lopatino NormalizePos("3660 0 8945")
	tp_north_military = {NormalizePos("8129 0 14598"),NormalizePos("7700 0 14879")};
	tp_FFA_build = {"11420.970703 220.752304 7436.821289","11453.757813 221.184967 7437.277344","11506.560547 220.645203 7470.845215","11485.657227 220.436417 7551.281738","11437.495117 221.012390 7551.863770","11449.059570 221.459183 7475.338379","11446.963867 221.520599 7486.404297"};
	ref array<Man> players = new array<Man>;
	GetGame().GetPlayers(players);
	string m_UID;
	int rad = 2;
	int plCount = players.Count();
	int rtCount = redCom.Count();
	int blCount = blueCom.Count();
	int trigCount = tp_trig_points.Count();
	for (int n=0;n<plCount;n++)
	{
		Class.CastTo(player, players.Get(n));
		position_player	= player.GetPosition();
		for (int h=0;h<trigCount;h++)
		{
			float distToTrig = (vector.Distance(position_player, tp_trig_points[h])); // проверка на нахождение игрока в триггере
			if (distToTrig < rad )
			{
				m_UID = player.GetIdentity().GetPlainId();
				if(h==0)
				{
					for (int redP=0;redP<rtCount;redP++)
					{
						Print("[PVP] SRAVNIVAEM " +m_UID+" and "+redCom[redP]);
						if (redCom[redP] == m_UID)
						{
							Print("[PvP]: Red unit teleported");
							MesToPlayer(player,"Red unit was teleported");
							player.SetPosition(tp_lopatino[0]);
						}
					}
					for (int blueP=0;blueP<blCount;blueP++)
					{
						Print("[PVP] SRAVNIVAEM " +m_UID+" and "+blueCom[blueP]);
						if (blueCom[blueP] == m_UID)
						{
							Print("[PvP]: Blue unit teleported");
							MesToPlayer(player,"Blue unit was teleported");
							player.SetPosition(tp_lopatino[1]);
						}
					}
				}
				if(h==1)
				{
					for (int redPP=0;redPP<rtCount;redPP++)
					{
						Print("[PVP] SRAVNIVAEM " +m_UID+" and "+redCom[redPP]);
						if (redCom[redPP] == m_UID)
						{
							Print("[PvP]: Red unit teleported");
							MesToPlayer(player,"Red unit was teleported");
							player.SetPosition(tp_north_military[0]);
						}
					}
					for (int bluePP=0;bluePP<blCount;bluePP++)
					{
						Print("[PVP] SRAVNIVAEM " +m_UID+" and "+blueCom[bluePP]);
						if (blueCom[bluePP] == m_UID)
						{
							Print("[PvP]: Blue unit teleported");
							MesToPlayer(player,"Blue unit was teleported");
							player.SetPosition(tp_north_military[1]);
						}
					}
				}
				if(h==2)
				{
					int posCount = tp_FFA_build.Count();
					int randPos = Math.RandomInt(0,posCount);
					int oldRand = randPos;
					while (randPos==oldRand)
					{
						randPos = Math.RandomInt(0,posCount);
					}
					player.SetPosition(tp_FFA_build[randPos]);
				}
			}
		}
	}
}


void RandWeap(PlayerBase player,string m_UID)
{
	int rand;
	ItemBase PrimGun;
	ItemBase secGun;
	for (int rr=0;rr<allPlayersGUID.Count();rr++){
		if (allPlayersGUID[rr]==m_UID)
		{
			if (allPlayerPreset[rr]==0)
			{
				rand = Math.RandomInt(1,8);
			}
			else 
			{
				rand = allPlayerPreset[rr];
			}
			Print("[PVP]RandWeap player preset = "+ allPlayerPreset[rr] );
		}
	}
	switch(rand)
	{
		case 1:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("MP5K");
			PrimGun.GetInventory().CreateAttachment("MP5_RailHndgrd");
			PrimGun.GetInventory().CreateAttachment("MP5k_StockBttstck");
			PrimGun.GetInventory().CreateAttachment("MP5_Compensator");
			PrimGun.GetInventory().CreateAttachment("BUISOptic");
			player.GetHumanInventory().CreateInInventory("ACOGOptic");
			addMagazines(player,"Mag_MP5_30Rnd",7);
			break;
		}
		case 2:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("M4A1");
			PrimGun.GetInventory().CreateAttachment("M4_RISHndgrd");
			PrimGun.GetInventory().CreateAttachment("M4_CQBBttstck");
			PrimGun.GetInventory().CreateAttachment("BUISOptic");
			player.GetHumanInventory().CreateInInventory("ACOGOptic");
			addMagazines(player,"Mag_STANAG_30Rnd",7);
			break;
		}
		case 3:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("akm");
			PrimGun.GetInventory().CreateAttachment("AK_RailHndgrd");
			PrimGun.GetInventory().CreateAttachment("AK_PlasticBttstck");
			PrimGun.GetInventory().CreateAttachment("weaponMuzzleAK");
			player.GetHumanInventory().CreateInInventory("PSO1Optic");
			addMagazines(player,"Mag_AKM_30Rnd",7);
			break;
		}
		case 4:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("VSS");
			PrimGun.GetInventory().CreateAttachment("KashtanOptic");
			player.GetHumanInventory().CreateInInventory("PSO1Optic");
			addMagazines(player,"Mag_VSS_10Rnd",10);
			player.GetHumanInventory().CreateInInventory("Ammo_9x39");
			player.GetHumanInventory().CreateInInventory("Ammo_9x39");
			break;
		}
		case 5:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("svd");
			PrimGun.GetInventory().CreateAttachment("PSO1Optic");
			player.GetHumanInventory().CreateInInventory("Ammo_762x54");
			addMagazines(player,"Mag_SVD_10Rnd",7);
			secGun = player.GetHumanInventory().CreateInInventory("CZ75");
			addMagazines(player,"Mag_CZ75_15Rnd",5);
			break;
		}
		case 6:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("Winchester70");
			PrimGun.GetInventory().CreateAttachment("HuntingOptic");
			addMagazines(player,"Ammo_308Win",7);
			secGun = player.GetHumanInventory().CreateInInventory("CZ75");
			addMagazines(player,"Mag_CZ75_15Rnd",5);
			break;
		}
		case 7:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("AK74");
			PrimGun.GetInventory().CreateAttachment("AK74_WoodBttstck");
			PrimGun.GetInventory().CreateAttachment("AK74_Hndgrd");
			PrimGun.GetInventory().CreateInInventory("PSO1Optic");
			addMagazines(player,"Mag_AK74_30Rnd_Black",7);
			break;
		}
		case 8:
		{
			PrimGun = player.GetHumanInventory().CreateInHands("B95");
			PrimGun.GetInventory().CreateAttachment("HuntingOptic");
			addMagazines(player,"Ammo_308Win",7);
			secGun = player.GetHumanInventory().CreateInInventory("CZ75");
			addMagazines(player,"Mag_CZ75_15Rnd",5);
			break;
		}
	}
	ItemBase med;
	player.SetQuickBarEntityShortcut(secGun,1);
	player.SetQuickBarEntityShortcut(PrimGun,0);
	med = player.GetHumanInventory().CreateInInventory("Morphine");
	player.SetQuickBarEntityShortcut(med,3);
	med = player.GetHumanInventory().CreateInInventory("BandageDressing");
	player.GetHumanInventory().CreateInInventory("BandageDressing");
	player.SetQuickBarEntityShortcut(med,4);
	med = player.GetHumanInventory().CreateInInventory("Epinephrine");
	med = player.GetHumanInventory().CreateInInventory("Epinephrine");
	player.SetQuickBarEntityShortcut(med,5);
}

void addMagazines(PlayerBase player,string mag_type,int count)
{
	for(int mag=0;mag<count;mag++)
	{
		player.GetHumanInventory().CreateInInventory(mag_type);
	}
}
void MesToPlayer(PlayerBase player,string message)
{
	Param1<string> m_AirTimer = new Param1<string>(message);
	GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_AirTimer, true, player.GetIdentity());
}
void gear(PlayerBase player,int preset)
{
	switch(preset)
	{
		case 0:
			string itemWep = player.GetHumanInventory().GetEntityInHands().GetType();
			switch(itemWep)
			{
				case "MP5K":
					addMagazines(player,"Mag_MP5_30Rnd",7);
					break;
				case "M4A1":
					addMagazines(player,"Mag_STANAG_30Rnd",7);
					break;
				case "AKM":
					addMagazines(player,"Mag_AKM_30Rnd",7);
					break;
				case "VSS":
					addMagazines(player,"Mag_VSS_10Rnd",10);
					break;
				case "SVD":
					addMagazines(player,"Mag_SVD_10Rnd",7);
					break;
				case "Winchester70":
					addMagazines(player,"Ammo_308Win",7);
					break;
				case "AK74":
					addMagazines(player,"Mag_AK74_30Rnd_Black",7);
					break;
				case "B95":
					addMagazines(player,"Ammo_308Win",7);
					break;
			}
			break;
		case 1:
			addMagazines(player,"Mag_MP5_30Rnd",7);
			break;
		case 2:
			addMagazines(player,"Mag_STANAG_30Rnd",7);
			break;
		case 3:
			addMagazines(player,"Mag_AKM_30Rnd",7);
			break;
		case 4:
			addMagazines(player,"Mag_VSS_10Rnd",10);
			break;
		case 5:
			addMagazines(player,"Mag_SVD_10Rnd",7);
			break;
		case 6:
			addMagazines(player,"Ammo_308Win",7);
			break;
		case 7:
			addMagazines(player,"Mag_AK74_30Rnd_Black",7);
			break;
		case 8:
			addMagazines(player,"Ammo_308Win",7);
			break;
		default:
			MesToPlayer(player,"Wrong preset settings");
			break;
	}
	ItemBase med;
	med = player.GetHumanInventory().CreateInInventory("Morphine");
	player.GetHumanInventory().CreateInInventory("Morphine");
	player.SetQuickBarEntityShortcut(med,3);
	med = player.GetHumanInventory().CreateInInventory("BandageDressing");
	player.GetHumanInventory().CreateInInventory("BandageDressing");
	player.SetQuickBarEntityShortcut(med,4);
	med = player.GetHumanInventory().CreateInInventory("Epinephrine");
	med = player.GetHumanInventory().CreateInInventory("Epinephrine");
	player.SetQuickBarEntityShortcut(med,5);
}


void forceVomit(string p_name)
{
	array<Man> players = new array<Man>;
	PlayerBase player;
	GetGame().GetPlayers( players );
	int ppCount = players.Count();
	for (int vp=0;vp<ppCount;vp++)
	{
		Class.CastTo(player, players.Get(vp));
		if (player.GetIdentity().GetName() == p_name)
		{
			SymptomBase symptom = player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_VOMIT);
			if (symptom)
			{
				symptom.SetDuration(Math.RandomIntInclusive(4,8));
			}
		}
	}
}

void tpTotal(PlayerBase player, string target1, string tp_type, string target2="", string target3="")
{
	array<Man> players = new array<Man>;
	GetGame().GetPlayers( players );
	int ppCount = players.Count();
	for (int vp=0;vp<ppCount;vp++)
	{
		if (tp_type == "tpa")
		{
			players[vp].SetPosition(player.GetPosition());
		}
		if (tp_type == "tpto")
		{
			if (players[vp].GetIdentity().GetName() == target1)
			{
				player.SetPosition(players[vp].GetPosition());
			}
		}
		if (tp_type == "tptome")
		{
			if (players[vp].GetIdentity().GetName() == target1)
			{
				players[vp].SetPosition(player.GetPosition());
			}
		}
		if (tp_type == "tploc")
		{
			string totalPos = target1+ " "+target2+" "+target3;
			vector tp_pos = totalPos.ToVector();
			player.SetPosition(NormalizePos(tp_pos));
		}
	}
}
void loc(PlayerBase player)
{
	Print("[PVP] Player loc "+player.GetPosition());
}
void list(PlayerBase player)
{
	array<Man> players = new array<Man>;
	GetGame().GetPlayers( players );
	for (int x=0;x<players.Count();x++)
	{
		MesToPlayer(player,players[x].GetIdentity().GetName());
	}
}
void spawn(PlayerBase player,string className)
{
	vector pos = player.GetPosition();
	pos[0] = pos[0] + 2;
	switch(className)
	{
		case "zombie":
			className = "ZmbF_BlueCollarFat_Green";
			GetGame().CreateObject(className,pos,false,true,true);
			break;
		case "car":
			Car vehicle = GetGame().CreateObject("OffroadHatchback",pos,false,true,true);
			vehicle.Fill(CarFluid.FUEL,1000);
			vehicle.Fill(CarFluid.OIL,1000);
			vehicle.Fill(CarFluid.COOLANT,1000);
			vehicle.GetInventory().CreateAttachment("HatchbackWheel");
			vehicle.GetInventory().CreateAttachment("HatchbackWheel");
			vehicle.GetInventory().CreateAttachment("HatchbackWheel");
			vehicle.GetInventory().CreateAttachment("HatchbackWheel");
			vehicle.GetInventory().CreateAttachment("HatchbackWheel");
			vehicle.GetInventory().CreateAttachment("HeadlightH7");
			vehicle.GetInventory().CreateAttachment("HeadlightH7");
			vehicle.GetInventory().CreateAttachment("HatchbackDoors_CoDriver");
			vehicle.GetInventory().CreateAttachment("HatchbackDoors_Driver");
			vehicle.GetInventory().CreateAttachment("SparkPlug");
			vehicle.GetInventory().CreateAttachment("CarBattery");
			vehicle.GetInventory().CreateAttachment("CarRadiator");
			vehicle.GetInventory().CreateAttachment("CarDoor");
			vehicle.GetInventory().CreateAttachment("CarDoor");
			break;
		default:
			GetGame().CreateObject(className,pos,false,true,true);
			break;
	}
	//GetGame().CreateObject(className,pos,false,true,true);

}

void changeTeam(PlayerBase player)
{
	string m_UID = player.GetIdentity().GetPlainId();
	Print("[PVP]Player "+m_UID+" try to change team");
	int redPlCount = redCom.Count();
	int bluePlCount = blueCom.Count();
	for (int redPP=0;redPP<redPlCount;redPP++)
	{
		if (redCom[redPP]==m_UID)
		{
			MesToPlayer(player,"You change red team to blue");
			redCom.Remove(redPP);
			blueCom.Insert(m_UID);
		}
	}
	for (int bluePP=0;bluePP<bluePlCount;bluePP++)
	{
		if (blueCom[bluePP]==m_UID)
		{
			MesToPlayer(player,"You change blue team to red");
			blueCom.Remove(bluePP);
			redCom.Insert(m_UID);
		}
	}
}


//Position <-84.790596, 115.954567, 4948.598633> - SPAWN POS
//Position <-68.514771, 116.096153, 4971.033691> - ONE TELEPORT to --- "Land_Wall_Gate_Camp"
//Position <-61.109070, 115.471375, 4954.499023> - Second TELEPORT to --- "Land_Ladder",
/*
vector redSpawn = "2660 0 9900"; //lopatino
redSpawn[1] = GetGame().SurfaceY( redSpawn[0], redSpawn[2] );
vector blueSpawn = "3660 0 8945"; // vybor
blueSpawn[1] = GetGame().SurfaceY( blueSpawn[0], blueSpawn[2] );
*/

Находится в папке dayzserver/mpmissions/миссия/scripts/файл, подключается в init.c

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Изменено пользователем Armor (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
3 минуты назад, NoNameUltima сказал:

шо серьезно такой путь?)

 

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.


Только 4 дня изучаю скриптинг в дейзе), но уже начал заниматься изучением RPC, а пока все выполняется на сервере)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
5 минут назад, BorizzK сказал:

Возможно

но при чем тут Enscript.c ?

 

какое-то странное поведение компилятора

 

думал что из-за пропущенного ref

нифига

так тож прокатило

 

да и в жопу все эти парамы

делай свой класс / классы и храни в его экземплярах что и как угодно

 

 

 

 

Да я хочу перебраться с init.с на свой мод но некоторых вещей ещё не понимаю, вот и приходится изгаляться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
1 минуту назад, BorizzK сказал:

да можно и не перебираться в принципе если кроме моддинга миссии ничего не надо

Ну я по своей реализации сужу, думаю для сервера будет гораздо лучше, если какие то действия будут выполняться на машинах клиента и отправляться на сервер с помощью RPC, чем сервер сам будет все обрабатывать. Я сделал реализацию функций через чат и если человек что-то пишет, на сервере я не могу сразу определить, кто именно ввел команду, приходиться перебирать каждого игрока в цикле и сравнивать параметры, из-за этого алгоритмы выходят очень жадными.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 минуты назад, BorizzK сказал:

Смотрю я на твой код и думаю

А нахрена ты все ВНЕ классово сделал?

Сделать свой класс религия не позволяет?

С классом у меня проблемы, вот допустим я в папке миссии создаю класс, который наследуется от PlayerBase, но при объявлении экземпляра класса мне говорят что image.png.a9b3e65f5d0f999e60665b13c81ea8b3.png
 

Сам класс -

class OksopPl: PlayerBase
{
    private int m_healCount = 2;

    void decHealCount()
    {
        this.m_healCount--
    }
    int getHealCount()
    {
        return m_healCount;
    }
}

Объявление - 

OksopPl m_player = new OksopPl;

Я не могу понять почему он вдруг private, пробовал в мод запаковывать этот класс (создавал его в 4_World), та же самая ошибка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
2 минуты назад, NoNameUltima сказал:

@Armor Во 1. Есть класс чата на клиенте, и уж если ты через свой RPC делаешь, то что мешает в данные RCP вставить UID игрока(или NetId, или сам Объект)? Во 2. На сервере ВРОДЕ как тоже естьобработчик чата в котором уже есть отправивший(но он от патча к патчу ломается)

 

Там есть лишь ник, а мне требуется позиция человека, который пишет команды в чат в общем массиве игроков, вот и приходиться пробегаться по всем пока не найду

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
3 минуты назад, NoNameUltima сказал:

@Armor Ну и нахрена ж тебе НАСЛЕДНИЙ playerBase?) как ты его собрался использовать?) Чем же тебя не устроил modded?

Я его наследовал, чтобы сохранить все свойства и методы PlayerBase, но и внести некоторые свои, а если я его модифицирую, то сервер его попросту не видит.
image.png.49f463a847711b47b0f92d617ae3cf6f.png

Изменено пользователем Armor (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.

Поддержка