Сообщений: 15
Тем: 1
Зарегистрирован: Jun 2014
Репутация:
0
С каждым своим сообщением я пытаюсь вытащить из Вас, Deazer, более подробную информацию. И у меня это не получается....
То есть тот AI.obj (который находится в папке сборки PTS Gracia Final, которую Вы же и предоставили) - и есть исходный код? И для его работы не обязательно делать компиляцию?
Сообщений: 3,494
Тем: 52
Зарегистрирован: Jun 2010
Репутация:
12,167
Давай я тогда тебе расскажу вообще что такое ai.obj и что он из себя представляет.
ai.obj - набор классов и инструкций для виртуальной машины NPC сервера.
Как выглядит код виртуальной машины -
Вот это лабурда превращается
PHP код:
<?php
class 0 default_npc : (null)
parameter_define_begin
int DesirePqSize 50
int FavorListSize 30
// ...
parameter_define_end
handler 4 13
variable_begin
"talker"
"myself"
"_choiceN"
"_code"
"_from_choice"
variable_end
push_event
push_const 784
add
fetch_i
push_event
push_const 40
add
fetch_i
S0. "noquest.htm"
push_string S0
func_call 235012165
shift_sp -2
shift_sp -1
handler_end
class_end
В понятный код на
ЯВУ-
PHP код:
<?php
class SomeNpc extends Npc /* 0 - Npc, 1 - NpcMaker */
{
/*
* Class fields. It's values may be owerrided by spawner ai_params
*/
int DesirePqSize = 50;
int FavorListSize = 30;
String fnHi = "chi.htm";
String fnFeudInfo = "defaultfeudinfo.htm";
String fnNoFeudInfo = "nofeudinfo.htm";
String fnBracketL = "[";
String fnBracketR = "]";
String fnFlagMan = "flagman.htm";
BuySellList someBuySellList = new BuySellList(); //
// Other types here
void OnCreated(NpcEventContext evCtx) // or NpcMakerEventContext
{
// Do some work when this class created. ctor on terms of c++
}
void OnMenuSelected(NpcEventContext evCtx) // or NpcMakerEventContext
{
// Do some work when someone send us a bypass
}
void OnTalkSelected(NpcEventContext evCtx) // or NpcMakerEventContext
{
evCtx->myself->ShowPage(evCtx->talker, "noquest.htm");
}
// And other handlers like OnAttaked, SeeItem, Timer events, etc
}
Зачем декомпилировать (и/или почему глупо редактировать в текущем виде) -
Редактировать и добавлять свои AI в прямо в ai.obj без декомпилирования
можно!НО Если вы способны держать состояние виртуальной машины в голове и генерировать соответствующий асемблер на лету, то флаг в руки and back to 60's когда это имело смысл. В современности труд программиста перестал быть рабским. Можно и сервера на ASM писать , но я напишу его в разы быстрее на яве или плюсах.
Декомпилировать нужно для того что-бы понимать это на уровне высокоуровнего С++ подобного языка и делять работу во много раз эффективней.