Подскажите по компиляции NASC.

Menma

Знаменитый
Участник
Старожил I степени
Сообщения
99
Розыгрыши
0
Решения
1
Репутация
41
Реакции
40
Баллы
1 278
Я, значит декомпилировала один ai нпц из ai.obj изменила его, сохранила наск файл. Закинула в папку с l2npc сервером от eressa, запустила компилятор через комндную строку. Появилось еще одно окно с иконкой npc сервера, написано, что компилятор, но никакой компиляции, результатов и даже сообщений я об этом не вижу.
Что я делаю не так. Может надо компилировать весь ai.obj переведенный в nasc разом а не отдельный файл? И как вообще эти все файлы собирать, где они должны лежать. Никаких гайдов не нашла, помогите разобраться пожалуйста:(
 

  1. l2npc.exe -c -e file_name.nasc
  2. Полученный obj файл открываем в редакторе и копируем содержимое
  3. Открываем ai.obj в редакторе, находим класс, и заменяем его на то, что скопировали на предыдущем шаге
А чем декомпилировала?
 

    Menma

    Баллов: 5
    За сообщение
Спасибо добрый человек. Декомпилировала aiviewerom.

Почему то, когда ввожу l2npc.exe -c -e у меня компилятор даже не запускается, когда ввожу без них все запускается, но он не компилирует.
 
Последнее редактирование модератором:
Попробуй запустить в терминале от администратора. В терминале должна быть ошибка с причиной, почему l2npc не запускается.
 
Вообще никакой ошибки ничего не пишет, просто не запускается и всё :(

Может это из-за того что я в кодировке не той сохранила?
 
Последнее редактирование модератором:
Переконвертируй тогда в UCS-2 LE BOM (в том же Notepad++ можно).
Компилятор обычно пустой obj файл в таком случае создает.
Еще попробуй добавить в начало пустое объявление класса, от которого наследуется твой класс.
 
Проблема, видиммо в самом nasc файле, что то я там наделала видимо. Взяла тестовый файл от eressa и все прекрасно скомпилировалось :)

Проблема, видиммо в самом nasc файле, что то я там наделала видимо. Взяла тестовый файл от eressa и все прекрасно скомпилировалось :)
Проблема была в кодировке, малоли кому понадобиться. Спасибо большое за помощь :)
 
Последнее редактирование модератором:
Можно подробнее пожалуйста...
как объединить раздельную структуру nasc, в один файл nasc?
как перекодировать utf 8 в 16?
как подключиться компилятором через .py?
как непосредственно скомпилировать? через .bat?
как вызывать параметры загрузки у l2npc, какие именно параметры нужно указывать?
какие скрипты должны лежать в папке scrypt?
????????)

как использовать декомпилированный код одним файлом ai.obj.nasc? без компиляции в ai.obj?

по поводу последнего поправочка) Эмка написала что не знает о таком инструменте чтобы использовать ai в декомпилированном виде.. (я хз, информация была от webdes27)

важный момент для компила Эмкиным компилятором: если вы используете Python версии выше 2008 года, ничего кроме синтаксических ошибок вы не скомпилируете))
 
Апну темку. Может, у кого есть новый компилятор? Этот от эмки сыплет ошибками. Нужно поменять пару значений на количество людей для захода в инсты. Сборка advext hf. Покупать у них за 170$ ради этого чет жаба душит )
 
Апну темку. Может, у кого есть новый компилятор? Этот от эмки сыплет ошибками. Нужно поменять пару значений на количество людей для захода в инсты. Сборка advext hf. Покупать у них за 170$ ради этого чет жаба душит )
но число для захода людей в инст в датапаке инстов, а не в АИ
или у вас там заглушка из серии if(party_count > %NUM%)?


в любом случае не вижу проблемы открыть скомпиленный АИ и поменять там, если проблема в одной цифре или типа того
 
но число для захода людей в инст в датапаке инстов, а не в АИ
или у вас там заглушка из серии if(party_count > %NUM%)?


в любом случае не вижу проблемы открыть скомпиленный АИ и поменять там, если проблема в одной цифре или типа того
скомпиленный АИ, например на ночного закена, (где нужно 72 тел на заход), выглядит таким образом:
class 0 ai_enter_zaken : citizen
parameter_define_begin
int Day_InstantZone_ID 133
int Day_EnterType_P 1
int Day_EnterType_M 2
int Night_InstantZone_ID 114
int Night_EnterType 2
int Day_83_InstantZone_ID 135
parameter_define_end
handler 5 26 // SEE_CREATURE
variable_begin
"creature"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end

push_event // gg
push_const 704 //SendUIEvent
add
fetch_i //SendUIEvent
push_event // creature
push_const 112 //creature
add
fetch_i
push_const 1 //unary->INTEGER_CONST
push_const 0 //unary->INTEGER_CONST
push_const 0 //unary->INTEGER_CONST
S5250. "1"
push_string S5250
S5251. "1"
push_string S5251
S5252. "1"
push_string S5252
S5253. "Elapsed"
push_string S5253
S5254. "60"
push_string S5254
S5255. "0"
push_string S5255
func_call 269090908 // func[SendUIEvent]
shift_sp -10
shift_sp -1
handler_end

handler 31 592 // MENU_SELECTED
variable_begin
"talker"
"ask"
"reply"
"i0"
"i1"
"c0"
"party0"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end

push_event // ask
push_const 160 //ask
add
fetch_i4
push_const 2124001 //unary->INTEGER_CONST
negate
equal
branch_false L68359
L68358
push_event // reply
push_const 272 //reply
add
fetch_i
push_const 1 //unary->INTEGER_CONST
equal
branch_false L68361
L68360
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 234946685 // func[MPCC_GetMPCCId]
shift_sp -1
push_const 1 //unary->INTEGER_CONST
less
branch_false L68363
L68362
push_event // party0
push_const 472 //party0
add
push_reg_sp
fetch_i //expr =
push_event // gg
push_const 704 //GetParty
add
fetch_i //GetParty
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 268501016 // func[GetParty]
shift_sp -1
assign
shift_sp -1
push_event // gg
push_const 704 //IsNull
add
fetch_i //IsNull
push_event // party0
push_const 472 //party0
add
fetch_i
func_call 268501009 // func[IsNull]
shift_sp -1
push_const 0 //unary->INTEGER_CONST
equal
branch_false L68365
L68364
push_event // c0
push_const 416 //c0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // gg
push_const 704 //GetParty
add
fetch_i //GetParty
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 268501016 // func[GetParty]
shift_sp -1
func_call 234946672 // func[GetLeaderOfParty]
shift_sp -1
assign
shift_sp -1
push_event // talker
push_const 40 //talker
add
fetch_i
push_event // c0
push_const 416 //c0
add
fetch_i
equal
branch_false L68367
L68366
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
push_parameter Day_InstantZone_ID
push_parameter Day_EnterType_P
func_call 235078114 // func[InstantZone_Enter]
shift_sp -3
shift_sp -1
exit_handler
jump L68368
L68367
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5256. "zaken_enter001a.htm"
push_string S5256
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68368
jump L68369
L68365
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5257. "zaken_enter001b.htm"
push_string S5257
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68369
jump L68370
L68363
push_event // i0
push_const 280 //i0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 234946685 // func[MPCC_GetMPCCId]
shift_sp -1
assign
shift_sp -1
push_event // c0
push_const 416 //c0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // i0
push_const 280 //i0
add
fetch_i
func_call 234946681 // func[MPCC_GetMaster]
shift_sp -1
assign
shift_sp -1
push_event // talker
push_const 40 //talker
add
fetch_i
push_event // c0
push_const 416 //c0
add
fetch_i
equal
branch_false L68372
L68371
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
push_parameter Day_InstantZone_ID
push_parameter Day_EnterType_M
func_call 235078114 // func[InstantZone_Enter]
shift_sp -3
shift_sp -1
exit_handler
jump L68373
L68372
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5258. "zaken_enter001c.htm"
push_string S5258
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68373
L68370
jump L68374
L68361
push_event // reply
push_const 272 //reply
add
fetch_i
push_const 2 //unary->INTEGER_CONST
equal
branch_false L68376
L68375
push_event // i0
push_const 280 //i0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 234946685 // func[MPCC_GetMPCCId]
shift_sp -1
assign
shift_sp -1
push_event // c0
push_const 416 //c0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // i0
push_const 280 //i0
add
fetch_i
func_call 234946681 // func[MPCC_GetMaster]
shift_sp -1
assign
shift_sp -1
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
push_parameter Night_InstantZone_ID
push_parameter Night_EnterType
func_call 235078114 // func[InstantZone_Enter]
shift_sp -3
shift_sp -1
push_event // talker
push_const 40 //talker
add
fetch_i
push_event // c0
push_const 416 //c0
add
fetch_i
equal
branch_false L68378
L68377
push_event // i1
push_const 288 //i1
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // i0
push_const 280 //i0
add
fetch_i
func_call 234946682 // func[MPCC_GetPartyCount]
shift_sp -1
assign
shift_sp -1
push_event // i1
push_const 288 //i1
add
fetch_i
push_const 7 //unary->INTEGER_CONST
less
branch_false L68380
L68379
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5259. "zaken_enter001d.htm"
push_string S5259
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68380
jump L68381
L68378
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5260. "zaken_enter001c.htm"
push_string S5260
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68381
jump L68382
L68376
push_event // reply
push_const 272 //reply
add
fetch_i
push_const 3 //unary->INTEGER_CONST
equal
branch_false L68384
L68383
push_event // talker
push_const 40 //talker
add
fetch_i //instant_zone_type_id_in_use
push_const 2872 //instant_zone_type_id_in_use
add
fetch_i4
push_const 135 //unary->INTEGER_CONST
equal
branch_false L68386
L68385
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
push_event // talker
push_const 40 //talker
add
fetch_i //instant_zone_type_id_in_use
push_const 2872 //instant_zone_type_id_in_use
add
fetch_i4
push_const 0 //unary->INTEGER_CONST
func_call 235078114 // func[InstantZone_Enter]
shift_sp -3
shift_sp -1
exit_handler
L68386
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 234946685 // func[MPCC_GetMPCCId]
shift_sp -1
push_const 1 //unary->INTEGER_CONST
less
branch_false L68388
L68387
push_event // party0
push_const 472 //party0
add
push_reg_sp
fetch_i //expr =
push_event // gg
push_const 704 //GetParty
add
fetch_i //GetParty
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 268501016 // func[GetParty]
shift_sp -1
assign
shift_sp -1
push_event // gg
push_const 704 //IsNull
add
fetch_i //IsNull
push_event // party0
push_const 472 //party0
add
fetch_i
func_call 268501009 // func[IsNull]
shift_sp -1
push_const 0 //unary->INTEGER_CONST
equal
branch_false L68390
L68389
push_event // c0
push_const 416 //c0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // gg
push_const 704 //GetParty
add
fetch_i //GetParty
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 268501016 // func[GetParty]
shift_sp -1
func_call 234946672 // func[GetLeaderOfParty]
shift_sp -1
assign
shift_sp -1
push_event // talker
push_const 40 //talker
add
fetch_i
push_event // c0
push_const 416 //c0
add
fetch_i
equal
branch_false L68392
L68391
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
push_parameter Day_83_InstantZone_ID
push_parameter Day_EnterType_P
func_call 235078114 // func[InstantZone_Enter]
shift_sp -3
shift_sp -1
exit_handler
jump L68393
L68392
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5261. "zaken_enter001a.htm"
push_string S5261
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68393
jump L68394
L68390
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5262. "zaken_enter001b.htm"
push_string S5262
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68394
jump L68395
L68388
push_event // i0
push_const 280 //i0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
func_call 234946685 // func[MPCC_GetMPCCId]
shift_sp -1
assign
shift_sp -1
push_event // c0
push_const 416 //c0
add
push_reg_sp
fetch_i //expr =
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // i0
push_const 280 //i0
add
fetch_i
func_call 234946681 // func[MPCC_GetMaster]
shift_sp -1
assign
shift_sp -1
push_event // talker
push_const 40 //talker
add
fetch_i
push_event // c0
push_const 416 //c0
add
fetch_i
equal
branch_false L68397
L68396
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
push_parameter Day_83_InstantZone_ID
push_parameter Day_EnterType_M
func_call 235078114 // func[InstantZone_Enter]
shift_sp -3
shift_sp -1
exit_handler
jump L68398
L68397
push_event // myself
push_const 784 //myself
add
fetch_i //Fetch Base pointer
push_event // talker
push_const 40 //talker
add
fetch_i
S5263. "zaken_enter001c.htm"
push_string S5263
func_call 235012165 // func[ShowPage]
shift_sp -2
shift_sp -1
L68398
L68395
L68384
L68382
L68374
L68359
handler_end

class_end

В декомпилированном виде это выглядит вот так
class ai_enter_zaken : citizen
{
parameter:
int Day_InstantZone_ID = 133;
int Day_EnterType_P = 1;
int Day_EnterType_M = 2;
int Night_InstantZone_ID = 114;
int Night_EnterType = 2;
int Day_83_InstantZone_ID = 135;

handler:
EventHandler
SEE_CREATURE(creature)
{
SendUIEvent();
}

EventHandler
MENU_SELECTED(talker, ask, reply, i0, i1, c0, party0)
{
if(ask == -2124001)
{
if(reply == 1)
{
if(myself.Pledge_GetLeader(talker) < 1)
{
party0 = gg.GetParty(talker);
gg.Announce(party0);
if(0)
{
c0 = myself.GetLeaderOfParty(gg.GetParty(talker));
if(talker == c0)
{
myself.InstantZone_Enter(talker, Day_InstantZone_ID, Day_EnterType_P);
return;
}
else
{
myself.ShowPage(talker, "zaken_enter001a.htm");
}
}
else
{
myself.ShowPage(talker, "zaken_enter001b.htm");
}
}
else
{
i0 = myself.Pledge_GetLeader(talker);
c0 = myself.MPCC_GetMaster(i0);
if(talker == c0)
{
myself.InstantZone_Enter(talker, Day_InstantZone_ID, Day_EnterType_M);
return;
}
else
{
myself.ShowPage(talker, "zaken_enter001c.htm");
}
}
}
else if(reply == 2)
{
i0 = myself.Pledge_GetLeader(talker);
c0 = myself.MPCC_GetMaster(i0);
myself.InstantZone_Enter(talker, Night_InstantZone_ID, Night_EnterType);
if(talker == c0)
{
i1 = myself.MPCC_GetPartyCount(i0);
if(i1 < 7)
{
myself.ShowPage(talker, "zaken_enter001d.htm");
}
}
else
{
myself.ShowPage(talker, "zaken_enter001c.htm");
}
}
else if(reply == 3)
{
if((talker + 2872) == 135)
{
myself.InstantZone_Enter(talker, (talker + 2872), 0);
return;
}
if(myself.Pledge_GetLeader(talker) < 1)
{
party0 = gg.GetParty(talker);
gg.Announce(party0);
if(0)
{
c0 = myself.GetLeaderOfParty(gg.GetParty(talker));
if(talker == c0)
{
myself.InstantZone_Enter(talker, Day_83_InstantZone_ID, Day_EnterType_P);
return;
}
else
{
myself.ShowPage(talker, "zaken_enter001a.htm");
}
}
else
{
myself.ShowPage(talker, "zaken_enter001b.htm");
}
}
else
{
i0 = myself.Pledge_GetLeader(talker);
c0 = myself.MPCC_GetMaster(i0);
if(talker == c0)
{
myself.InstantZone_Enter(talker, Day_83_InstantZone_ID, Day_EnterType_M);
return;
}
else
{
myself.ShowPage(talker, "zaken_enter001c.htm");
}
}
}
}
}

}

