Jump to content


Photo

Проблема в MP миссии ...


  • Please log in to reply
22 replies to this topic

#1 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 posts
  • Откуда:Кривой Рог

Posted 16 February 2015 - 12:37

МП миссия на две команды.

Стартуем сервер, захожу как админ, заходят люди, занимают слоты, стартую игру и играем. Все как говориться ок !

Пустые слоты удаляются после старта миссии.

 

После того как убивают игрока, респа естественно нет, он попадает в режим спектатора, или выходит из игры вообще. 

И так с каждым кого убили. 

Все вроде ок но есть проблема....

 

Если игрок выходит, после смерти, из игры в лобби, то у него активна кнопка ОК, хотя и нет свободных слотов.

Он нажимает ОК и попадает на случайного игрока, который еще жив и играет, типа как от третьего лица. Стрелять и бегать за него он не может, а вот актионы выполнять может, в рюкзаке у него полазить может, и т.д.

 

Как решить эту проблему, что бы после того как убили и вышел в лобби, не мог зайти в игру на занятый слот, и почему вообще активна кнопка ОК если слот не занят ?

 

 

 


  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 17 February 2015 - 00:57

 

Пустые слоты удаляются после старта миссии.

Это каким образом?


 

Если игрок выходит, после смерти, из игры в лобби, то у него активна кнопка ОК, хотя и нет свободных слотов.

Он нажимает ОК и попадает на случайного игрока, который еще жив и играет, типа как от третьего лица. Стрелять и бегать за него он не может, а вот актионы выполнять может, в рюкзаке у него полазить может, и т.д.

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


Edited by SteelRat, 17 February 2015 - 00:59.

  • 0

#3 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 posts
  • Откуда:Кривой Рог

Posted 17 February 2015 - 01:11

Боты удаляются скриптом:

 

if ( isServer ) then {
 
{
 
if ( !(_x in units player) AND (side _x) == east ) then {
deleteVehicle _x;
};
 
if ( !(_x in units player) AND (side _x) == west ) then {
deleteVehicle _x;
};
 
} forEach allUnits;
 
};
 
Я пробовал делать - респаться чайкой, игрок респается чайкой, все ок ! Потом выходит в лобби, слотов пустых нет, но кнопка ОК активна, он нажимает ОК и появляется чайкой над случайным игроком, управлять им он не может, но все актионы доступные игроку он может отработать, например выйти из машины ....
 
Как можно от такого избавиться ?

  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 17 February 2015 - 01:17

valka1000, как вариант кикать или еще что то делать с такими

Организуется проверкой со стороны сервера UID и запоминанием его в объект (obj setVariable...) 

Когда руки дотянуться может посмотрю как реализовать, а пока ждите 


  • 0

#5 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 posts
  • Откуда:Кривой Рог

Posted 17 February 2015 - 01:24

тут вопрос кого кикать. Ведь как игрок он не отрабатывается на сервере, и не думаю что инит при таком входе отрабатывает.

 

Я например еще не могу понять почему активна кнопка ОК в лобби - если чел на слот не встал ? А ведь свободных слотов нет ...


  • 0

#6 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 17 February 2015 - 05:20

 

Боты удаляются скриптом:

Удаляя труп бота, вы не удаляете слот, и не исключаете само живое тело.

У вас слотов ровно столько, сколько вы прописали в миссии, ни больше ни меньше.

 

И вот ситуация, игрок мёртв, респа нет, он в лобби, и он всё равно как бы в игре, и может зайти спектатором, вариантов просто больше нет, вот арма его чайкой и суёт.


  • 0

#7 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 17 February 2015 - 05:25

 

тут вопрос кого кикать. Ведь как игрок он не отрабатывается на сервере

Плохо штудируете кладезь мудрости

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

 

команда

allUnits

не одна, такая себе эксклюзивная и монопольная.


  • 0

#8 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 posts
  • Откуда:Кривой Рог

Posted 17 February 2015 - 12:18

 

 

Боты удаляются скриптом:

Удаляя труп бота, вы не удаляете слот, и не исключаете само живое тело.

У вас слотов ровно столько, сколько вы прописали в миссии, ни больше ни меньше.

 

И вот ситуация, игрок мёртв, респа нет, он в лобби, и он всё равно как бы в игре, и может зайти спектатором, вариантов просто больше нет, вот арма его чайкой и суёт.

 

 

Хм. Странно. Я удаляю не трупы а ботов, не занятые слоты, при старте миссии. То есть при старте появляются только игроки, все боты удалены. Если после отработки скрипта человек заходит на сервер, то слотов свободных в лобби нет, если игрока убили, его слот то же с лобби пропадает, соответсвенно переменная allUnits уменьшается как после удаления пустых слотов, так и после убитых ( это проверял ). 

