![]() |
В СМП никаких ошибок нету
|
Хм, а нельзя ли сделать так, чтоб по дефолту все команды из правила driver commands были доступны в списке команд driver setup(просто даже при нерабочем правиле driver command работают команды wait, load и т.д.). Это конечно было бы неудобно, но всё же лучше чем ничего
|
в общем, когда-то давно (точнее этим летом) я это правило себе чинил. Примерно так...
1) открыл куид Driver command на редактрование 2) скрипт там шифрованный, поэтому скопировал скрипт какого-то локомотива с переименованием на DriverCommandRule.gs 3) вставил скрипт этого правила из АПИ 2006 как я помню, заработало :) [HTML]// // DriverCommandRule.gs // // Copyright (C) 2002 Auran Developments Pty Ltd // All Rights Reserved. // include "ScenarioBehavior.gs" include "World.gs" include "Browser.gs" include "KUID.gs" // // This rule allows the scenario-designer to edit the driver commands available in a profile. // class DriverCommandRule isclass ScenarioBehavior { KUID[] driverCommands; // array of KUIDs of the driver commands currently in this rule bool isDefault = true; // set to true if this rule's properties have not been customised // // Resets the commands in the Trainz world to the ones this rule has. Called by Pause() // when this behavior is unpaused to reset driver commands. // void CreateCommandsNow(void); void FillDefaults(void); // // ScenarioBehavior methods // // // Initialization method that sets the driver command array to being empty. // public void Init(Asset p_self) { inherited(p_self); driverCommands = new KUID[0]; } // // Pause/unpause this behavior. When unpaused, CreateCommandsNow() is called to reset // driver commands. // public void Pause(bool paused) { if (paused == IsPaused()) return; SetStateFlags(PAUSED, paused); if (!paused) CreateCommandsNow(); } // // PropertyObject methods // // // Initializes the driver commands list of this rule from the given database. // public void SetProperties(Soup soup) { inherited(soup); // // Clear any existing data // driverCommands = new KUID[0]; // // Reload from the specified soup // Soup commands = soup.GetNamedSoup("commands"); int i, count = commands.CountTags(); for (i = 0; i < count; i++) { Soup commandInfo = commands.GetNamedSoup((string)i); driverCommands[i] = commandInfo.GetNamedTagAsKUID("kuid"); } Interface.Log("DriverCommandRule.SetProperties> " + driverCommands.size() + " commands loaded"); isDefault = !count and !soup.GetNamedTagAsInt("DriverCommandRule.modified"); // this is a helper in case someone needs to know what commands are available // it may cause inconsistancies if multiple DriverCommandRules are present! // THIS IS A HACK - DONT RELY ON THIS IF AT ALL POSSIBLE if (World.GetCurrentModule() == World.SURVEYOR_MODULE) CreateCommandsNow(); } // // Saves the KUIDs of the driver commands in this rule to a database and returns it. // public Soup GetProperties(void) { Soup soup = inherited(); Soup commands = Constructors.NewSoup(); int i, count = driverCommands.size(); for (i = 0; i < count; i++) { Soup commandInfo = Constructors.NewSoup(); commandInfo.SetNamedTag("kuid", driverCommands[i]); commands.SetNamedSoup((string)i, commandInfo); } soup.SetNamedSoup("commands", commands); soup.SetNamedTag("DriverCommandRule.modified", !isDefault); Interface.Log("DriverCommandRule.GetProperties> " + driverCommands.size() + " commands saved"); return soup; } public bool ListContainsKUID(KUID[] list, KUID it) { int i; for (i = 0; i < list.size(); i++) if (list[i] == it) return true; return false; } public bool ListRemoveKUID(KUID[] list, KUID it) { int i; for (i = 0; i < list.size(); i++) if (list[i] == it) { list[i, i+1] = null; return true; } return false; } public void ListAddKUID(KUID[] list, KUID it) { list[list.size()] = it; } // // Returns HTML code with hyperlinks that allows commands in this rule to be added/deleted. // public string GetDescriptionHTML(void) { if (isDefault) FillDefaults(); StringTable strTable = GetAsset().GetStringTable(); string list = ""; int i; list = list + "<table>"; Asset[] commandAssets = World.GetAssetList("DriverCommand"); for (i = 0; i < commandAssets.size(); i++) { Asset commandAsset = commandAssets[i]; KUID commandKUID = commandAsset.GetKUID(); string commandName = commandAsset.GetName(); string commandIcon = commandKUID.GetHTMLString(); string description = commandAsset.GetStringTable().GetString("description"); string url = "live://property/" + (string)i; string link = "<a href='" + url + "'>"; if (description.size()) description = BrowserInterface.Quote(description); else description = strTable.GetString("no-description"); list = list + "<tr>"; list = list + "<td>" + link; list = list + HTMLWindow.CheckBox( url, ListContainsKUID(driverCommands, commandKUID) ); /*if (ListContainsKUID(driverCommands, commandKUID)) list = list + "<img src='checkbox-on.tga'>"; else list = list + "<img src='checkbox-off.tga'>";*/ list = list + "</td>"; list = list + "<td>" + link; list = list + "<img kuid='" + commandIcon + "' width=48 height=48>"; list = list + "</a></td>"; list = list + "<td>" + link; list = list + "<font color=#000000>" + BrowserInterface.Quote(commandName) + "</font></a><br>"; list = list + "<font color=#000000 size=-4>" + description + "</font>"; list = list + "</td>"; list = list + "</tr>"; } /* for (i = 0; i < driverCommands.size(); i++) { Asset commandAsset = World.FindAsset(driverCommands[i]); KUID kuid = commandAsset.GetKUID(); string icon = kuid.GetHTMLString(); string commandName; if (commandAsset) commandName = commandAsset.GetName(); else commandName = "<not installed>"; list = list + "<tr><td width=5></td><td>"; list = list + "<img kuid='" + icon + "' width=32 height=32> </td><td width=5></td><td><font color=#000000>" + BrowserInterface.Quote(commandName) + "</font>"; list = list + "</td>"; list = list + "<td width=5></td><td>"; list = list + "<font color=#000000><a href=live://property/" + ((string)i) + ">" + strTable.GetString("html_description3") + "</a></font>"; list = list + "</td></tr>"; } */ list = list + "</table>"; //if (driverCommands.size() < 20) // list = list + strTable.GetString("html_description1"); return "<html><body><font color=#000000>" + strTable.GetString("html_description2") + list + "</font></body></html>"; } // // Gets user-friendly readable name for the named property. // string GetPropertyName(string p_propertyID) { StringTable strTable = GetAsset().GetStringTable(); //if (p_propertyID == "add-object") // return strTable.GetString("property_name_add"); return "<null>"; } // // Gets user-friendly readable description of named property. // string GetPropertyDescription(string p_propertyID) { StringTable strTable = GetAsset().GetStringTable(); //if (p_propertyID == "add-object") // return strTable.GetString("property_desc_add"); return "<null>"; } // // Gets the type for the named property. // string GetPropertyType(string p_propertyID) { //if (p_propertyID == "add-object") // return "list"; return "link"; } // // Called by SetPropertValue and GetPropertyElementList to get the names of all of the // commands in the array. // /*void GetCommandNameKUIDList(string[] names, KUID[] kuids) { Asset[] commandAssets = World.GetAssetList("DriverCommand"); int i, out = 0; for (i = 0; i < commandAssets.size(); i++) { KUID kuid = commandAssets[i].GetKUID(); int n; for (n = 0; n < driverCommands.size(); n++) if (driverCommands[n] == kuid or driverCommands[n].GetName() == commandAssets[i].GetName() ) { kuid = null; break; } if (kuid) { if (names) names[out] = commandAssets[i].GetName(); if (kuids) kuids[out] = kuid; out++; } } }*/ // // Sets the value of the named property. // /*void SetPropertyValue(string p_propertyID, string p_value) { if (p_propertyID == "add-object") { string[] names = new string[0]; KUID[] kuids = new KUID[0]; GetCommandNameKUIDList(names, kuids); int i; for (i = 0; i < names.size(); i++) if (names[i] == p_value) { driverCommands[driverCommands.size()] = kuids[i]; return; } } }*/ // // Respond to a hyper-link click on the named property. // void LinkPropertyValue(string p_propertyID) { isDefault = false; int index = Str.ToInt(p_propertyID); //driverCommands[index, index + 1] = null; Asset[] commandAssets = World.GetAssetList("DriverCommand"); KUID commandKUID = commandAssets[index].GetKUID(); if (ListRemoveKUID(driverCommands, commandKUID)) { // an item was removed } else { // add an item ListAddKUID(driverCommands, commandKUID); } // this is a helper in case someone needs to know what commands are available // it may cause inconsistancies if multiple DriverCommandRules are present! // THIS IS A HACK - DONT RELY ON THIS IF AT ALL POSSIBLE CreateCommandsNow(); } // // Gets a list of elements the user can select for the named property. // public string[] GetPropertyElementList(string p_propertyID) { string[] ret = new string[0]; //if (p_propertyID == "add-object") // GetCommandNameKUIDList(ret, null); return ret; } // // Resets the commands in the Trainz world to the ones this rule has. Called by Pause() // when this behavior is unpaused to reset driver commands. // void CreateCommandsNow(void) { if (isDefault) FillDefaults(); // // Reset the driver commands list // int i, count = driverCommands.size(); DriverCommand[] dcs = World.GetDriverCommandList(); for (i = 0; i < dcs.size(); i++) World.RemoveDriverCommand(dcs[i]); Interface.Log("DriverCommandRule.CreateCommandsNow> " + dcs.size() + " commands removed"); for (i = 0; i < count; i++) { Asset commandAsset = World.FindAsset(driverCommands[i]); if (commandAsset) World.AddDriverCommand(commandAsset); } Interface.Log("DriverCommandRule.CreateCommandsNow> " + driverCommands.size() + " commands added"); } void FillDefaults(void) { Asset asset = GetAsset(); driverCommands = new KUID[11]; driverCommands[0] = asset.LookupKUIDTable("drive-to-command"); driverCommands[1] = asset.LookupKUIDTable("drive-to-trackmark-command"); driverCommands[2] = asset.LookupKUIDTable("drive-via-trackmark-command"); driverCommands[3] = asset.LookupKUIDTable("drive-schedule-command"); driverCommands[4] = asset.LookupKUIDTable("load-command"); driverCommands[5] = asset.LookupKUIDTable("unload-command"); driverCommands[6] = asset.LookupKUIDTable("couple-command"); driverCommands[7] = asset.LookupKUIDTable("decouple-command"); driverCommands[8] = asset.LookupKUIDTable("runaround-command"); driverCommands[9] = asset.LookupKUIDTable("wait-for-command"); driverCommands[10] = asset.LookupKUIDTable("notify-command"); isDefault = true; } public void AppendDependencies(KUIDList io_dependencies) { inherited(io_dependencies); int i; for (i = 0; i < driverCommands.size(); i++) io_dependencies.AddKUID(driverCommands[i]); } }; [/HTML] |
Ты попробуй [URL="http://dump.ru/file/4346628"]правило[/URL] установить снова, когда ты его скоммитишь, у тебя скорее всего появятся ошибки, т.к. трс 2010 дрянь прячет ошибки встроенного контента
|
antikiller_bmrf:
У меня не получается скоммитить это правило, ругается СМП(видимо из-за того что пиратка), но если сделать клон, его открыть для редактирования, а потом скоммитить, то ошибок никаких нету. TRam_ Сделал всё как ты написал(открыл для редактирования, взял левый скрипт, вставил в него то что ты написал, переименовал, скоммитил) но команды всёравно не отображаются(( Только делал это так же с клоном driver commands, так как потом бы не скоммитилось если бы был оригинал |
Хмм, блин. как я до клона-то не додумался...:)
[B]Iva[/B], это не из-за пиратки. Это чёртов Ауран внедрил такую систему, которая хрен коммитит встроенные куиды, которые уже открывались на редактирование. Можно только вернуть к оригиналу этот куид. А вот клон - хорошая идея. |
Я вижу один выход, устанавливать допы по порядку, пока проблема не проявит себя.
Сначала по категориям сохраняешь свой контент, и устанавливаешь. Потом в конкретной категории ищешь объект, приводящий к проблеме. Начинай искать со всякой хрени мелкой, правил, скриптов и т.д. (не думаю что виной этому здания или рельсы)) |
Да, пожалуй придётся так и сделать
(Пошёл запасаться терпением) |
Ура!
Заработало! А всё было из-за карявой команды autodrive подправил в ней конфиг и всё стало отображаться и работать |
Так там ошибка была в смр?
|
Ошибка в CMP была напротив Autodrive, а driver command было без ошибок
|
Помогите исправить такую ошибку: Error: Script class does not match asset kind (signal).
Это <kuid:189155:1068> А вот и сам скрипт: [CODE]// Original script written by Dmitry Kovaliov aka Дмитрий К & Michail Rozov aka RMM include "common.gs" include "Signal.gs" include "gs.gs" class kdakm isclass Signal { Soup settings; StringTable ST; string kmnumber1, kmnumber2; int km1,i; string MakeProperty(string link, string text) { string t; if (text=="") {t=ST.GetString("none"); } else {t=text;} return HTMLWindow.MakeLink("live://property/"+link,t); } public string GetDescriptionHTML(void) { string ret="<HTML><body>"; string bgcol=ST.GetString("BGCOLOR"); string bgcol2=ST.GetString("BGCOLOR2"); ret=ret+HTMLWindow.StartTable(); ret=ret+HTMLWindow.MakeRow(HTMLWindow.MakeCell(ST.GetString("platetext"))); ret=ret+HTMLWindow.MakeRow(HTMLWindow.MakeCell(ST.GetString("platetext1"),bgcol)+HTMLWindow.MakeCell(MakeProperty("kmnumber1",kmnumber1),bgcol2)); ret=ret+HTMLWindow.EndTable(); ret=ret+"</Body></html>"; return ret; } public string GetPropertyType(string id) { string[] tok=Str.Tokens(id,"/"); if (tok[0]=="kmnumber1") { return "string,0,4"; } return "link"; } public void SetPropertyValue(string id, string val) { string[] tok=Str.Tokens(id,"/"); if (tok[0]=="kmnumber1") { kmnumber1=val; if (kmnumber1=="") {SetFXNameText("name1"," ");} else {SetFXNameText("name1",kmnumber1);} } } public string GetPropertyName(string id) { string[] tok=Str.Tokens(id,"/"); if (tok[0]=="kmnumber1") { return ST.GetString("platetext1"); } return ""; } public Soup GetProperties(void) { Soup db=inherited(); db.SetNamedTag("kmnumber1",kmnumber1); db.SetNamedTag("kmnumber2",kmnumber2); return db; } public void SetProperties(Soup db) { kmnumber1=db.GetNamedTag("kmnumber1"); kmnumber2=kmnumber1+"a"; i=0; km1=0; for(;kmnumber2[i]!=97;i++) ; if (i==1) km1=kmnumber2[0]-48; if (i==2) km1=(kmnumber2[0]-48)*10+kmnumber2[1]-48; if (i==3) km1=(kmnumber2[0]-48)*100+(kmnumber2[1]-48)*10+kmnumber2[2]-48; if (i==4) km1=(kmnumber2[0]-48)*1000+(kmnumber2[1]-48)*100+(kmnumber2[2]-48)*10+kmnumber2[3]-48; if (i==5) km1=(kmnumber2[0]-48)*10000+(kmnumber2[1]-48)*1000+(kmnumber2[2]-48)*100+(kmnumber2[3]-48)*10+kmnumber2[4]-48; km1=km1+1; kmnumber2=km1; if (kmnumber1=="") {SetFXNameText("name0"," ");} else {SetFXNameText("name0",kmnumber1);} if (kmnumber2=="") {SetFXNameText("name1"," ");} else {SetFXNameText("name1",kmnumber2);} PostMessage(me,"kdakm","Setup",0); } public void Init(void) { inherited(); Asset self=GetAsset(); settings=self.GetConfigSoup().GetNamedSoup("settings-table"); ST=self.GetStringTable(); return; } };[/CODE] |
[url]http://www.trainsim.ru/forum/showpost.php?p=154822&postcount=77[/url]
|
[QUOTE=TRam_;157586][url]http://www.trainsim.ru/forum/showpost.php?p=154822&postcount=77[/url][/QUOTE]
Сделал всё как там написано, пробовал и jkmstolb2, и оставлял kdkam, теперь такая ошибка: [CODE]Error: Script class does not match asset kind (trackside). [/CODE] |
[B]Tram[/B], это не вокзал, а километровый столб, с вокзалами решение прекрасное.
[B]Виталик[/B], у меня этот столб ошибок не выдаёт, я его исправлял, правда уже не помню как. Сейчас скрипт такой include "common.gs" include "trackmark.gs" include "gs.gs" class kdakm isclass TrackMark { |
[QUOTE=Добрый;157612][B]Tram[/B], это не вокзал, а километровый столб, с вокзалами решение прекрасное.
[B]Виталик[/B], у меня этот столб ошибок не выдаёт, я его исправлял, правда уже не помню как. Сейчас скрипт такой include "common.gs" include "trackmark.gs" include "gs.gs" class kdakm isclass TrackMark {[/QUOTE] Спасибо огромное! Помогло!:russian: Ещё такая ошибка с Русским регионом: [CODE]Error: The Tag 'carrate' is not permitted within a container of type 'region'.[/CODE] Как это лечится? |
Насколько помню, удалением, в регионе такого тега не бывает...
|
Проще всего исправить в ССР, он явные ошибки выделяет желтым\красным, удаляй-не хочу.
|
[QUOTE=antikiller_bmrf;157669]Проще всего исправить в ССР, он явные ошибки выделяет желтым\красным, удаляй-не хочу.[/QUOTE]
Да нет, иногда бывает проще удалить вручную, в некоторых допах после удаления тега CCP начинает переставлять теги в контейнерах, и из-за этого выскакивают всё новые и новые ошибки, а при ручной правке этого как правило не бывает. |
Скажите,можно ли удалить встроенный объект?
|
Нет, никоем образом.
|
Подскажите пожалста, сегодня установил trainz 2010, пытался поставить допы, любые от выльника 1628 до деревьев каких то) постоянно выдает
Error: Failed to commit changes to asset <...Куид...> due to file access error |
посмотри антивирус... Если стоит win 7, то попробуй запустить в режиме совместимости с win XP SP3
|
Nod отрубил, запустил Км в режиме xp sp 3, не помогло..
|
а у тебя треинз на диске D ? (вообще как-то можно добавлять проги в program files в исключения с полным доступом к диску, но не знаю как)
Если он на С попробуй на D поставить... |
Не, у меня с и d системники, треинз стоит на F это логический....
|
Не, у меня он стоит на F (логический диск)
|
В каком виде устанавливаешь, в cdp или просто файлами?
откуда устанавливаешь? Установленные допы остаются, но в разделе open for edit, я правильно понял? Раньше треинз другой стоял, работало? Какая ОС? |
[QUOTE=antikiller_bmrf;159503]В каком виде устанавливаешь, в cdp или просто файлами?
откуда устанавливаешь? Установленные допы остаются, но в разделе open for edit, я правильно понял? Раньше треинз другой стоял, работало? Какая ОС?[/QUOTE] 1 Cdp 2 рабочий стол 3 пробовал, со стандартом что бы коммитил при добавлении, потом попробовал отключить( то есть сначала добавил потом коммитил вручную) , не помогло, revent тоже - 0 эмоций. Пробовал из 2009 у себя чёнить взять тоже самое. допы остаются, то та хрень написана... 4 Да и щас стоит, всё работает.. |
Проблема в следующем - имеется вагон "pv61 4179" <kuid:238268:2200111> при просмотре ошибок в CM их нет, но при попытке подтвердить изменения в вагоне вылезают вот такие ошибки:[CODE]
Имя файла '[Originals]' содержит неверные символы Ошибка изменения элемента <kuid:238268:2200111>: файл поврежден [/CODE] Может быть кто то знает в чем проблема и как ее устранить? |
Конфиг поврежден
[B]IIvIICHAEL[/B] - тут походу переустановка только, возможно проблема в том, что стоит 2 треинза (ну как я понял еще есть 2009, в котором все работает) |
Пон, переустановлю отпишусь)
|
[QUOTE=antikiller_bmrf;159612]Конфиг поврежден
[/QUOTE] Если это относится к моему сообщению, то у меня тогда вопрос: ведь если поврежден конфиг, то тогда и в CCP он бы не открылся бы на редактирование, и разве при сохранении старый не должен переписаться новым файлом? |
Так хорошо, он работает? Проблема проявляется только когда открываешь для редактирования?
|
нет так он не работает. проблема появляется при подтверждении редактирования.
|
Слишком неоднозначная ошибка, трудно что-то сказать, кинь, может посмотрю что там.
|
Имя файла содержит неверные символы - значит, один из файлов этого ассета имеет в названии кириллический символ (по собственному опыту знаю). Надо переименовать на строго латиницу (может даже "с" быть из кириллицы - выдаст ошибку).
|
Товарищ CM2 не только кириллицу, он и Скандинавские/Немецкие знаки не любит. По крайней мере у меня наотказ отказывается с ними работат. Вот и переименовываю.
|
Странно, даже не думал об этом, у меня вроде с любыми названиями работает, только фильтр в редаторе как-то странно с нелатинскими названиями работает...
|
Мы не про имя ассета, а файлов, из которых он состоит, в т.ч. графических.
|
Текущее время: 02:42. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim