Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Messages - RawCode

#1321
TL:DR - does not work as "entry" point, will be invoked before any other method in module, if no methods are invoked - no luck.

In order to test things, i checked some articles about "Module constructor C#" and found related content: http://einaregilsson.com/module-initializers-in-csharp/

Code below is "copy paste" with few additional lines.
namespace Rimgazer
{
    public static class module
    {
        public static void main()
        {
            Console.WriteLine(Environment.StackTrace);
            Console.WriteLine("LOOKS LIKE MODULE CCTOR");
        }
    }
}


In order to test how things will go, i "wrote" same loading 2 liner:

byte[] rawAssembly = File.ReadAllBytes("Rimgazer.dll");
Assembly asm = AppDomain.CurrentDomain.Load(rawAssembly);

Console.WriteLine (asm);

RuntimeHelpers.RunModuleConstructor (asm.GetModules ()[0].ModuleHandle);
Console.WriteLine ("BREAK");
asm.GetTypes ()[0].GetMethod ("main").Invoke (null, null);


RimWorld invoke no debugging, just "asm.GetTypes ()" and this invocation will not trigger module cctor.
#1322
Help / Re: rimworld could not load unity engine
November 16, 2015, 06:06:23 AM
reverse slashes
#1323
There is ATT rate that is derived from skill, sight and manipulation.

If colonist A have ATT 900 and colonist B have ATT 500, under same condition colonist A will always have better hit rate.

Basically ATT is skill*100*sight*manipulation.

Question is, where to display this value?
#1324
Mods / Re: set default permission status to unforbidden?
November 14, 2015, 05:01:58 AM
There is no way to archive this via XML, forbidden state is not related to any property.
#1325
Translations / Re: Official: Russian | Русский
November 14, 2015, 02:58:27 AM
Я не понимаю чего Вы хотите достигнуть в принципе, покажите конкретное место, желательно со скриншотом, сейвом, точным описанием, чтобы я мог повторить, где фейлит локализация, я сделаю патч который исправит именно эту ошибку именно в этом месте и подробное описание техники, которая позволит исправить все такие ошибки где бы они ни были методом внесения записей в XML фаил.

После обсудим иной феил локализации в ином месте, после следующий и так до тех пор пока фейлов найти будет нельзя.

Assembly-CSharp.dll изменять совершенно не требуется, есть методики позволяющие изменить код в рантайме и не трогать файлы игры на диске.
#1326
Help / Re: A lot of questions
November 13, 2015, 11:32:38 PM
please define your understanding of "Inventory", since there is no chests in RimWorld, if you disallow storing food in stockpiles, there is no way to store it at all.
#1327
Translations / Re: Official: Russian | Русский
November 13, 2015, 09:40:23 PM
        public override string PostProcessed(string str)
        {
            Log.Warning(str);
            return "TEST";
        }


вот такой замечательный код, который вызывается и всё чотко, только это сделано для английского языка, но не суть.

первый раз когда я реально заметил его работу - название колонии
второй раз - имена скульптур (что собственно видно из кода)

белка это или "белка" или "недостаточно белка"

извлечь падеж невозможно из слова, так как очень многие слова пересекаются.
#1328
Translations / Re: Official: Russian | Русский
November 13, 2015, 08:15:31 AM
в экселе такое писал на визуал бейзике......

регулярные выражения это конечно круто, но такое пишется сначала в большой столбик и только когда всё чотко складывается в регулярку.

я сделал вывод с этого метода в консоль, так вот, Ты уверен что именно этот метод позволяет достигнуть указанной цели, у меня вообще кроме тестовых вызовов и парочки совершенно ниочёмных вызовов не произошло и я так и не понял откуда этот метод в принципе вызывается.
я конечно предполагаю что это будет для истории и скульптур, но всё равно.


#1329
Translations / Re: Official: Russian | Русский
November 13, 2015, 05:56:11 AM
Ответил в той теме.

Сразу скажу - с твоими навыками в области C# лучше пиши, что ты хочешь, желательно с примерами и точными указаниями где что и как.

У меня есть ресурсы на любые изменения кода игры, совсем любые, вплоть до изменения отдельных строк в отдельных местах, это конечно будет не XML, но тем не менее это возможно.

