Guten Morgen liebe Com,
Ist es möglich, die Dämonenturm-Schmiede in anderen Maps
funktionsfähig zu spawnen? Ich hab den Schmied mithilfe einer
Quest spawnen lassen. Die Questflag "can_refine" habe ich auch mit
eingebaut und trotzdem steht, ich kann keine weiteren Gegenstände aufrüsten.
Welche Möglichkeiten bleiben mir? Damit ich meine Quest nicht in den Papierkorb
legen muss?
Die Core bearbeiten könnte ich zwar auch, doch finde keine Funktion, die mich jetzt direkt daran hindert zu uppen.
Pseudocode der Core (Funktion)
PHP Code:
char __cdecl CInputMain__Refine(int a1, int a2, int a3)
{
char *v3; // eax@2
unsigned __int8 v5; // cl@12
int v6; // ecx@18
int v7; // ebx@18
int v15; // ecx@20
int v23; // [sp+1Ch] [bp-6Ch]@11
char v24; // [sp+20h] [bp-68h]@21
int v25; // [sp+30h] [bp-58h]@20
char v26; // [sp+40h] [bp-48h]@20
char v27; // [sp+50h] [bp-38h]@18
int v28; // [sp+60h] [bp-28h]@18
if ( *(_DWORD *)(a2 + 3284)
|| *(_BYTE *)(a2 + 3712)
|| *(_DWORD *)(a2 + 3280)
|| *(_DWORD *)(a2 + 3272)
|| *(_DWORD *)(a2 + 2984) )
{
v3 = locale_find("â°í,°Å·¡Ã¢µîÀÌ ¿*¸° »", g_iUseLocale);
CHARACTER__ChatPacket(a2, 1, v3);
LABEL_3:
LOBYTE(_EAX) = CHARACTER__ClearRefineMode(a2);
return _EAX;
}
if ( *(_BYTE *)(a3 + 2) == -1 )
{
sys_log(0, "DoRefine cancel");
goto LABEL_3;
}
LOBYTE(_EAX) = *(_BYTE *)(a3 + 1);
if ( (_BYTE)_EAX <= 0x5Au )
{
_EAX = CHARACTER__GetItem(a2, _EAX);
v23 = _EAX;
if ( _EAX )
{
*(_DWORD *)(a2 + 3716) = thecore_pulse();
sys_log(
0,
"DoRefine type %d item %s",
*(_BYTE *)(a3 + 2),
((*(_DWORD *)(v23 + 56) == 0) - 1) & (*(_DWORD *)(v23 + 56) + 29));
v5 = *(_BYTE *)(a3 + 2);
if ( v5 )
{
LOBYTE(_EAX) = v5 - 2;
if ( (unsigned __int8)(v5 - 2) <= 1u || v5 == 5 || v5 == 6 )
{
sys_log(0, "DoRefine type %d item %s", v5, ((*(_DWORD *)(v23 + 56) == 0) - 1) & (*(_DWORD *)(v23 + 56) + 29));
LOBYTE(_EAX) = CHARACTER__DoRefineWithScroll(a2, v23);
}
else
{
if ( v5 == 4 )
{
std__string__string(&v28, "deviltower_zone.can_refine", &v27);
v7 = CHARACTER__GetQuestFlag(a2, (int)&v28);
_EDX = -1;
_EAX = v28;
v6 = v28 - 12;
__asm { lock xadd [eax-4], edx }
if ( _EDX <= 0 )
std__string___Rep___M_destroy(v6, &v26);
if ( v7 )
{
CHARACTER__DoRefine(a2, v23, 1);
std__string__string(&v25, "deviltower_zone.can_refine", &v26);
CHARACTER__SetQuestFlag(a2, (int)&v25, 0);
_EAX = v25;
_EDX = -1;
v15 = v25 - 12;
__asm { lock xadd [eax-4], edx }
if ( _EDX <= 0 )
LOBYTE(_EAX) = std__string___Rep___M_destroy(v15, &v24);
}
else
{
LOBYTE(_EAX) = CHARACTER__ChatPacket(a2, 1, "»ç±Í Ÿ¿");
}
}
}
}
else
{
sys_log(0, "DoRefine type 0 item %s", ((*(_DWORD *)(v23 + 56) == 0) - 1) & (*(_DWORD *)(v23 + 56) + 29));
LOBYTE(_EAX) = CHARACTER__DoRefine(a2, v23, 0);
}
}
}
return _EAX;
}
// 804C65C: using guessed type int __cdecl std__string__string(_DWORD, _DWORD, _DWORD);
// 804CA2C: using guessed type int __cdecl std__string___Rep___M_destroy(_DWORD, _DWORD);
Die Quest ist soweit funktionstüchtig, das alles ausser das Uppen funktioniert.
Kann mir da jemand helfen?
Gruß, Endless :)