Скрипт на добавление и убирание деталей и колес, работает с 2х компонентными моделями. Пример приведу на Кировце, появление колес (при покупке модели деталей не будет видно) с возможностью передние и задние отдельно. Скрипт в Прикрепления внизу темы.
<parts count="2"> отвечает за передние калеса, <parts2 count="2"> за задние калеса. В группы можно добавлять детали (для каждой группы отдельная кнопка) но не забываем менять количество деталей в группе (красное) и порядковый номер (синий), также добавлять группы но меняем номер (оранжевый) также группу и удалить можно. <parts count="2"> <part1 index="3|0" /> <part2 index="4|0" /> </parts>
В XML файл модели тоже все сделано. Разберем сам скрипт. Здесь правим если добавили или удалили группу. если удалили группу то удаляем numparts2 и все к нему относящееся (выделено красным). Если добавили то копируем numparts2 ниже и меняем 2 (все) на номер группы. Надеюсь понятно. Если нужно чтобы деталь была видна при покупке меняем false (синий) на true
Quote
function visibility:load(xmlFile)
numparts = Utils.getNoNil(getXMLInt(xmlFile, "vehicle.parts#count"), 0); self.parts = {}; for i=1, numparts do local partnamei = string.format("vehicle.parts.part%d", i); self.parts[i] = Utils.indexToObject(self.components, getXMLString(xmlFile, partnamei .. "#index")); setVisibility(self.parts[i], false); end; self.partsActive = false;
numparts2 = Utils.getNoNil(getXMLInt(xmlFile, "vehicle.parts2#count"), 0); self.parts2 = {}; for i=1, numparts2 do local partnamei = string.format("vehicle.parts2.part%d", i); self.parts2[i] = Utils.indexToObject(self.components, getXMLString(xmlFile, partnamei .. "#index")); setVisibility(self.parts2[i], false); end; self.parts2Active = false;
end;
Далее меняем кнопки, в маём примере K и L. Все также как описано выше не нужное удаляем нужное добавляем. Следим за цифрами.
Quote
function visibility:keyEvent(unicode, sym, modifier, isDown)
if isDown and sym == Input.KEY_k then self.partsActive = not self.partsActive; end; if isDown and sym == Input.KEY_l then self.parts2Active = not self.parts2Active; end;
end;
И последнее все тоже самое если добавили группу добавляем и здесь (следим за цифрами) если удалили тоже удаляем.
Quote
function visibility:update(dt)
if self.partsActive then for i=1, numparts do setVisibility(self.parts[i], self.partsActive); end; else for i=1, numparts do setVisibility(self.parts[i], self.partsActive, false); end; end; if self.parts2Active then for i=1, numparts2 do setVisibility(self.parts2[i], self.parts2Active); end; else for i=1, numparts2 do setVisibility(self.parts2[i], self.parts2Active, false); end; end; end;
Ещё вопросик, можно ли как переделать этот скрипт, чтобы не 2 функции мог выполнять, а 4. Ну в смысле не передние и задние колёса добавлял, а каждое колесо по отдельности.