singapur22 14 Опубликовано 16 Июля 2011 STARTS, Этого мало. Выложи xml-тэги, используемые в данном скрипте. Вполне вероятно, что, или кнопки установлены вне зоны "background", или сами размеры кнопок не соответствуют отображаемым формам. Опаа-а!!! Ливер вылез! Поделиться этим сообщением Ссылка на сообщение
singapur22 14 Опубликовано 17 Августа 2011 strelok200, При спавне вертолёта через скрипт, обязательно требуется перепаковка net_packet, с переназначением параметров: skeleton_name = idle startup_animation = idle Опаа-а!!! Ливер вылез! Поделиться этим сообщением Ссылка на сообщение
singapur22 14 Опубликовано 17 Августа 2011 (изменено) strelok200, Юзай net_utils.script из Симбиона (наиболее полная версия менеджера net_packet объектов игры) Перепаковка, в данном случае будет занимать минимальное количество строк: local sobj = alife():create("helicopter", ... if sobj then local tbl = net_utils.Get_Data_Helicopter(sobj) --//считываем данные net_packet объекта tbl.skeleton_name = "idle" --//переопределяем требуемые параметры tbl.startup_animation = "idle" net_utils.Set_Data_Helicopter(tbl, sobj) --//перезаписываем net_packet объекта end Изменено 17 Августа 2011 пользователем singapur22 Опаа-а!!! Ливер вылез! Поделиться этим сообщением Ссылка на сообщение
singapur22 14 Опубликовано 29 Августа 2011 (изменено) Habaromaniac, Вот кстати у себя вычислил направления взгляда при появлении: ... Значения немного не точные, но укажу как их вычислить. Определение угла от Pi можно производить lua функцией math.rad(num) Где, num -- угол в градусах. -1 по координате Z указывает нулевое направление (в сторону отрицательного луча, вектора Z). Нулевым направлением можно сделать и вектор X, если кому так удобней, но при этом нужно будет учитывать, что угол поворота будет определяться от данного вектора. Приведём небольшой пример: Укажим угол поворота, на 90 градусов вправо, от указанного нулевого луча (-Z): p_dest_dir = vector():set(0, math.rad(90), -1) --будет аналогичен примеру... p_dest_dir = vector():set(0, 1.57, -1) По сути, поворот на 180 градусов, в представлении Pi, равен ему же. (Pi = 3.14159...) Отсюда, углом поворота можно управлять и путём управления значением Pi. В lua, Pi определяется константой math.pi. Соответственно, чтобы указать угол поворота на 90 градусов, нужно будет значение Pi разделить на 2: p_dest_dir = vector():set(0, math.pi / 2, -1) Полный поворот на 360 градусов, объявляется умножением Pi на 2. Изменено 29 Августа 2011 пользователем singapur22 Опаа-а!!! Ливер вылез! Поделиться этим сообщением Ссылка на сообщение
singapur22 14 Опубликовано 4 Сентября 2011 (изменено) Desertir, По сути, как уже было сказано RvP, никак. Но... Смотря где и зачем тебе это нужно. Классы всегда можно переопределить (унаследовать), и назначить им дополнительные методы и(или) свойства. Унаследовать можно конечно не все классы, но многие (условий наследования несколько). Есть ещё одно незначительное условие, названия переопределяемых классов придётся поменять, что потребует их переименование во всей скриптовой системе. Изменено 4 Сентября 2011 пользователем singapur22 Опаа-а!!! Ливер вылез! Поделиться этим сообщением Ссылка на сообщение
singapur22 14 Опубликовано 12 Сентября 2011 (изменено) Artos, Тоесть. ты хочешь определить, имеет ли список строчные значения, или же числовые?! Но ведь список может иметь и оба типа значений. К кому такой список приравнять? А по сути, без полного перебора таблицы, невозможно определить типы всего списка значений. Но раз уж на то пошло, и тебя устроит использование классового списка, то всегда можно создать класс, отвечающий всем требуемым условиям. Изменено 12 Сентября 2011 пользователем singapur22 Опаа-а!!! Ливер вылез! Поделиться этим сообщением Ссылка на сообщение
singapur22 14 Опубликовано 12 Сентября 2011 (изменено) malandrinus, И всё же. Вопреки описанию, методы pairs и ipairs производят проверку значений на nil. И если таковой находится, итерация прекращается. Чтобы в этом убедиться, достаточно просмотреть исходник данного метода: ... static int pairsmeta (lua_State *L, const char *method, int iszero, lua_CFunction iter) { if (!luaL_getmetafield(L, 1, method)) { /* no metamethod? */ luaL_checktype(L, 1, LUA_TTABLE); /* argument must be a table */ lua_pushcfunction(L, iter); /* will return generator, */ lua_pushvalue(L, 1); /* state, */ if (iszero) lua_pushinteger(L, 0); /* and initial value */ else lua_pushnil(L); } else { lua_pushvalue(L, 1); /* argument 'self' to metamethod */ lua_call(L, 1, 3); /* get 3 values from metamethod */ } return 3; } static int luaB_next (lua_State *L) { luaL_checktype(L, 1, LUA_TTABLE); lua_settop(L, 2); /* create a 2nd argument if there isn't one */ if (lua_next(L, 1)) return 2; else { lua_pushnil(L); return 1; } } //Метод вызываемый функцией pairs(tbl) static int luaB_pairs (lua_State *L) { return pairsmeta(L, "__pairs", 0, luaB_next); } static int ipairsaux (lua_State *L) { int i = luaL_checkint(L, 2); luaL_checktype(L, 1, LUA_TTABLE); i++; /* next value */ lua_pushinteger(L, i); lua_rawgeti(L, 1, i); return (lua_isnil(L, -1)) ? 1 : 2; } //Метод вызываемый функцией ipairs(tbl) static int luaB_ipairs (lua_State *L) { return pairsmeta(L, "__ipairs", 1, ipairsaux); } ... Всё дерево используемых методов выкладывать не буду, оно слишком велико. Функционал большинства методов понятен из их названий. Небольшая (пока) ремарка: Прекращается при значении key == 'nil' , но(!) метод 'pairs' продолжается при key ~= 'nil' и 'value' == 'nil' . Т.е. критично для итерации значение 'key', а не 'value'. --/ Artos Изменено 12 Сентября 2011 пользователем Artos Опаа-а!!! Ливер вылез! Поделиться этим сообщением Ссылка на сообщение