ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Стремление к лучшему. (https://forum.antichat.xyz/showthread.php?t=764576)

mAnGoL 29.10.2015 15:34

Лазя по ai.nask, наткнулся на чудесный код.

Код:


[CODE]
handler:
EventHandler ATTACKED( attacker )
{
if( attacker.builder_level > 0 && attacker.builder_level

Корейцы! КРАСАВЦЫ!

zcxv 29.10.2015 15:37

Нормальная отладка же

mAnGoL 29.10.2015 15:39

Цитата:

Сообщение от zcxv

Нормальная отладка же

Супер отладка.

Koner 04.11.2015 14:19

Код:


[CODE]
if( 1 == 1 )
{
i4 = gg::Rand( 1000 );
if( i4

В любой сборке с4\Ила - даже в адвексте, присутствует вот такой имбовый код xD

ツsmile10ツ 04.11.2015 14:43

у них доместос передовых технологий, мощнее ебашит

Mifesto 04.11.2015 15:00

[QUOTE="Koner"]

Код:


[CODE]
if( 1 == 1 )
{
i4 = gg::Rand( 1000 );
if( i4

Koner 04.11.2015 16:56

Цитата:

Сообщение от Mifesto

А вы не думали что это косяки декомпилятора?

Я так же думал, пока сам не залез в .obj и не пролистал сам код....И явно не декомпилятора бага

Код:


Код:

push_const 1000
  func_call 218169344  //  func[Rand]
  shift_sp -1
  assign4
  shift_sp -1
  push_event  //  i4
  push_const 276
  add
  fetch_i4
  push_const 529
  less
  push_reg_sp
  fetch_i
  branch_false L1171
  push_const 529
  push_const 0
  not_equal
  and
L1171
  branch_false L1170
L1169
  push_const 1
  push_const 0
  not_equal
  push_reg_sp
  fetch_i
  branch_false L1174
  push_const 1
  push_const 1
  equal
  and
L1174
  branch_false L1173
L1172
  push_event  //  myself
  push_const 704
  add
  fetch_i
  push_event  //  target
  push_const 96
  add
  fetch_i
  push_const 7234
  push_const 1
  func_call 184746111  //  func[GiveItem1]
  shift_sp -3
  shift_sp -1
L1173
  push_const 0
  push_const 0
  not_equal
  push_reg_sp
  fetch_i
  branch_false L1177
  push_const 0
  push_const 1
  equal
  and
L1177
  branch_false L1176
L1175
  push_event  //  myself
  push_const 704
  add
  fetch_i
  push_event  //  target
  push_const 96
  add
  fetch_i
  push_const 0
  push_const 0
  func_call 184746111  //  func[GiveItem1]
  shift_sp -3
  shift_sp -1
L1176
  push_const 0
  push_const 0
  not_equal
  push_reg_sp
  fetch_i
  branch_false L1180
  push_const 0
  push_const 1
  equal
  and
L1180
  branch_false L1179
L1178
  push_event  //  myself
  push_const 704
  add
  fetch_i
  push_event  //  target
  push_const 96
  add
  fetch_i
  push_const 0
  push_const 0
  func_call 184746111  //  func[GiveItem1]
  shift_sp -3
  shift_sp -1
L1179
  push_event  //  myself
  push_const 704
  add
  fetch_i
  push_event  //  target
  push_const 96
  add
  fetch_i
S28.  "ItemSound.quest_itemget"
  push_string S28
  func_call 184680685  //  func[SoundEffect]
  shift_sp -2
  shift_sp -1
  jump L1181
L1170


Mizuwokiru 04.11.2015 17:42

Это скорее всего константы. Их название при компиляции заменяется на значение (на счет const хз, но с дефайнами так). То может у них какие-то настройки в файле были в виде констант, а при компиле они потерлись. Естественно, при декомпиле их уже не вернуть.

test 04.11.2015 18:29

Да это константы которые в исходнике были @Param ( так же из за сборки аи по макросам macro.txt )

Код у корейцов не покрыт тестами и пройдя несколько статических тестов нашел более 150 ошибок.

п.с а дебаги с входами в инсты по итемам у них обычное дело.

Цитата:

Сообщение от Спойлер




Mizuwokiru 04.11.2015 20:14

Цитата:

Сообщение от Test

Да это константы которые в исходнике были @Param ( так же из за сборки аи по макросам macro.txt )
Код у корейцов не покрыт тестами и пройдя несколько статических тестов нашел более 150 ошибок.
п.с а дебаги с входами в инсты по итемам у них обычное дело.
Цитата:

Сообщение от Спойлер




[off]Видать @Prototype к себе взяли, а он им "напирагарамиривал" байдкода [/off]

Хотя рили, больше смахивает на фиговый декомпил.

test 04.11.2015 20:39

Просто мало кто знает как выглядит сурс аи.

Он состоит из 3- основных кусков( ai_script.txt, macro.txt, questdata.txt )

При компиле они сливаются вместе и выходят такие конструкции. ( но компилятор не убирает их )

ftp://ftp.lineageworld.ru/pub/lineage/server/C2&C3Project/Script/SCRIPT/questdata.txt

ftp://ftp.lineageworld.ru/pub/lineage/server/C2&C3Project/Script/SCRIPT/ai_macro.txt

ftp://ftp.lineageworld.ru/pub/lineage/server/C2&C3Project/Script/SCRIPT/ai_script.txt

скажем

Код:


[CODE]
turek_orc_drop_item(__item, drop_ratio)
[
c1 = GetLastAttacker();
if(HaveMemo(c1, @reclaim_the_land)== 1)
{
GiveItem1(c1, __item, 1);
SoundEffect(c1, "ItemSound.quest_itemget");

i0 = Rand(100);
if(i0

и потом просто используют

Код:


Код:

// 몬스터 처리 ( 투렉 오크 시리즈 )
    npc_begin

    npc_name = [turek_orc_sentinel]
    my_dying_event_begin
        handler(c1, i0, i1) =
        [
            c1 = GetLastAttacker();
            c1.quest_last_reward_time = 0;
            MACRO(@turek_dogtag, 7);
        ]   
    my_dying_event_end
 
    npc_end

    npc_begin

    npc_name = [turek_orc_footman]
    my_dying_event_begin
        handler(c1, i0, i1) =
        [
            c1 = GetLastAttacker();
            c1.quest_last_reward_time = 0;
            MACRO(@turek_dogtag, 8);
        ]   
    my_dying_event_end
 
    npc_end

Так же и с апом са кристалов ( часто увидев кучу копипасты во всех рб с условиями вида 1 = 0 думают что это баг но на деле там макрос)


Время: 09:59