Дата: Воскресенье, 23.02.2014, 20:19 | Сообщение # 392
Живодёр (от слова "стоматолог")
Группа: Модераторы
Сообщений: 1933
maximka3201, где-то ошиблись в прописке в .xml, скорее всего не дописали что-то, что требует скрипт. Хотя тогда ошибка другая должна быть, что-то про недостающие аттрибуты, если правильно помню...
Я "порезаным" скриптам не очень доверяю, мне проще его снять с заведомо рабочего мода и без всяких редакций (в .lua) поставить на нужную мне модель. Но для анимации кардана пришлось резать скрипт с K700A от SFM, удалял функцию появления переходника для с/х орудий.
Здесь главное обращать внимание на последовательность трансформ груп до нужной нам детали ! Когда мы пытаемся взять действующию деталь у донора и поставить на нашу модель чтоб знать правильность нужного индеса надо открыть модель донора редактором и дойти до нужного индека детали которая прописана в ХМЛ модели затем в нашей моделе куда мы поставили деталь дойти до тогоже что и вдоноре а потом уже вписать индекс который появился в нашей моделе Взять к примеру вот этот индекс 0>19|0|15|1|0|0|0 он нам показывает что до конечной точки модели нам надо открыть шесть под группу в которых лежит модель Но не всегда нужная модель содержит точку привязки в нужном месте для этого создают трансформ группу и делают точку привязки в том месте где надо так же настраивают соотношения сторон транс группы чтоб она отклонялась или шевелилась в нужную сторону в этом случаи индекс будет оканчиваться на транс гуппу в которой наша модель
Дата: Понедельник, 24.02.2014, 05:30 | Сообщение # 394
Глава районной администрации
Группа: V.I.P.
Сообщений: 1112
Alexx79, всё что вы написали укладывается в ДВА СЛОВА - соблюдайте индексы! Енто я вас не критикую, но просто можно мыслями так не "растекаться"...... Если чё - извиняюсь
Дата: Понедельник, 24.02.2014, 14:55 | Сообщение # 395
Механик
Группа: Постоянный
Сообщений: 496
StarT Конечно можно и в два слова уложится но потом долго и упорно объяснять кому нибудь как определять где что и как........ и писать кучу сообщений на страницах форума об одном и томже! Я писал для тех кому это поможет а не для тех кто знает и просто иногда игнорирует чтоб ко муто ответить! Не принимайте на свой счет.
Сообщение отредактировал Alexx79 - Понедельник, 24.02.2014, 14:56
Дата: Понедельник, 24.02.2014, 23:29 | Сообщение # 396
Механик
Группа: Постоянный
Сообщений: 297
трак ни как не могу переписать себе скрипт пробивания колес ,лог ругается на <animationParts> ,эксперементировал еще на тракторе ,пытался удалить несколько строк <animationParts>, трак не покупается ,а когда все строки <animationParts> на месте ,тогда все покупается и работает
Дата: Вторник, 25.02.2014, 15:59 | Сообщение # 399
Живодёр (от слова "стоматолог")
Группа: Модераторы
Сообщений: 1933
maximka3201, тут с вероятностью 90% Ваша ошибка. Может быть этот скрипт не работает без какого-то другого скрипта, может быть Вы с индексами накосячили, может быть просто что-то в xml не дописали, тут версий несколько, но я склоняюсь больше к индексам и недостаче кода в xml. Если скрипт пашет не другом моде, тут задача стоит его правильно перенести на свою модель а это зачастую не так-то и просто...
Дата: Вторник, 25.02.2014, 20:03 | Сообщение # 400
Механик
Группа: Постоянный
Сообщений: 297
jenya_arxipov,другие скрипты не требуются,там 2 индекса на анимацию,все это прописал себе,в xml еше дописал 2 строки каких то групп,на тракторе работает все но если удалить любую строку из блока animationParts,или меняю индекс,то все трак не покупаеться
Дата: Четверг, 27.02.2014, 00:30 | Сообщение # 403
Бригадир
Группа: Постоянный
Сообщений: 227
Блин, добавление мода на сайт занимает больше времени, чем конвертация самого мода Конвертнул Claas Lexion 770 TerraTrac Package с оф. сайта, мож скоро выложат.
self.mrFpFwdDefaultGear = Utils.getNoNil(getXMLFloat(xmlFile, xmlString .. ".fwdGears#defaultGear"), 1); self.mrFpFwdGears = {}; local i = 0; while true do local fwdGearString = xmlString .. string.format(".fwdGears.gear(%d)", i); local newGear = getXMLFloat(xmlFile, fwdGearString .. "#speed"); if newGear == nil then break; end; table.insert(self.mrFpFwdGears, newGear/3.6); -- m/s i = i + 1; end;
self.mrFpRevDefaultGear = Utils.getNoNil(getXMLFloat(xmlFile, xmlString .. ".revGears#defaultGear"), 1); self.mrFpRevGears = {}; i = 0; while true do local revGearString = xmlString .. string.format(".revGears.gear(%d)", i); local newGear = getXMLFloat(xmlFile, revGearString .. "#speed"); if newGear == nil then break; end; table.insert(self.mrFpRevGears, newGear/3.6); -- m/s i = i + 1; end;
--adding the T4 mode self.realTransmissionMode.maxMode = 4; self.realTransmissionMode.modes[4] = {}; self.realTransmissionMode.modes[4].enabled = true; -- full powershift mode self.realTransmissionMode.modes[4].text = "T4";
end;
function mrFullPowershift:delete() end;
function mrFullPowershift:mouseEvent(posX, posY, isDown, isUp, button) end;
function mrFullPowershift:keyEvent(unicode, sym, modifier, isDown) end;
function mrFullPowershift:readStream(streamId, connection) self.mrFpIsOn = streamReadBool(streamId); self.mrFpCurrentGear = streamReadInt32(streamId); end;
function mrFullPowershift:writeStream(streamId, connection) streamWriteBool(streamId, self.mrFpIsOn); streamWriteInt32(streamId, self.mrFpCurrentGear); end;
function mrFullPowershift:updateTick(dt)
if self.isAITractorActivated then self:setFullPowershiftModeOff(); else -- not ai controlled if self.realIsMotorStarted then
--new powershift mode = T4 if self.realTransmissionMode.currentMode==4 and self.motor.speedLevel == 0 then if not self.mrFpIsOn then self:setFullPowershiftModeOn(); end; else if self.mrFpIsOn then self:setFullPowershiftModeOff(); end; end;
end; end;
end;
function mrFullPowershift:update(dt)
if self:getIsActiveForInput(false) then
if self.mrFpIsOn and self.realIsMotorStarted then if g_gui.currentGui == nil and (self.isMouseActive == nil or not self.isMouseActive) then --print(self.time .. " mrFullPowershift:update - g_gui.currentGuiName = " .. tostring(g_gui.currentGuiName)); if InputBinding.hasEvent(InputBinding.MRFULLPOWERSHIFTGEARUP) then --RealisticUtils.testClass("g_currentMission.inGameMessage", g_currentMission.inGameMessage); --RealisticUtils.testClass("g_currentMission.messages", g_currentMission.messages); self:setNextGear(false); elseif InputBinding.hasEvent(InputBinding.MRFULLPOWERSHIFTGEARDOWN) then self:setNextGear(true); elseif InputBinding.hasEvent(InputBinding.MRFULLPOWERSHIFTNEUTRAL) then self:setGear(0); end; end; end;
end;
if self.isServer and self.isActive then if self.mrFpGearShiftingNeeded then if self.time>=self.mrFpGearShiftingTime then self.mrFpGearShiftingNeeded = false; self:doGearShift(); end; end; end;
function mrFullPowershift:setNextGear(gearDown, noEventSend)
if self.isServer then --server side : compute the new gear --print(self.time .. " mrFullPowershift:setNextGear - gearDown=" .. tostring(gearDown) .. " / self.mrFpCurrentGear=" .. tostring(self.mrFpCurrentGear));
local wantedGear = nil;
if gearDown then if self.mrFpCurrentGear>self.mrFpMinGear then wantedGear = self.mrFpCurrentGear - 1; end; else if self.mrFpCurrentGear<self.mrFpMaxGear then wantedGear = self.mrFpCurrentGear + 1; end; end;
if wantedGear~=nil then self:setGear(wantedGear); end; end;
if noEventSend == nil or noEventSend == false then if g_server == nil then --client side : tell the server what we want to do (gear up or down) g_client:getServerConnection():sendEvent(mrFullPowershiftSetNextGearEvent:new(self, gearDown)); end; end;
end;
function mrFullPowershift:setGear(gearNum, noEventSend)
if gearNum==0 then --neutral self.realShuttleDirection = 0; self.mrFpGearShiftingNeeded = false; else --timer to set the gear self.mrFpGearShiftingNeeded = true; self.mrFpGearShiftingTime = self.time + self.mrFpGearTimeToShiftGear;
--disengage the clutch during the gear shifting self.realClutchEngaged = false; end;
end;
if noEventSend == nil or noEventSend == false then if g_server ~= nil then -- server side : send the new "mrFpCurrentGear" to all the clients g_server:broadcastEvent(mrFullPowershiftSetGearEvent:new(self, gearNum), nil, nil, self); else -- client side : tell the server the gearNum we want it to set g_client:getServerConnection():sendEvent(mrFullPowershiftSetGearEvent:new(self, gearNum)); end; end;
end;
function mrFullPowershift:setFullPowershiftModeOn()
if self.isServer then self.realDirectInverser = false; self.realShuttleIsManual = true; self.realClutchEngaged = true; if self.realShuttleDirection<0 then self:setGear(self.mrFpRevDefaultGear); else self:setGear(self.mrFpFwdDefaultGear); end; end;
end;
function mrFullPowershift:setFullPowershiftModeOff()