Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • 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 servers
  • Don'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
Sign in to follow this  
Maks86

Функция с переменной player. Ошибка. Не могу исправить.

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

 

В общем у меня в файле Sets.c достаточно много строк под 2000 уже. Много чего повторяется, и это можно упростить все  с помощью функций. Я создал несколько простых функций, потом по коду их вставлял,  даже я бы сказал что это даже не функции, а больше похоже на процедуру. Экономия уже была ощутима. Все было получалось, но пока не начал создавать функции более объёмные .Щас стояла у меня задача, сделать функцию для выдачи оружия. Например...

itemCreated = player.GetHumanInventory().CreateInHands("M4A1"); 					// Выдаем M4 в руки
if (itemCreated)											// Проверяем, создалось ли оружие
{
	itemCreated.GetInventory().CreateAttachment("M4_RISHndgrd" ); 			       		// Крепим на M4 Цевье (черный)
	itemCreated.GetInventory().CreateAttachment("M4_CQBBttstck");				        // Крепим на M4 Приклад (черный)
	itemCreated.GetInventory().CreateAttachment("Mag_STANAG_60Rnd"); 			       	// Крепим на M4 Магазин 60 пат.
	if (random_top_suppressor == 1){itemCreated.GetInventory().CreateAttachment("M4_Suppressor");}	// Крепим на M4 Глушитель, если он доступен
	itemCreated.GetInventory().CreateAttachment("ACOGOptic_6x");					// Крепим на M4 Оптику ACOG 6x

	ghillie_weapon()										// Крепим Гиллий на оружие		


n = 0; while (n < 1){n++; itemCreated = player.GetInventory().CreateInInventory("Mag_STANAG_60Rnd");}	// Выдаем на M4 Магазин 60 пат.
if (random_top_weapontwo > 1){n = 0; while (n < 1){n++; itemCreated = player.GetInventory().CreateInInventory("Mag_STANAG_60Rnd");}}	// Если оружие для дальнего боя небудет, то конпенсируем это дополнительно обоймами
if (top_magplus == 1){n = 0; while (n < 1){n++; itemCreated = player.GetInventory().CreateInInventory("Mag_STANAG_60Rnd");}}		// Выдаем дополнительно на M4 Магазин 60 пат.
n = 0; while (n < 2){n++; itemCreated = player.GetInventory().CreateInInventory("Ammo_556x45");}					// Выдаем патроны 20 к M4
if (top_ammoboxplus == 1){n = 0; while (n < 2){n++; itemCreated = player.GetInventory().CreateInInventory("Ammo_556x45");}}		// Выдаем дополнительно патроны 20 к M4 */
}

Одно из выдач оружий.

 

void dulo(string a, string b, string c, string d, string e, string f)
{
	private int random_top_suppressor;
	private int random_top_weapontwo;
	private int top_ammoboxplus;
	PlayerBase player; // вот так обявил переменную
	itemCreated.GetInventory().CreateAttachment(a); 			       		// Крепим на M4 Цевье (черный)
	itemCreated.GetInventory().CreateAttachment(b);				        	// Крепим на M4 Приклад (черный)
	itemCreated.GetInventory().CreateAttachment(c); 			       		// Крепим на M4 Магазин 60 пат.
	if (random_top_suppressor == 1){itemCreated.GetInventory().CreateAttachment(d);}	// Крепим на M4 Глушитель, если он доступен
	itemCreated.GetInventory().CreateAttachment(e);						// Крепим на M4 Оптику ACOG 6x
	ghillie_weapon()									// Крепим Гиллий на оружие		

n = 0; while (n < 1){n++; player.GetInventory().CreateInInventory(c);}		        		// Выдаем на M4 Магазин 60 пат.
if (random_top_weapontwo > 1){n = 0; while (n < 1){n++; player.GetInventory().CreateInInventory(c);}}	// Если оружие для дальнего боя небудет, то конпенсируем это дополнительно обоймами
if (top_magplus == 1){n = 0; while (n < 1){n++; player.GetInventory().CreateInInventory(c);}}		// Выдаем дополнительно на M4 Магазин 60 пат.
n = 0; while (n < 2){n++; player.GetInventory().CreateInInventory(f);}	  	      			// Выдаем патроны 20 к M4
if (top_ammoboxplus == 1){n = 0; while (n < 2){n++; player.GetInventory().CreateInInventory(f);}}	// Выдаем дополнительно патроны 20 к M4
}

Вот я сделал функцию.

 

itemCreated = player.GetHumanInventory().CreateInHands("M4A1"); 					// Выдаем M4 в руки
if (itemCreated)											// Проверяем, создалось ли оружие
{
	dulo("M4_RISHndgrd", "M4_CQBBttstck", "Mag_STANAG_60Rnd", "M4_Suppressor", "ACOGOptic_6x", "Ammo_556x45") // обвешиваю М4 + выдаю боеприпасы
}

Так стало. ...

Сразу скажу, что только с таким вариантом сервер запустился. В инвентарь вещи он не выдает. если исправить обращения не на "player", а создать переменную, например для рюкзака вместо нее и спавнить сразу в рюкзак, то все работает. Но тут то я решу эту проблему таким способом, но когда буду создавать другии функции там по любому нужно будет чтоб через  "player" все работало.

 

Получается так ... я немного разобрался в чем дело, но решить это не могу. Выходит что переменная  "player" назначается в функции "void StartSetsPlayer(PlayerBase player, int use_set_id)" это основа всего файла Sets.c и если я пытаюсь ее назначить также в своей функции, то выдает ошибку. Пробовал методом тыка разные способы, но не выходит. Я не пойму как мне сделать так чтоб строчка в моей функции "player.GetInventory().CreateInInventory()" работала. 

Подскажите добрые люди, что можно тут сделать или как обойти?

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.