Для декомпила использовал AI Viewer, в нем выбирал хроники Freya, GF и GF Guardex сыпали ошибками.

Но проблема в том, что я я не могу скомпилить .nasc обратно в .obj....
 
у тебя тут даже не в числе людей вопрос, а в параметре входа
вот тут я щас могу наврать, но кажется 0 это соло, 1 это пати, 2 это цц.
C++:
int Night_EnterType = 2;
myself.InstantZone_Enter(talker, Night_InstantZone_ID, Night_EnterType);

ну и попробуй заменить на вот тут
C:
push_parameter Night_InstantZone_ID
push_parameter Night_EnterType
func_call 235078114 // func[InstantZone_Enter]
на:
C:
push_parameter Night_InstantZone_ID
push_parameter Day_EnterType_P
func_call 235078114 // func[InstantZone_Enter]
он как раз в параметрах равен 1, если тебе надо пати завести. И поставь в датапаке инстов число на пати.


если я верно понял чё тебе вообще нужно
ну поиграйся в любом случае, это реально сделать
 
но число для захода людей в инст в датапаке инстов, а не в АИ
или у вас там заглушка из серии if(party_count > %NUM%)?


в любом случае не вижу проблемы открыть скомпиленный АИ и поменять там, если проблема в одной цифре или типа того
Изменил в instancezonedata циферку, и все заработало, и не нужно было ковырять АИ. Большое спасибо за помощь!
instantzone_begin id=114 name=zaken_raid_night max_channel=20 max_user=450 min_user=2 duration=360 time_limit=10080 reset_binding={06:30;{3}} entrance_cond={} delete_no_user=60 required_item={} deleted_item={} remove_buff=0 start_pos_type=random start_pos={{54469,219798,-3488};{54469,219870,-3488};{54469,219930,-3488};{54469,220043,-3488};{54469,220094,-3488};{54469,220157,-3488};{54469,220214,-3488};{54469,220274,-3488};{54469,220333,-3488};{54469,220397,-3488};{54469,220463,-3488}} order_end_pos_type=origin order_end_pos={} disorder_end_pos_type=origin disorder_end_pos={} door_list={} area_list={} spawn_npc=yes associative=yes instantzone_end
 
Назад
Сверху Снизу