Лишнее подтверждение отсутствия слотов для заходящего - то что арма не кидает его просто чайкой, а кидает на занятый слот чайкой, и при этом дает возможность выполнять актионы игрока на чей слот она кинула заходящего ....


  • 0

#9 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 17 February 2015 - 12:41

valka1000, в любом случае нужно делать проверку постоянную со стороны сервера всех игроков - задача не из легких :)
  • 0

#10 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 17 February 2015 - 15:05

 

Хм. Странно. Я удаляю не трупы а ботов, не занятые слоты, при старте миссии.

Ещё раз повторяю, вы не можете удалить слот! Удалите вы бота или нет, слот всё равно останется.

 

Далее, если ваша миссия не предусматривает респавн, об этом надо явно указать в файле

description.ext

миссии. Если вы конечно это не сделали.

respawn = "BASE";

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

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


Edited by SteelRat, 17 February 2015 - 15:11.

  • 0

#11 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 posts

Posted 17 February 2015 - 15:07

собственно, тут просто надо настроить миссию и всё.

Никакой проблемы тут нет. 

Копайтесь в дискрипшине. 

 

description 


  • 0

#12 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 17 February 2015 - 15:16

 

Лишнее подтверждение отсутствия слотов для заходящего - то что арма не кидает его просто чайкой, а кидает на занятый слот чайкой, и при этом дает возможность выполнять актионы игрока на чей слот она кинула заходящего ....

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


Edited by SteelRat, 17 February 2015 - 15:17.

  • 0

#13 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 posts
  • Откуда:Кривой Рог

Posted 17 February 2015 - 15:47

 

 

Лишнее подтверждение отсутствия слотов для заходящего - то что арма не кидает его просто чайкой, а кидает на занятый слот чайкой, и при этом дает возможность выполнять актионы игрока на чей слот она кинула заходящего ....

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

 

 

Ок! Тут все понятно. И я понял что так и должно быть. Но вопрос собственно в том, что когда тело заходит на играбельный слот, он не просто спектатором сидит и смотрит, а может например играющего играка высадить из машины или танка ... Как можно от этого избавиться ?


  • 0

#14 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 posts

Posted 17 February 2015 - 16:11

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

 

aiKills = 1;


  • 0

#15 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 posts
  • Откуда:Кривой Рог

Posted 17 February 2015 - 16:19

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

 

aiKills = 1;

 

А что даст - Enables scorelist for AI players - ?


  • 0

#16 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 17 February 2015 - 17:01

valka1000, начисление очков за убийство бота (В стандартных Мп-режимах)
  • 0

#17 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 posts

Posted 17 February 2015 - 17:21

ничего 


  • 0

#18 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 posts
  • Откуда:Кривой Рог

Posted 17 February 2015 - 17:34

valka1000, начисление очков за убийство бота (В стандартных Мп-режимах)

 

Это точно :) Ничего не дало. Зашел за играбельный слот и высадил игрока из машины :( В общем не помогло ...


  • 0

#19 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 17 February 2015 - 18:10

Я тут искал своё, в бисовских функциях, и наткнулся на функцию, которая мне напомнила о этом посте 

Папка установки Арма 3\Addons\functions_f\GUI\fn_setMissionStatusSlot.sqf
/*
	Author: Karel Moricky

	Description:
	Set  a slot for mission status with sectors, respawn tickets, etc.

	Parameter(s):
		0: NUMBER - slot ID. Use -1 to assign it automatically
		1: STRING - text
		2: STRING - icon path
		3: ARRAY - color in RGBA format
		4: NUMBER - slot fade, 0 is fully visible, 0 hidden
		5: ARRAY in Position format - position top which camera moves after clicking on the slot
		6: NUMBER - slot progress bar height in range <0;1>

	Returns:
	NUMBER - slot ID
*/

private ["_id","_text","_texture","_color","_fade","_position","_barHeight","_icons"];
_id = [_this,0,-1,[0]] call bis_fnc_param;
_text = [_this,1,"",["",false]] call bis_fnc_param;
_texture = [_this,2,"",[""]] call bis_fnc_param;
_color = [_this,3,[0,0,0,0],[[]],4] call bis_fnc_param;
_fade = [_this,4,0,[0]] call bis_fnc_param;
_position = [_this,5,[],[[]]] call bis_fnc_param;
_barHeight = [_this,6,0,[0]] call bis_fnc_param;

_icons = missionnamespace getvariable ["RscMissionStatus_icons",[]];
if (_id < 0) then {_id = count _icons;};

if (typename _text == typename "") then {
	//--- Add
	_icons set [_id,[_text,_texture,_color,_fade,_position,_barHeight]];
} else {
	//--- Remove
	_icons set [_id,nil];
};

missionnamespace setvariable ["RscMissionStatus_icons",_icons];
_id

  • 0

#20 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 posts

Posted 17 February 2015 - 18:31

меня видимо никто не читает( 


  • 0




Яндекс.Метрика