Показать сообщение отдельно
Старый 05.11.2010, 14:28
Dalass13 вне форума Посмотреть профиль Отправить личное сообщение для Dalass13 Найти все сообщения от Dalass13
  № 3  
Ответить с цитированием
Dalass13
 
Аватар для Dalass13

Регистрация: Oct 2010
Адрес: Свердловск
Сообщений: 77
ну логика у меня в принципе такая. На МС скилла стоит код:

Код AS1/AS2:
onClipEvent (load) {
	id = this._name.slice(5, 7);
	gotoAndStop(id);
	zabito = 0;
	zabitoC = 0;
	guardX = _x;//исходное
	guardY = _y;//положение
	lockMenu = false;
	checks = true;
}
on (rollOver) {
	if (lockMenu == false) {
		_root.skillBASE(this._name);// берет инфу о скилле
		_root.menuCheck(_x, _y, _width);//проверяет, чтобы самодельное окно не выходило за пределы экрана
	}
}
on (press) {
	this.swapDepths(100);
	startDrag(this);
	_root.information._visible = false;
	lockMenu = true;
}
//теперь очень громоздкий код который мне ОЧЕНь хотелось бы оптимизировать, но мозг не рабоает что-то
on (release) {
	for (i=1; i<=3; i++) {//идет перебор 3 слотов экипировки скиллов
		if (this.hitTest(_root["slot"+i])) {
			if (_root.a[i] == 1) {//условие проверяет забит ли i-тый слот другим скиллом, если 1 то забит и МС возвращается на своё guard место
				i = 3;
				_root.a[zabito] = 0;//изначально все скиллы находятся в нулевом слоте a[0]
				trace("a["+zabito+"]="+_root.a[zabito]);
				trace("ВЫШЕЛ ИЗ СЛОТА: "+zabito);
				_x = guardX;
				_y = guardY;
				_width = 38;
				_height = 38;
				this.shine.gotoAndStop(1);
				break;
			} else {
				_x = _root["slot"+i]._x;//далее естественно описывается вхождение в выбранный слот при свободном слоте
				_y = _root["slot"+i]._y;
				_width = _root["slot"+i]._width;
				_height = _root["slot"+i]._height;
				if (i<>zabito) {
					trace("ВЫШЕЛ ИЗ СЛОТА "+zabito);
					_root.a[zabito] = 0;
					trace("a["+zabito+"]="+_root.a[zabito]);
				}
				trace("ВОШЕЛ В СЛОТ "+i);
				_root.a[i] = 1;
				trace("a["+i+"]="+_root.a[i]);
				zabito = i;
				this.shine.gotoAndStop(2);
				break;
			}
		} else {
			if (i == 3) {//а здесь описывается что происходит если hittest не "почувствовал" ни одного слота
				_root.a[zabito] = 0;
				trace("a["+zabito+"]="+_root.a[zabito]);
				trace("ВЫШЕЛ ИЗ СЛОТА: "+zabito);
				_x = guardX;
				_y = guardY;
				_width = 38;
				_height = 38;
				this.shine.gotoAndStop(1);
			}
		}//и вот сейчас начинается АД
		if (this.hitTest(_root["comboslot"+i])) {//теперь проверяем еще 2 слота, но другие по функционалу, то есть не экипировк, а комбинирования
			if (_root.b[i] == 1) {//естественно коды аналогичны
				i = 2;
				_root.b[zabitoC] = 0;
				trace("b["+zabitoC+"]="+_root.b[zabitoC]);
				trace("ВЫШЕЛ ИЗ СЛОТА: "+zabitoC);
				_x = guardX;
				_y = guardY;
				_width = 38;
				_height = 38;
				this.shine.gotoAndStop(1);
				break;
			} else {
				_x = _root["comboslot"+i]._x;
				_y = _root["comboslot"+i]._y;
				_width = _root["comboslot"+i]._width;
				_height = _root["comboslot"+i]._height;
				if (i<>zabitoC) {
					trace("ВЫШЕЛ ИЗ СЛОТА "+zabitoC);
					_root.b[zabitoC] = 0;
					trace("b["+zabitoC+"]="+_root.b[zabitoC]);
				}
				trace("ВОШЕЛ В СЛОТ "+i);
				_root.b[i] = 1;
				trace("b["+i+"]="+_root.b[i]);
				zabitoC = i;
				if (i == 1) {
					_root.part1 = id;
					trace(_root.part1);
				} else {
					_root.part2 = id;
					trace(_root.part2);
				}
				this.shine.gotoAndStop(2);
				break;
			}
		} else {
			if (i == 2) {
				_root.b[zabitoC] = 0;
				trace("b["+zabitoC+"]="+_root.b[zabitoC]);
				trace("ВЫШЕЛ ИЗ СЛОТА: "+zabitoC);
				_x = guardX;
				_y = guardY;
				_width = 38;
				_height = 38;
				this.shine.gotoAndStop(1);
			}
		}
	}
	stopDrag();
	this.swapDepths(0);
	lockMenu = false;
}
on (rollOut) {
	_root.information._visible = false;//скрывает самодельное окно с инфой
}
И вот иногда бывают ошибки. Напрмер:
1) В 3ий слот экипировки не может попасть скилл, который находился в слоте комбо.
2) Всё видно на этом скриншоте

Название: ok.jpg
Просмотров: 245

Размер: 78.9 Кб



В общем всё состоит из 3 слотов экипировки и двух слотов для комбинирования скиллов. Я думал сделать их однотипными, то есть не делить на slot и comboslot, а slot1-slot5.

Что думаете по этому поводу. Прекрасно понимаю, что безумно избыточно, но лучше ничего к сожалению не придумал и то, что ВСЁ ЭТО на мувике меня тоже безумно напрягает, если учитывать что это всё дублируется на 50 аналогичных МС. Вот такие пироги

Если, что-то непонятно в коде спрашивайте


Последний раз редактировалось Dalass13; 05.11.2010 в 15:43.