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
Sign in to follow this
Followers
0
Функция с переменной player. Ошибка. Не могу исправить.
Asked by
Maks86
-
Our picks
Добрый вечер. Наверное уже немного поднадоел я своими вопросами, так как задаю слишком много. Но пока есть время, пишу скрипт для сервера и из-за того что знания в этой области ограничены, возникают походу много вопросов. Уж не обесутьте!!!
В общем у меня в файле 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