У меня есть необходимые ресурсы, на то, чтобы переписать код игры не имея ни исходников ни благословения Tynan, но делать это я буду только если это реально в тему.
#1330
Help / Re: Game crushed with my dll-mod
November 13, 2015, 05:50:02 AM
language does not work as mod, you must modify file inside "core".

target is Russian cos i know that you are Russian...
#1331
Help / Re: How to get connected Rate?
November 13, 2015, 03:05:08 AM
stringBuilder.Append(base.GetInspectString());

really?

You want to switch power when rate gone negative?

provide method to "switch" power without replacing object and other magic, native and "designed"
private void UpdatePowerGrid()

Some building have CompPower, that provide reference to PowerNet that used to generate inspect string and stuff.

And, if you have problem getting CompPower -

        public CompPower PowerComp
        {
            get
            {
                return base.GetComp<CompPower>();
            }
        }


Make valid code for your object and provide it with explanation "works Y should work X"
#1332
Help / Re: A lot of questions
November 13, 2015, 02:55:43 AM
You must try self before asking for help.

ps. remove Manufactured tag

#1333
Help / Re: Game crushed with my dll-mod
November 13, 2015, 02:42:13 AM
never copy paste code from other mods mindlessly, edb injector does not work this way.

1) namespace RC.Rimgazer
{
    public class LanguageWorker_TEST : LanguageWorker
    {

        public override string PostProcessed(string str)
        {
            str = base.PostProcessed(str);
            return "TEST" + str;
        }

        public override string WithDefiniteArticle(string str)
        {
            return "FIXED TEST RETURN";
        }

        public override string WithIndefiniteArticle(string str)
        {
            return "FIXED TEST RETURN";
        }
    }
}


2) <?xml version="1.0" encoding="utf-8"?>
<LanguageInfo>
  <friendlyNameNative>Русский</friendlyNameNative>
  <friendlyNameEnglish>Russian</friendlyNameEnglish>
  <canBeTiny>true</canBeTiny>
 
  <languageWorkerClass>RC.Rimgazer.LanguageWorker_TEST</languageWorkerClass>
 
  <credits>
    <li Class="CreditRecord_Role">
      <roleKey>Credit_Translator</roleKey>
      <creditee>TarakanHB</creditee>
    </li>
    <li Class="CreditRecord_Role">
      <roleKey>Credit_Translator</roleKey>
      <creditee>Dandi</creditee>
    </li>
  </credits>
</LanguageInfo>


LanguageInfo.xml

have a nice day
#1334
Translations / Re: Name of thrumbo's origin?
November 12, 2015, 07:54:55 AM
Xerigium is probably
xenoginseng

#1335
Translations / Re: Official: Russian | Русский
November 12, 2015, 07:45:00 AM
Код всех методов можно достать ил спаем, там нигде нет обфускации.

Ситуация с падежами и числами следующая, когда автор вызывает Translate() из кода он не знает и не может знать какой падеж и число должны быть применены для конкретного языка именно в этом месте.
Еще важно отметить что не все языки имеют падежи и число, некоторые используют иные структуры.

Соответственно, эта часть должна быть внутри файла локализации.
Каким образом это сделать?
Достаточно просто Translate(1), Translate(2), Translate(3) - каждый вызов в коде имеет свой собственный уникальный номер, можно еще GUID туда запилить 128 битный если сильно надо.

А еще можно через костыли определять место в коде из которого вызван метод Translate() (про это есть методы)

Когда авторы локализации подозревают, что PsychicDroneLevel в одном месте переводится корректно, а в другом какая то шляпа, они кроме PsychicDroneLevel пишут дополнительные строки PsychicDroneLevel#998394 которая выдаёт результат с иным падежом или в ином числе.

выглядеть это будет как то так:
<PsychicDroneLevel#45345345>
45345345 - уникальный указатель данного вызова

<PsychicDroneLevel#Building_PsychicEmanator.*.2.2>

PsychicDroneLevel - ключ на который срабатывает ловушка
Building_PsychicEmanator - класс на который срабатывает ловушка
* - строка на которую срабатывает ловушка, в данном случае любая
2 - родительный падеж
2 - множественное число

соответственно предоставить автора часть кода можно, только никакого результата это не даст, так как кроме части кода еще надо все места где вызывается Translate() разметить а это 1420 случаев.