• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Не стесняюсь спросить....

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
А можно как-нибудь выделить из икаруса функции необходимые для работы компаса, и использовать только их? Или второй вариант, есть-ли в оригинальном функционале возможность определить, в какую сторону смртрит гг, т.е на север, на юг?
Икарус для компаса не нужен, в том скрипте что выше все уже есть, так что там дело за малым, перепилить возвращаемые значения на константы и все.
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Как вырезать марвин, или хотя бы один любой код?
В скриптах ничего подобного не нашел.
Никак, это можно сделать только прямыми изменениями в ехе/или костылями..
В скриптах можно удалить некоторые тестовые скрипты команд, таких как хелпер и прочих..

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

DexS

Участник форума
Регистрация
12 Мар 2015
Сообщения
38
Благодарности
3
Баллы
165
Никак, это можно сделать только прямыми изменениями в ехе/или костылями..
В скриптах можно удалить некоторые тестовые скрипты команд, таких как хелпер и прочих..

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

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Основная масса читов это коды ехе-шника, их в скриптах нет..
 

DexS

Участник форума
Регистрация
12 Мар 2015
Сообщения
38
Благодарности
3
Баллы
165
Основная масса читов это коды ехе-шника, их в скриптах нет..
я понял.)
Другой вопрос..
Вот я знаю как сделать при выборе сложности, что бы опыт меньше в разы давали.
Но в моде "велая" у корда можно выбрать уровень сложности при увеличении/уменьшении хп и силы монстров.
Это меня очень заинтересовало, но открыть скрипты велаи я не смог.(
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Попроси исходник у автора перевода..
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
DexS, скрипты Веллаи есть на немецком WoG в базе ресурсов в разделе скрипты Готики 2.
Икарус для компаса не нужен, в том скрипте что выше все уже есть, так что там дело за малым, перепилить возвращаемые значения на константы и все.
Я немного не понял что именно нужно сделать?
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Saturas, можешь пожалуйста подправить этот скрипт, просто у меня не получается. Я был бы очень благодарен.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
У меня нету столько времени, просто покажу что делать:
Код:
cont string char_0202 = "К"; //RETURN "К";//270.000° 162 '\xCA' [Alt+0202]
cont string char_0088 = "X"; //RETURN "X";//90.000°  54 '\x58' [Alt+0088]

FUNC STRING COMPASS_GETTEXT(VAR INT X,VAR INT Z)
{
VAR INT A;
VAR INT E;
VAR INT S;

//Save sign (east/west).
E=(X < 0);
//Convert IEEE binary32 float to int (scaled by 32768).
A=(X >> 23)& 255;
IF(A > 127){
    RETURN COMPASS_INVALID;
};
IF(A < 112){
    X=0;
} ELSE {
    X=((X & 8388607)| 8388608)>>(135 - A);
};

//Save sign (south/north).
S=(Z < 0);
//Convert IEEE binary32 float to int (scaled by 32768).
A=(Z >> 23)& 255;
IF(A > 127){
    RETURN COMPASS_INVALID;
};
IF(A < 112){
    Z=0;
} ELSE {
    Z=((Z & 8388607)| 8388608)>>(135 - A);
};

//Scaled x = z / x (32768 = maxium scale without int overflow).
IF(!X){
    IF(!Z){
RETURN COMPASS_UNKNOWN;
    };
    IF(S){
RETURN char_0202;//270.000° 162 '\xCA' [Alt+0202] //и вместо "K" вставляем char_0202
    };
    RETURN char_0088;//90.000°  54 '\x58' [Alt+0088] //так же тут
};
X=(Z * 32768)/ X;

//54-unit segment (90°) binary search for the scaled Tan(z/x).
//Calculated with: Round(Tan((i * 2 + 1) * PI / (n * 4)) * s).
//(where n = 54 (segment), i = [0,n-1], and s = 32768 (scale))
//The comments contain <angle> <units> <character> <keyboard>.
IF(X <=33735){            //45.833°
    IF(X <=13573){ //22.500°
IF(X <=6271){ //10.833°
        IF(X <=3348){ //5.833°
IF(X <=1431){ //2.500°
            IF(X <=477){    //0.833°
IF(E){
                RETURN "“";//180.000° 108 '\x93' [Alt+0147]
};
RETURN "!";//0.000°   0 '\x21' [Alt+0033]
            };
            IF(E){
IF(S){
                RETURN "”";//181.667° 109 '\x94' [Alt+0148]
};
RETURN "’";//178.333° 107 '\x92' [Alt+0146]
            };
            IF(S){
RETURN "я";//358.333° 215 '\xFF' [Alt+0255]
            };
            RETURN "#";//1.667°   1 '\x23' [Alt+0035]

//и так далее 255 символов

Вот пример как делать, главное символы именно копируй из самого скрипта.
Вобщем, везде где написано RETURN "символ" , делаешь константу и вписываешь вместо символа.
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Провел ОЧЕНЬ долгую роботу и получил вот это
Код:
CONST STRING COMPASS_INVALID="";
CONST STRING COMPASS_UNKNOWN=" ";

CONST string char_0202 = "К";//270.000° 162 '\xCA' [Alt+0202]
CONST string char_0088 = "X";//90.000°  54 '\x58' [Alt+0088]
CONST string char_0147 = "“";//180.000° 108 '\x93' [Alt+0147]
CONST string char_0033 = "!";//0.000°   0 '\x21' [Alt+0033]
CONST string char_0146 = "’";//178.333° 107 '\x92' [Alt+0146]
CONST string char_0148 = "”";//181.667° 109 '\x94' [Alt+0148]
CONST string char_0035 = "#";//1.667°   1 '\x23' [Alt+0035]
CONST string char_0255 = "я";//358.333° 215 '\xFF' [Alt+0255]
CONST string char_0149 = "•";//183.333° 110 '\x95' [Alt+0149]
CONST string char_0145 = "‘";//176.667° 106 '\x91' [Alt+0145]
CONST string char_0254 = "ю";//356.667° 214 '\xFE' [Alt+0254]
CONST string char_0036 = "$";//3.333°   2 '\x24' [Alt+0036]
CONST string char_0150 = "–";//185.000° 111 '\x96' [Alt+0150]
CONST string char_0142 = "Ћ";//175.000° 105 '\x8E' [Alt+0142]
CONST string char_0253 = "э";//355.000° 213 '\xFD' [Alt+0253]
CONST string char_0037 = "%";//5.000°   3 '\x25' [Alt+0037]
CONST string char_0151 = "—";//186.667° 112 '\x97' [Alt+0151]
CONST string char_0140 = "Њ";//173.333° 104 '\x8C' [Alt+0140]
CONST string char_0252 = "ь";//353.333° 212 '\xFC' [Alt+0252]
CONST string char_0038 = "&";//6.667°   4 '\x26' [Alt+0038]
CONST string char_0152 = "˜";//188.333° 113 '\x98' [Alt+0152]
CONST string char_0139 = "‹";//171.667° 103 '\x8B' [Alt+0139]
CONST string char_0251 = "ы";//351.667° 211 '\xFB' [Alt+0251]
CONST string char_0039 = "'";//8.333°   5 '\x27' [Alt+0039]
CONST string char_0153 = "™";//190.000° 114 '\x99' [Alt+0153]
CONST string char_0138 = "Љ";//170.000° 102 '\x8A' [Alt+0138]
CONST string char_0250 = "ъ";//350.000° 210 '\xFA' [Alt+0250]
CONST string char_0040 = "(";//10.000°   6 '\x28' [Alt+0040]
CONST string char_0154 = "љ";//191.667° 115 '\x9A' [Alt+0154]
CONST string char_0137 = "‰";//168.333° 101 '\x89' [Alt+0137]
CONST string char_0249 = "щ";//348.333° 209 '\xF9' [Alt+0249]
CONST string char_0041 = ")";//11.667°   7 '\x29' [Alt+0041]
CONST string char_0155 = "›";//193.333° 116 '\x9B' [Alt+0155]
CONST string char_0136 = "€";//166.667° 100 '\x88' [Alt+0136]
CONST string char_0248 = "ш";//346.667° 208 '\xF8' [Alt+0248]
CONST string char_0042 = "*";//13.333°   8 '\x2A' [Alt+0042]
CONST string char_0156 = "њ";//195.000° 117 '\x9C' [Alt+0156]
CONST string char_0135 = "‡";//165.000°  99 '\x87' [Alt+0135]
CONST string char_0247 = "ч";//345.000° 207 '\xF7' [Alt+0247]
CONST string char_0043 = "+";//15.000°   9 '\x2B' [Alt+0043]
CONST string char_0158 = "ћ";//196.667° 118 '\x9E' [Alt+0158]
CONST string char_0134 = "†";//163.333°  98 '\x86' [Alt+0134]
CONST string char_0246 = "ц";//343.333° 206 '\xF6' [Alt+0246]
CONST string char_0044 = ",";//16.667°  10 '\x2C' [Alt+0044]
CONST string char_0159 = "џ";//198.333° 119 '\x9F' [Alt+0159]
CONST string char_0133 = "…";//161.667°  97 '\x85' [Alt+0133]
CONST string char_0245 = "х";//341.667° 205 '\xF5' [Alt+0245]
CONST string char_0045 = "-";//18.333°  11 '\x2D' [Alt+0045]
CONST string char_0160 = " ";//200.000° 120 '\xA0' [Alt+0160]
CONST string char_0132 = "„";//160.000°  96 '\x84' [Alt+0132]
CONST string char_0244 = "ф";//340.000° 204 '\xF4' [Alt+0244]
CONST string char_0046 = ".";//20.000°  12 '\x2E' [Alt+0046]
CONST string char_0161 = "Ў";//201.667° 121 '\xA1' [Alt+0161]
CONST string char_0131 = "ѓ";//158.333°  95 '\x83' [Alt+0131]
CONST string char_0243 = "у";//338.333° 203 '\xF3' [Alt+0243]
CONST string char_0047 = "/";//21.667°  13 '\x2F' [Alt+0047]
CONST string char_0162 = "ў";//203.333° 122 '\xA2' [Alt+0162]
CONST string char_0130 = "‚";//156.667°  94 '\x82' [Alt+0130]
CONST string char_0242 = "т";//336.667° 202 '\xF2' [Alt+0242]
CONST string char_0048 = "0";//23.333°  14 '\x30' [Alt+0048]
CONST string char_0163 = "Ј";//205.000° 123 '\xA3' [Alt+0163]
CONST string char_0128 = "Ђ";//155.000°  93 '\x80' [Alt+0128]
CONST string char_0241 = "с";//335.000° 201 '\xF1' [Alt+0241]
CONST string char_0049 = "1";//25.000°  15 '\x31' [Alt+0049]
CONST string char_0164 = "¤";//206.667° 124 '\xA4' [Alt+0164]
CONST string char_0126 = "~";//153.333°  92 '\x7E' [Alt+0126]
CONST string char_0340 = "р";//333.333° 200 '\xF0' [Alt+0240]
CONST string char_0050 = "2";//26.667°  16 '\x32' [Alt+0050]
CONST string char_0165 = "Ґ";//208.333° 125 '\xA5' [Alt+0165]
CONST string char_0125 = "}";//151.667°  91 '\x7D' [Alt+0125]
CONST string char_0239 = "п";//331.667° 199 '\xEF' [Alt+0239]
CONST string char_0051 = "3";//28.333°  17 '\x33' [Alt+0051]
CONST string char_0166 = "¦";//210.000° 126 '\xA6' [Alt+0166]
CONST string char_0124 = "|";//150.000°  90 '\x7C' [Alt+0124]
CONST string char_0238 = "о";//330.000° 198 '\xEE' [Alt+0238]
CONST string char_0052 = "4";//30.000°  18 '\x34' [Alt+0052]
CONST string char_0167 = "§";//211.667° 127 '\xA7' [Alt+0167]
CONST string char_0123 = "{";//148.333°  89 '\x7B' [Alt+0123]
CONST string char_0237 = "н";//328.333° 197 '\xED' [Alt+0237]
CONST string char_0053 = "5";//31.667°  19 '\x35' [Alt+0053]
CONST string char_0168 = "Ё";//213.333° 128 '\xA8' [Alt+0168]
CONST string char_0122 = "z";//146.667°  88 '\x7A' [Alt+0122]
CONST string char_0236 = "м";//326.667° 196 '\xEC' [Alt+0236]
CONST string char_0054 = "6";//33.333°  20 '\x36' [Alt+0054]
CONST string char_0169 = "©";//215.000° 129 '\xA9' [Alt+0169]
CONST string char_0121 = "y";//145.000°  87 '\x79' [Alt+0121]
CONST string char_0235 = "л";//325.000° 195 '\xEB' [Alt+0235]
CONST string char_0055 = "7";//35.000°  21 '\x37' [Alt+0055]
CONST string char_0170 = "Є";//216.667° 130 '\xAA' [Alt+0170]
CONST string char_0120 = "x";//143.333°  86 '\x78' [Alt+0120]
CONST string char_0234 = "к";//323.333° 194 '\xEA' [Alt+0234]
CONST string char_0056 = "8";//36.667°  22 '\x38' [Alt+0056]
CONST string char_0171 = "«";//218.333° 131 '\xAB' [Alt+0171]
CONST string char_0119 = "w";//141.667°  85 '\x77' [Alt+0119]
CONST string char_0233 = "й";//321.667° 193 '\xE9' [Alt+0233]
CONST string char_0057 = "9";//38.333°  23 '\x39' [Alt+0057]
CONST string char_0172 = "¬";//220.000° 132 '\xAC' [Alt+0172]
CONST string char_0118 = "v";//140.000°  84 '\x76' [Alt+0118]
CONST string char_0232 = "и";//320.000° 192 '\xE8' [Alt+0232]
CONST string char_0058 = ":";//40.000°  24 '\x3A' [Alt+0058]
CONST string char_0173 = "";//221.667° 133 '\xAD' [Alt+0173]
CONST string char_0117 = "u";//138.333°  83 '\x75' [Alt+0117]
CONST string char_0231 = "з";//318.333° 191 '\xE7' [Alt+0231]
CONST string char_0059 = ";";//41.667°  25 '\x3B' [Alt+0059]
CONST string char_0174 = "®";//223.333° 134 '\xAE' [Alt+0174]
CONST string char_0116 = "t";//136.667°  82 '\x74' [Alt+0116]
CONST string char_0230 = "ж";//316.667° 190 '\xE6' [Alt+0230]
CONST string char_0060 = "<";//43.333°  26 '\x3C' [Alt+0060]
CONST string char_0175 = "Ї";//225.000° 135 '\xAF' [Alt+0175]
CONST string char_0115 = "s";//135.000°  81 '\x73' [Alt+0115]
CONST string char_0229 = "е";//315.000° 189 '\xE5' [Alt+0229]
CONST string char_0061 = "=";//45.000°  27 '\x3D' [Alt+0061]
CONST string char_0176 = "°";//226.667° 136 '\xB0' [Alt+0176]
CONST string char_0114 = "r";//133.333°  80 '\x72' [Alt+0114]
CONST string char_0228 = "д";//313.333° 188 '\xE4' [Alt+0228]
CONST string char_0062 = ">";//46.667°  28 '\x3E' [Alt+0062]
CONST string char_0177 = "±";//228.333° 137 '\xB1' [Alt+0177]
CONST string char_0113 = "q";//131.667°  79 '\x71' [Alt+0113]
CONST string char_0227 = "г";//311.667° 187 '\xE3' [Alt+0227]
CONST string char_0063 = "?";//48.333°  29 '\x3F' [Alt+0063]
CONST string char_0178 = "І";//230.000° 138 '\xB2' [Alt+0178]
CONST string char_0112 = "p";//130.000°  78 '\x70' [Alt+0112]
CONST string char_0226 = "в";//310.000° 186 '\xE2' [Alt+0226]
CONST string char_0064 = "@";//50.000°  30 '\x40' [Alt+0064]
CONST string char_0179 = "і";//231.667° 139 '\xB3' [Alt+0179]
CONST string char_0111 = "o";//128.333°  77 '\x6F' [Alt+0111]
CONST string char_0225 = "б";//308.333° 185 '\xE1' [Alt+0225]
CONST string char_0065 = "A";//51.667°  31 '\x41' [Alt+0065]
CONST string char_0180 = "ґ";//233.333° 140 '\xB4' [Alt+0180]
CONST string char_0110 = "n";//126.667°  76 '\x6E' [Alt+0110]
CONST string char_0224 = "а";//306.667° 184 '\xE0' [Alt+0224]
CONST string char_0066 = "B";//53.333°  32 '\x42' [Alt+0066]
CONST string char_0181 = "µ";//235.000° 141 '\xB5' [Alt+0181]
CONST string char_0109 = "m";//125.000°  75 '\x6D' [Alt+0109]
CONST string char_0223 = "Я";//305.000° 183 '\xDF' [Alt+0223]
CONST string char_0067 = "C";//55.000°  33 '\x43' [Alt+0067]
CONST string char_0182 = "¶";//236.667° 142 '\xB6' [Alt+0182]
CONST string char_0108 = "l";//123.333°  74 '\x6C' [Alt+0108]
CONST string char_0222 = "Ю";//303.333° 182 '\xDE' [Alt+0222]
CONST string char_0068 = "D";//56.667°  34 '\x44' [Alt+0068]
CONST string char_0183 = "·";//238.333° 143 '\xB7' [Alt+0183]
CONST string char_0107 = "k";//121.667°  73 '\x6B' [Alt+0107]
CONST string char_0221 = "Э";//301.667° 181 '\xDD' [Alt+0221]
CONST string char_0069 = "E";//58.333°  35 '\x45' [Alt+0069]
CONST string char_0184 = "ё";//240.000° 144 '\xB8' [Alt+0184]
CONST string char_0106 = "j";//120.000°  72 '\x6A' [Alt+0106]
CONST string char_0220 = "Ь";//300.000° 180 '\xDC' [Alt+0220]
CONST string char_0070 = "F";//60.000°  36 '\x46' [Alt+0070]
CONST string char_0185 = "№";//241.667° 145 '\xB9' [Alt+0185]
CONST string char_0105 = "i";//118.333°  71 '\x69' [Alt+0105]
CONST string char_0219 = "Ы";//298.333° 179 '\xDB' [Alt+0219]
CONST string char_0071 = "G";//61.667°  37 '\x47' [Alt+0071]
CONST string char_0186 = "є";//243.333° 146 '\xBA' [Alt+0186]
CONST string char_0104 = "h";//116.667°  70 '\x68' [Alt+0104]
CONST string char_0218 = "Ъ";//296.667° 178 '\xDA' [Alt+0218]
CONST string char_0072 = "H";//63.333°  38 '\x48' [Alt+0072]
CONST string char_0187 = "»";//245.000° 147 '\xBB' [Alt+0187]
CONST string char_0103 = "g";//115.000°  69 '\x67' [Alt+0103]
CONST string char_0217 = "Щ";//295.000° 177 '\xD9' [Alt+0217]
CONST string char_0073 = "I";//65.000°  39 '\x49' [Alt+0073]
CONST string char_0188 = "ј";//246.667° 148 '\xBC' [Alt+0188]
CONST string char_0102 = "f";//113.333°  68 '\x66' [Alt+0102]
CONST string char_0216 = "Ш";//293.333° 176 '\xD8' [Alt+0216]
CONST string char_0074 = "J";//66.667°  40 '\x4A' [Alt+0074]
CONST string char_0189 = "Ѕ";//248.333° 149 '\xBD' [Alt+0189]
CONST string char_0101 = "e";//111.667°  67 '\x65' [Alt+0101]
CONST string char_0215 = "Ч";//291.667° 175 '\xD7' [Alt+0215]
CONST string char_0075 = "K";//68.333°  41 '\x4B' [Alt+0075]
CONST string char_0190 = "ѕ";//250.000° 150 '\xBE' [Alt+0190]
CONST string char_0100 = "d";//110.000°  66 '\x64' [Alt+0100]
CONST string char_0214 = "Ц";//290.000° 174 '\xD6' [Alt+0214]
CONST string char_0076 = "L";//70.000°  42 '\x4C' [Alt+0076]
CONST string char_0191 = "ї";//251.667° 151 '\xBF' [Alt+0191]
CONST string char_0099 = "c";//108.333°  65 '\x63' [Alt+0099]
CONST string char_0213 = "Х";//288.333° 173 '\xD5' [Alt+0213]
CONST string char_0077 = "M";//71.667°  43 '\x4D' [Alt+0077]
CONST string char_0192 = "А";//253.333° 152 '\xC0' [Alt+0192]
CONST string char_0098 = "b";//106.667°  64 '\x62' [Alt+0098]
CONST string char_0212 = "Ф";//286.667° 172 '\xD4' [Alt+0212]
CONST string char_0078 = "N";//73.333°  44 '\x4E' [Alt+0078]
CONST string char_0193 = "Б";//255.000° 153 '\xC1' [Alt+0193]
CONST string char_0097 = "a";//105.000°  63 '\x61' [Alt+0097]
CONST string char_0211 = "У";//285.000° 171 '\xD3' [Alt+0211]
CONST string char_0079 = "O";//75.000°  45 '\x4F' [Alt+0079]
CONST string char_0194 = "В";//256.667° 154 '\xC2' [Alt+0194]
CONST string char_0096 = "`";//103.333°  62 '\x60' [Alt+0096]
CONST string char_0210 = "Т";//283.333° 170 '\xD2' [Alt+0210]
CONST string char_0080 = "P";//76.667°  46 '\x50' [Alt+0080]
CONST string char_0195 = "Г";//258.333° 155 '\xC3' [Alt+0195]
CONST string char_0095 = "_";//101.667°  61 '\x5F' [Alt+0095]
CONST string char_0209 = "С";//281.667° 169 '\xD1' [Alt+0209]
CONST string char_0081 = "Q";//78.333°  47 '\x51' [Alt+0081]
CONST string char_0196 = "Д";//260.000° 156 '\xC4' [Alt+0196]
CONST string char_0094 = "^";//100.000°  60 '\x5E' [Alt+0094]
CONST string char_0208 = "Р";//280.000° 168 '\xD0' [Alt+0208]
CONST string char_0082 = "R";//80.000°  48 '\x52' [Alt+0082]
CONST string char_0197 = "Е";//261.667° 157 '\xC5' [Alt+0197]
CONST string char_0093 = "]";//98.333°  59 '\x5D' [Alt+0093]
CONST string char_0207 = "П";//278.333° 167 '\xCF' [Alt+0207]
CONST string char_0083 = "S";//81.667°  49 '\x53' [Alt+0083]
CONST string char_0198 = "Ж";//263.333° 158 '\xC6' [Alt+0198]
CONST string char_0092 = "\"; //96.667°  58 '\x5C' [Alt+0092]
CONST string char_0206 = "О";//276.667° 166 '\xCE' [Alt+0206]
CONST string char_0084 = "T";//83.333°  50 '\x54' [Alt+0084]
CONST string char_0199 = "З";//265.000° 159 '\xC7' [Alt+0199]
CONST string char_0091 = "[";//95.000°  57 '\x5B' [Alt+0091]
CONST string char_0205 = "Н";//275.000° 165 '\xCD' [Alt+0205]
CONST string char_0085 = "U";//85.000°  51 '\x55' [Alt+0085]
CONST string char_0200 = "И";//266.667° 160 '\xC8' [Alt+0200]
CONST string char_0090 = "Z";//93.333°  56 '\x5A' [Alt+0090]
CONST string char_0204 = "М";//273.333° 164 '\xCC' [Alt+0204]
CONST string char_0086 = "V";//86.667°  52 '\x56' [Alt+0086]
CONST string char_0201 = "Й";//268.333° 161 '\xC9' [Alt+0201]
CONST string char_0089 = "Y";//91.667°  55 '\x59' [Alt+0089]
CONST string char_0203 = "Л";//271.667° 163 '\xCB' [Alt+0203]
CONST string char_0087 = "W";//88.333°  53 '\x57' [Alt+0087]


FUNC STRING COMPASS_GETTEXT(VAR INT X,VAR INT Z)
{
VAR INT A;
VAR INT E;
VAR INT S;

//Save sign (east/west).
E=(X < 0);
//Convert IEEE binary32 float to int (scaled by 32768).
A=(X >> 23)& 255;
IF(A > 127){
    RETURN COMPASS_INVALID;
};
IF(A < 112){
    X=0;
} ELSE {
    X=((X & 8388607)| 8388608)>>(135 - A);
};

//Save sign (south/north).
S=(Z < 0);
//Convert IEEE binary32 float to int (scaled by 32768).
A=(Z >> 23)& 255;
IF(A > 127){
    RETURN COMPASS_INVALID;
};
IF(A < 112){
    Z=0;
} ELSE {
    Z=((Z & 8388607)| 8388608)>>(135 - A);
};

//Scaled x = z / x (32768 = maxium scale without int overflow).
IF(!X){
    IF(!Z){
RETURN COMPASS_UNKNOWN;
    };
    IF(S){
RETURN char_0202;
    };
    RETURN char_0088;
};
X=(Z * 32768)/ X;

//54-unit segment (90°) binary search for the scaled Tan(z/x).
//Calculated with: Round(Tan((i * 2 + 1) * PI / (n * 4)) * s).
//(where n = 54 (segment), i = [0,n-1], and s = 32768 (scale))
//The comments contain <angle> <units> <character> <keyboard>.
IF(X <=33735){            //45.833°
    IF(X <=13573){ //22.500°
IF(X <=6271){ //10.833°
        IF(X <=3348){ //5.833°
IF(X <=1431){ //2.500°
            IF(X <=477){    //0.833°
IF(E){
                RETURN char_0147;
};
RETURN char_0033;
            };
            IF(E){
IF(S){
                RETURN char_0148;
};
RETURN char_0146;
            };
            IF(S){
RETURN char_0255;
            };
            RETURN char_0035;
};
IF(X <=2387){ //4.167°
            IF(E){
IF(S){
                RETURN char_0149;
};
RETURN char_0148;
            };
            IF(S){
RETURN char_0254;
            };
            RETURN char_0036;
};
IF(E){
            IF(S){
RETURN char_0150;
            };
            RETURN char_0142;
};
IF(S){
            RETURN char_0253;
};
RETURN char_0037;
        };
        IF(X <=5288){ //9.167°
IF(X <=4314){ //7.500°
            IF(E){
IF(S){
                RETURN char_0151;
};
RETURN char_0140;
            };
            IF(S){
RETURN char_0252;
            };
            RETURN char_0038;
};
IF(E){
            IF(S){
RETURN char_0152;
            };
            RETURN char_0139;
};
IF(S){
            RETURN char_0251;
};
RETURN char_0039;
        };
        IF(E){
IF(S){
            RETURN char_0153;
};
RETURN char_0138;
        };
        IF(S){
RETURN char_0250;
        };
        RETURN char_0040;
};
IF(X <=10332){        //17.500°
        IF(X <=8271){ //14.167°
IF(X <=7264){ //12.500°
            IF(E){
IF(S){
                RETURN char_0154;
};
RETURN char_0137;
            };
            IF(S){
RETURN char_0249;
            };
            RETURN char_0041;
};
IF(E){
            IF(S){
RETURN char_0155;
            };
            RETURN char_0136;
};
IF(S){
            RETURN char_0248;
};
RETURN char_0042;
        };
        IF(X <=9293){ //15.833°
IF(E){
            IF(S){
RETURN char_0156;
            };
            RETURN char_0135;
};
IF(S){
            RETURN char_0247;
};
RETURN char_0043;
        };
        IF(E){
IF(S){
            RETURN char_0158;
};
RETURN char_0134;
        };
        IF(S){
RETURN char_0146;
        };
        RETURN char_0044;
};
IF(X <=12469){        //20.833°
        IF(X <=11390){ //19.167°
IF(E){
            IF(S){
RETURN char_0159;
            };
            RETURN char_0133;
};
IF(S){
            RETURN char_0245;
};
RETURN char_0045;
        };
        IF(E){
IF(S){
            RETURN char_0160;
};
RETURN char_0132;
        };
        IF(S){
RETURN char_0244;
        };
        RETURN char_0046;
};
IF(E){
        IF(S){
RETURN char_0161;
        };
        RETURN char_0131;
};
IF(S){
        RETURN char_0243;
};
RETURN char_0047;
    };
    IF(X <=22241){ //34.167°
IF(X <=18288){        //29.167°
        IF(X <=15864){ //25.833°
IF(X <=14704){    //24.167°
            IF(E){
IF(S){
                RETURN char_0162;
};
RETURN char_0130;
            };
            IF(S){
RETURN char_0242;
            };
            RETURN char_0048;
};
IF(E){
            IF(S){
RETURN char_0163;
            };
            RETURN char_0128;
};
IF(S){
            RETURN char_0241;
};
RETURN char_0049;
        };
        IF(X <=17058){ //27.500°
IF(E){
            IF(S){
RETURN char_0164;
            };
            RETURN char_0126;
};
IF(S){
            RETURN char_0340;
};
RETURN char_0050;
        };
        IF(E){
IF(S){
            RETURN char_0165;
};
RETURN char_0125;
        };
        IF(S){
RETURN char_0239;
        };
        RETURN char_0051;
};
IF(X <=20876){        //32.500°
        IF(X <=19559){ //30.833°
IF(E){
            IF(S){
RETURN char_0166;
            };
            RETURN char_0124;
};
IF(S){
            RETURN char_0238;
};
RETURN char_0052;
        };
        IF(E){
IF(S){
            RETURN char_0167;
};
RETURN char_0123;
        };
        IF(S){
RETURN char_0237;
        };
        RETURN char_0053;
};
IF(E){
        IF(S){
RETURN char_0168;
        };
        RETURN char_0122;
};
IF(S){
        RETURN char_0236;
};
RETURN char_0054;
    };
    IF(X <=28318){ //40.833°
IF(X <=25144){        //37.500°
        IF(X <=23662){ //35.833°
IF(E){
            IF(S){
RETURN char_0169;
            };
            RETURN char_0121;
};
IF(S){
            RETURN char_0235;
};
RETURN char_0055;
        };
        IF(E){
IF(S){
            RETURN char_0170;
};
RETURN char_0120;
        };
        IF(S){
RETURN char_0234;
        };
        RETURN char_0056;
};
IF(X <=26693){        //39.167°
        IF(E){
IF(S){
            RETURN char_0171;
};
RETURN char_0119;
        };
        IF(S){
RETURN char_0233;
        };
        RETURN char_0057;
};
IF(E){
        IF(S){
RETURN char_0172;
        };
        RETURN char_0118;
};
IF(S){
        RETURN char_0232;
};
RETURN char_0058;
    };
    IF(X <=31828){ //44.167°
IF(X <=30026){        //42.500°
        IF(E){
IF(S){
            RETURN char_0173;
};
RETURN char_0117;
        };
        IF(S){
RETURN char_0231;
        };
        RETURN char_0059;
};
IF(E){
        IF(S){
RETURN char_0174;
        };
        RETURN char_0116;
};
IF(S){
        RETURN char_0230;
};
RETURN char_0060;
    };
    IF(E){ 
IF(S){
        RETURN char_0175;
};
RETURN char_0115;
    };
    IF(S){
RETURN char_0229;
    };
    RETURN char_0061;
};
IF(X <=86111){            //69.167°
    IF(X <=51435){ //57.500°
IF(X <=42704){        //52.500°
        IF(X <=37917){ //49.167°
IF(X <=35760){    //47.500°
            IF(E){
IF(S){
                RETURN char_0176;
};
RETURN char_0114;
            };
            IF(S){
RETURN char_0228;
            };
            RETURN char_0062;
};
IF(E){
            IF(S){
RETURN char_0177;
            };
            RETURN char_0113;
};
IF(S){
            RETURN char_0227;
};
RETURN char_0063;
        };
        IF(X <=40225){ //50.833°
IF(E){
            IF(S){
RETURN char_0178;
            };
            RETURN char_0112;
};
IF(S){
            RETURN char_0226;
};
RETURN char_0064;
        };
        IF(E){
IF(S){
            RETURN char_0179;
};
RETURN char_0111;
        };
        IF(S){
RETURN char_0225;
        };
        RETURN char_0065;
};
IF(X <=48277){        //55.833°
        IF(X <=45378){ //54.167°
IF(E){
            IF(S){
RETURN char_0180;
            };
            RETURN char_0110;
};
IF(S){
            RETURN char_0224;
};
RETURN char_0066;
        };
        IF(E){
IF(S){
            RETURN char_0181;
};
RETURN char_0109;
        };
        IF(S){
RETURN char_0223;
        };
        RETURN char_0067;
};
IF(E){
        IF(S){
RETURN char_0182;
        };
        RETURN char_0108;
};
IF(S){
        RETURN char_0222;
};
RETURN char_0068;
    };
    IF(X <=67683){ //64.167°
IF(X <=58712){        //60.833°
        IF(X <=54896){ //59.167°
IF(E){
            IF(S){
RETURN char_0183;
            };
            RETURN char_0107;
};
IF(S){
            RETURN char_0221;
};
RETURN char_0069;
        };
        IF(E){
IF(S){
            RETURN char_0184;
};
RETURN char_0106;
        };
        IF(S){
RETURN char_0220;
        };
        RETURN char_0070;
};
IF(X <=62947){        //62.500°
        IF(E){
IF(S){
            RETURN char_0185;
};
RETURN char_0105;
        };
        IF(S){
RETURN char_0219;
        };
        RETURN char_0071;
};
IF(E){
        IF(S){
RETURN char_0186;
        };
        RETURN char_0104;
};
IF(S){
        RETURN char_0218;
};
RETURN char_0072;
    };
    IF(X <=79109){ //67.500°
IF(X <=73026){        //65.833°
        IF(E){
IF(S){
            RETURN char_0187;
};
RETURN char_0103;
        };
        IF(S){
RETURN char_0217;
        };
        RETURN char_0073;
};
IF(E){
        IF(S){
RETURN char_0188;
        };
        RETURN char_0102;
};
IF(S){
        RETURN char_0216;
};
RETURN char_0074;
    };
    IF(E){
IF(S){
        RETURN char_0189;
};
RETURN char_0101;
    };
    IF(S){
RETURN char_0215;
    };
    RETURN char_0075;
};
IF(X <=203064){ //80.833°
    IF(X <=129815){ //75.833°
IF(X <=103927){ //72.500°
        IF(X <=94273){ //70.833°
IF(E){
            IF(S){
RETURN char_0190;
            };
            RETURN char_0100;
};
IF(S){
            RETURN char_0214;
};
RETURN char_0076;
        };
        IF(E){
IF(S){
            RETURN char_0191;
};
RETURN char_0099;
        };
        IF(S){
RETURN char_0213;
        };
        RETURN char_0077;
};
IF(X <=115543){ //74.167°
        IF(E){ 
IF(S){
            RETURN char_0192;
};
RETURN char_0098;
        };
        IF(S){
RETURN char_0212;
        };
        RETURN char_0078;
};
IF(E){
        IF(S){
RETURN char_0193;
        };
        RETURN char_0097;
};
IF(S){
        RETURN char_0211;
};
RETURN char_0079;
    };
    IF(X <=171235){ //79.167°
IF(X <=147807){ //77.500°
        IF(E){
IF(S){
            RETURN char_0194;
};
RETURN char_0096;
        };
        IF(S){
RETURN char_0210;
        };
        RETURN char_0080;
};
IF(E){
        IF(S){
RETURN char_0195;
        };
        RETURN char_0095;
};
IF(S){
        RETURN char_0209;
};
RETURN char_0081;
    };
    IF(E){
IF(S){
        RETURN char_0196;
};
RETURN char_0094;
    };
    IF(S){
RETURN char_0208;
    };
    RETURN char_0082;
};
IF(X <=449798){ //85.833°
    IF(X <=320739){ //84.167°
IF(X <=248898){ //82.500°
        IF(E){
IF(S){
            RETURN char_0197;
};
RETURN char_0093;
        };
        IF(S){
RETURN char_0207;
        };
        RETURN char_0083;
};
IF(E){
        IF(S){
RETURN char_0198;
        };
        RETURN char_0092;
};
IF(S){
        RETURN char_0206;
};
RETURN char_0084;
    };
    IF(E){
IF(S){
        RETURN char_0199;
};
RETURN char_0091;
    };
    IF(S){
RETURN char_0205;
    };
    RETURN char_0085;
};
IF(X <=2252803){ //89.167°
    IF(X <=750511){ //87.500°
IF(E){
        IF(S){
RETURN char_0200;
        };
        RETURN char_0090;
};
IF(S){
        RETURN char_0204;
};
RETURN char_0086;
    };
    IF(E){
IF(S){
        RETURN char_0201;
};
RETURN char_0089;
    };
    IF(S){
RETURN char_0203;
    };
    RETURN char_0087;
};
IF(S){
    RETURN char_0202;
};
RETURN char_0088;
};

//
//Helper class to directly access the AtVector of a zCVob object.
//
CLASS COMPASS_VOBINFO
{
//zCObject {
VAR INT _VTBL;//0x0000
VAR INT REFCTR;//0x0004 int
VAR INT HASHINDEX;//0x0008 zWORD
VAR INT HASHNEXT;//0x000C zCObject*
VAR STRING OBJECTNAME;//0x0010 zSTRING
//}
VAR INT GLOBALVOBTREENODE;//0x0024 zCTree<zCVob>*
VAR INT LASTTIMEDRAWN;//0x0028 zTFrameCtr
VAR INT LASTTIMECOLLECTED;//0x002C zDWORD
//zCArray<zCBspLeaf*> {
VAR INT VOBLEAFLIST_ARRAY;//0x0030 zCBspLeaf**
VAR INT VOBLEAFLIST_NUMALLOC;//0x0034 int
VAR INT VOBLEAFLIST_NUMINARRAY;//0x0038 int
//}
VAR INT TRAFOOBJTOWORLD[16];    //0x003C zMATRIX4
//zTBBox3D {
VAR INT BBOX3D_MINS[3];//0x007C zPOINT3
VAR INT BBOX3D_MAXS[3];//0x0088 zPOINT3
//}
//...
//The following fields differ in Gothic I and Gothic II.
//...
};

//
//Returns the compass character for the current player character.
//
FUNC STRING COMPASS_FORHERO()
{
VAR COMPASS_VOBINFO H;

H=HLP_GETNPC(HLP_GETINSTANCEID(HERO));
IF(!HLP_ISVALIDNPC(H)){
    RETURN COMPASS_INVALID;
};
RETURN COMPASS_GETTEXT(H.TRAFOOBJTOWORLD[2],H.TRAFOOBJTOWORLD[10]);
};
Какую функцию из этого скрипта надо вставить в зацикленную функцию чтобы все работало?

И еще, где указать шрифт? Все комплектуется, но в игре запустить не получается.
 
Последнее редактирование:

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Все просто, через функцию принт скрин, нужно повесить на какойнибудь цикл, например на триггер скрипт.
Код:
PrintScreen(COMPASS_FORHERO(), 70,70,"COMPASS_LINE128.TGA",1);
Шрифт кто то выше выкладывал тут.

Вообще, тк оформил скрипт хорошо, выложи его в базе данных скриптов, думаю многим пригодится.
 

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Я так и собирался сделать. Что-то всеравно не работает
 
Последнее редактирование:

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Даж работает, вот.

p.s. выложи сам .d файл в архиве вместе со шрифтами
И вот еще, огромная тебе благодарность, осилить такую кропотливую работу, это надо еще уметь.*flowers*

P.s[2] DEP включен на полную кстати, работе моего расширителя, и этого компаса ничто не мешает, чего не сказать про икарусы, вот.
 

Вложения

  • Компас епту.jpg
    Компас епту.jpg
    834,5 KB · Просмотры: 305
Последнее редактирование:

Orc Hunter


Модостроитель
Регистрация
12 Окт 2013
Сообщения
1.269
Благодарности
1.667
Баллы
305
Я тупонул, все отлично работает, спасибо огромное. Думаю завта выложу скрипт в базу данных.
 

DexS

Участник форума
Регистрация
12 Мар 2015
Сообщения
38
Благодарности
3
Баллы
165
У меня беда.
Взял текстуры 4-х демонов: каменного,болотного,ледяного, темного.
Взял текстуры 4-х снепперов: огненного,ледяного, ну и ещё 2.
Так вот, все одинаковые получаются.
Раньше все нормально было...
Что делаю:
Декомпилировал файл demon.msb и snapper.msb
вот меняю название файла dem2_body.asc на (название текстуры) DEM_BODY_DARK-C.asc
Открываю файл в этой строчке прописываю:
было: *BITMAP "DEM2_BODY.TGA"
прописал: *BITMAP "DEM_BODY_DARK-C.TGA"
затем открываю соурсер, копирую файл демона лорда и создаю под названием demon_dark
скрипт:
prototype MST_DEFAULT_DEMONDARK(C_Npc)
{
name[0] = "Демон тьмы";
guild = GIL_DEMON;
aivar[AIV_MM_REAL_ID] = ID_DEMON_LORD;
level = 70;
attribute[ATR_STRENGTH] = 300;
attribute[ATR_DEXTERITY] = 300;
attribute[ATR_HITPOINTS_MAX] = 1200;
attribute[ATR_HITPOINTS] = 1200;
attribute[ATR_MANA_MAX] = 200;
attribute[ATR_MANA] = 200;
protection[PROT_BLUNT] = 200;
protection[PROT_EDGE] = 200;
protection[PROT_POINT] = 200;
protection[PROT_FIRE] = 200;
protection[PROT_FLY] = 200;
protection[PROT_MAGIC] = 200;
damagetype = DAM_EDGE;
fight_tactic = FAI_DEMON;
senses = SENSE_HEAR | SENSE_SEE | SENSE_SMELL;
senses_range = PERC_DIST_MONSTER_ACTIVE_MAX;
aivar[AIV_MM_FollowTime] = FOLLOWTIME_MEDIUM;
aivar[AIV_MM_FollowInWater] = TRUE;
aivar[AIV_MM_Packhunter] = FALSE;
start_aistate = ZS_MM_AllScheduler;
aivar[AIV_MM_RestStart] = OnlyRoutine;
};

func void b_setvisuals_demondark()
{
Mdl_SetVisual(self,"Demon.mds");
Mdl_SetVisualBody(self,"DEM_BODY_DARK-C",DEFAULT,DEFAULT,"",DEFAULT,DEFAULT,-1);
};


instance DEMONDARK(MST_DEFAULT_DEMONDARK)
{
b_setvisuals_demondark();
Npc_SetToFistMode(self);
};
так со всеми, но получаются одинаковые.
Помогите пожалуйста, делаю мод, а из за этой фигни ничего путевого(
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Нужно имена материалов моделях менять(можно ASC файл, блокнотом править, типа Notepad++) ибо в игре материалы с одинаковыми именами имеют свойство перехлестываться.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
А зачем везде в именах файлов "-C" добавлено, чтобы движок от такого колдунства кони двинул? :D
Вообще-то "-C" добавляется к компилированным TEX файлам, а не исходникам TGA.
 

DexS

Участник форума
Регистрация
12 Мар 2015
Сообщения
38
Благодарности
3
Баллы
165
А зачем везде в именах файлов "-C" добавлено, чтобы движок от такого колдунства кони двинул? :D
Вообще-то "-C" добавляется к компилированным TEX файлам, а не исходникам TGA.
да я ж с вога взял
там вообще немного двинутые люди..

Нужно имена материалов моделях менять(можно ASC файл, блокнотом править, типа Notepad++) ибо в игре материалы с одинаковыми именами имеют свойство перехлестываться.
Не помогло...

А зачем везде в именах файлов "-C" добавлено, чтобы движок от такого колдунства кони двинул? :D
Вообще-то "-C" добавляется к компилированным TEX файлам, а не исходникам TGA.
а из за этого текстуры монстров могут полететь??

Мультипостинг запрещен, правим свой пост, если есть что добавить и если после него еще не ответили.
 
Последнее редактирование модератором:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
И не поможет, т.к. не имеет никакого отношения к этой теме..
Тебе уже написали, что в асц должны использоваться только исходные файлы в *.tga, как и в материалах модели, вот с ними и надо работать.
И не совсем понял зачем понадобилось их переименовывать и чем не угодили названия оригинальных файлов ?! ::)


Даж работает, вот.
Ну вот, теперь все это Г3/Ризеновское гавно в моды двинет, будет в жопы всех Непесей вшит ЖПС, и будут они яки олени с табличками по мирам Мордрага носится. Тьфу на это... :rolleyes:
 
Последнее редактирование:

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Ну вот, теперь все это Г3/Ризеновское гавно в моды двинет, будет в жопы всех Непесей вшит ЖПС, и будут они яки олени с табличками по мирам Мордрага носится. Тьфу на это... :rolleyes:
Ну, кому как хочется, тот себе оставляет, я вот лично противник подобных штук, тк не нужны в моем понятии, а другим можт и нужны.
 
Сверху Снизу