Error problems strike again ;/
#6

Quote:
Originally Posted by GloomY
Посмотреть сообщение
Can we see the code?
These are the incl file lines 495-947

PHP код:
        //printf("%d", P@("S@@_OnGameModeInit", ""));
        
HOOK_CALL<GameModeInit>
        
//hooks_do_hooks_call_no_als:
        //printf("end 2");
        //return 1;
    
}
    new
        
idx,
        
pointer,
        
re end;
    if (
end sizeof (YSI_g_sCallbackAddresses))
    {
        
re sizeof (YSI_g_sCallbackAddresses);
        if (
start != sizeof (YSI_g_sCallbackAddresses)) idx YSI_g_sLastFoundIndex;
    }
    
// Do the initial fast elements.
    
while (start != re)
    {
        
pointer YSI_g_sCallbackAddresses[start++];
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        // Note that this label is embedded in the "HOOK_CALL" macro above.
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Get any remaining pointers the old way.
    
while (start++ != end)
    {
        
idx AMX_GetPublicPointer(idxpointer"@yH_GameModeInit");
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Do ALS just in case (YSI no longer uses this though now).
    
P:2("Hooks_OnGameModeInit end 2: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnGameModeInit));
    
HOOK_RETURN<GameModeInit>
    
//return 1;
}
#if defined _ALS_OnGameModeInit
    #undef OnGameModeInit
#else
    #define _ALS_OnGameModeInit
#endif
#define OnGameModeInit S@@_OnGameModeInit
ALS_FORWARD<GameModeInit>
public 
OnGameModeExit()
{
    
P:2("Hooks_OnGameModeExit called");
    if (!
YSI_FILTERSCRIPT)
    {
        
Hooks_OnScriptExit();
        
//Hooks_OnAnyScriptExit();
    
}
    new
        
end   YSI_g_sCallbackData[ALS_OnGameModeExit][E_FUNC_HOOK_DATA_END],
        
start YSI_g_sCallbackData[ALS_OnGameModeExit][E_FUNC_HOOK_DATA_START],
        
ret ALS_R_GameModeExit;
    if (
start == end)
    {
        
P:2("Hooks_OnGameModeExit end 1: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnGameModeExit));
        
HOOK_CALL<GameModeExit>
    }
    new
        
idx,
        
pointer,
        
re end;
    if (
end sizeof (YSI_g_sCallbackAddresses))
    {
        
re sizeof (YSI_g_sCallbackAddresses);
        if (
start != sizeof (YSI_g_sCallbackAddresses)) idx YSI_g_sLastFoundIndex;
    }
    
// Do the initial fast elements.
    
while (start != re)
    {
        
pointer YSI_g_sCallbackAddresses[start++];
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Get any remaining pointers the old way.
    
while (start++ != end)
    {
        
idx AMX_GetPublicPointer(idxpointer"@yH_GameModeExit");
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Do ALS just in case (YSI no longer uses this though now).
    
P:2("Hooks_OnGameModeExit end 2: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnGameModeExit));
    
HOOK_RETURN<GameModeExit>
}
#if defined _ALS_OnGameModeExit
    #undef OnGameModeExit
#else
    #define _ALS_OnGameModeExit
#endif
#define OnGameModeExit S@@_OnGameModeExit
ALS_FORWARD<GameModeExit>
/*static Hooks_OnAnyScriptInit()
{
    P:2("Hooks_OnAnyScriptInit called");
    new
        end   = YSI_g_sCallbackData[ALS_OnAnyScriptInit][E_FUNC_HOOK_DATA_END],
        start = YSI_g_sCallbackData[ALS_OnAnyScriptInit][E_FUNC_HOOK_DATA_START],
        ret = ALS_R_PlayerCommandText;
    if (start == end)
    {
        P:2("Hooks_OnAnyScriptInit end 2: %d %d", ret, _:Bit_GetBit(Bit:gs_ALS, _:ALS_OnAnyScriptInit));
        //HOOK_CALL<AnyScriptInit>
hooks_do_hooks_call_no_als:
        return;
    }
    new
        idx,
        pointer,
        re = end;
    if (end > sizeof (YSI_g_sCallbackAddresses))
    {
        re = sizeof (YSI_g_sCallbackAddresses);
        if (start != sizeof (YSI_g_sCallbackAddresses)) idx = YSI_g_sLastFoundIndex;
    }
    // Do the initial fast elements.
    while (start != re)
    {
        pointer = YSI_g_sCallbackAddresses[start++];
        #emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        // Note that this label is embedded in the "HOOK_CALL" macro above.
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    }
    // Get any remaining pointers the old way.
    while (start++ != end)
    {
        idx = AMX_GetPublicPointer(idx, pointer, "@yH_AnyScriptInit");
        #emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    }
    // Do ALS just in case (YSI no longer uses this though now).
    P:2("Hooks_OnAnyScriptInit end 2: %d %d", ret, _:Bit_GetBit(Bit:gs_ALS, _:ALS_OnAnyScriptInit));
    //HOOK_RETURN<AnyScriptInit>
}
static Hooks_OnAnyScriptExit()
{
    P:2("Hooks_OnAnyScriptExit called");
    new
        end   = YSI_g_sCallbackData[ALS_OnAnyScriptExit][E_FUNC_HOOK_DATA_END],
        start = YSI_g_sCallbackData[ALS_OnAnyScriptExit][E_FUNC_HOOK_DATA_START],
        ret = ALS_R_PlayerCommandText;
    if (start == end)
    {
        P:2("Hooks_OnAnyScriptExit end 2: %d %d", ret, _:Bit_GetBit(Bit:gs_ALS, _:ALS_OnAnyScriptExit));
        //HOOK_CALL<AnyScriptExit>
hooks_do_hooks_call_no_als:
        return;
    }
    new
        idx,
        pointer,
        re = end;
    if (end > sizeof (YSI_g_sCallbackAddresses))
    {
        re = sizeof (YSI_g_sCallbackAddresses);
        if (start != sizeof (YSI_g_sCallbackAddresses)) idx = YSI_g_sLastFoundIndex;
    }
    // Do the initial fast elements.
    while (start != re)
    {
        pointer = YSI_g_sCallbackAddresses[start++];
        #emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    }
    // Get any remaining pointers the old way.
    while (start++ != end)
    {
        idx = AMX_GetPublicPointer(idx, pointer, "@yH_AnyScriptExit");
        #emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    }
    // Do ALS just in case (YSI no longer uses this though now).
    P:2("Hooks_OnAnyScriptExit end 2: %d %d", ret, _:Bit_GetBit(Bit:gs_ALS, _:ALS_OnAnyScriptExit));
    //HOOK_RETURN<AnyScriptExit>
}*/
public OnFilterScriptInit()
{
    
P:2("Hooks_OnFilterScriptInit called");
    
Hooks_OnScriptInit();
    
#if defined YSI_LOCK_MODE
        
if (strval(YSI_gLockData[strfind(YSI_gLockData[5], YSI_gLockData[1])]) | strval(YSI_gLockData[strfind(YSI_gLockData[YSI_gLockData[0]], YSI_gLockData[1], _1)]) << != _LOCK_IP_1 _LOCK_IP_2 << 8)
        {
            
y_lock 4;
        }
        
/*if (strval(YSI_gLockData[9]) + strval(YSI_gLockData[11]) + strval(YSI_gLockData[13]) != 1)
        {
            y_lock 5;
        }*/
    #endif
    //Hooks_OnAnyScriptInit();
    
YSI_FILTERSCRIPT true;
    new
        
end   YSI_g_sCallbackData[ALS_OnFilterScriptInit][E_FUNC_HOOK_DATA_END],
        
start YSI_g_sCallbackData[ALS_OnFilterScriptInit][E_FUNC_HOOK_DATA_START],
        
ret ALS_R_FilterScriptInit;
    if (
start == end)
    {
        
P:2("Hooks_OnFilterScriptInit end 1: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnFilterScriptInit));
        
HOOK_CALL<FilterScriptInit>
    }
    new
        
idx,
        
pointer,
        
re end;
    if (
end sizeof (YSI_g_sCallbackAddresses))
    {
        
re sizeof (YSI_g_sCallbackAddresses);
        if (
start != sizeof (YSI_g_sCallbackAddresses)) idx YSI_g_sLastFoundIndex;
    }
    
// Do the initial fast elements.
    
while (start != re)
    {
        
pointer YSI_g_sCallbackAddresses[start++];
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Get any remaining pointers the old way.
    
while (start++ != end)
    {
        
idx AMX_GetPublicPointer(idxpointer"@yH_FilterScriptInit");
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Do ALS just in case (YSI no longer uses this though now).
    
P:2("Hooks_OnFilterScriptInit end 2: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnFilterScriptInit));
    
HOOK_RETURN<FilterScriptInit>
}
#if defined _ALS_OnFilterScriptInit
    #undef OnFilterScriptInit
#else
    #define _ALS_OnFilterScriptInit
#endif
#define OnFilterScriptInit S@@_OnFilterScriptInit
ALS_FORWARD<FilterScriptInit>
public 
OnFilterScriptExit()
{
    
P:2("Hooks_OnFilterScriptExit called");
    
Hooks_OnScriptExit();
    
//Hooks_OnAnyScriptExit();
    
new
        
end   YSI_g_sCallbackData[ALS_OnFilterScriptExit][E_FUNC_HOOK_DATA_END],
        
start YSI_g_sCallbackData[ALS_OnFilterScriptExit][E_FUNC_HOOK_DATA_START],
        
ret ALS_R_FilterScriptExit;
    if (
start == end)
    {
        
P:2("Hooks_OnFilterScriptExit end 1: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnFilterScriptExit));
        
HOOK_CALL<FilterScriptExit>
    }
    new
        
idx,
        
pointer,
        
re end;
    if (
end sizeof (YSI_g_sCallbackAddresses))
    {
        
re sizeof (YSI_g_sCallbackAddresses);
        if (
start != sizeof (YSI_g_sCallbackAddresses)) idx YSI_g_sLastFoundIndex;
    }
    
// Do the initial fast elements.
    
while (start != re)
    {
        
pointer YSI_g_sCallbackAddresses[start++];
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Get any remaining pointers the old way.
    
while (start++ != end)
    {
        
idx AMX_GetPublicPointer(idxpointer"@yH_FilterScriptExit");
        
#emit PUSH.C     0
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Do ALS just in case (YSI no longer uses this though now).
    
P:2("Hooks_OnFilterScriptExit end 2: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnFilterScriptExit));
    
HOOK_RETURN<FilterScriptExit>
}
#if defined _ALS_OnFilterScriptExit
    #undef OnFilterScriptExit
#else
    #define _ALS_OnFilterScriptExit
#endif
#define OnFilterScriptExit S@@_OnFilterScriptExit
ALS_FORWARD<FilterScriptExit>
public 
OnPlayerConnect(playerid)
{
    
P:2("Hooks_OnPlayerConnect called: %d"playerid);
    new
        
end   YSI_g_sCallbackData[ALS_OnPlayerConnect][E_FUNC_HOOK_DATA_END],
        
start YSI_g_sCallbackData[ALS_OnPlayerConnect][E_FUNC_HOOK_DATA_START],
        
ret ALS_R_PlayerConnect;
    if (
start == end)
    {
        
P:2("Hooks_OnPlayerConnect end 1: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnPlayerConnect));
        
HOOK_CALL<PlayerConnect>
    }
    new
        
pointer,
        
idx,
        
re end;
    if (
end sizeof (YSI_g_sCallbackAddresses))
    {
        
re sizeof (YSI_g_sCallbackAddresses);
        if (
start != sizeof (YSI_g_sCallbackAddresses)) idx YSI_g_sLastFoundIndex;
    }
    
// Do the initial fast elements.  This was an experiment to play with the
    // stack so we only ever need to push the parameters and return address once
    // and do the loop using the return address!  Shame I've not got it working
    // yet really!
    /*#emit PUSH.S playerid
    #emit PUSH.C     4
    #emit LCTRL      6
    #emit ADD.C      20
    #emit PUSH.pri
    // This is done twice so that the second time the loop runs (which isn't
    // actually done by "while" anymore, the loop is hidden) the code's correct.
    #emit STACK      12
    // This is where the code above makes the SCTRL call return to!
    #emit STACK      0xFFFFFFF4
    //while (start != re)
    // NOTE: THIS IS A LOOP!  I know it doesn't look like one but it is!
    if (start != re)*/
    
while (start != re)
    {
        
pointer YSI_g_sCallbackAddresses[start++];
        
#emit PUSH.S playerid
        #emit PUSH.C     4
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
// Clean up the stack.
    // Get any remaining pointers the old way.
    
while (start++ != end)
    {
        
idx AMX_GetPublicPointer(idxpointer"@yH_PlayerConnect");
        
#emit PUSH.S playerid
        #emit PUSH.C     4
        #emit LCTRL      6
        #emit ADD.C      28
        #emit PUSH.pri
        #emit LOAD.S.pri pointer
        #emit SCTRL      6
        #emit CONST.alt  0xFFFFFFFF
        #emit STOR.S.pri ret
        #emit JEQ        hooks_do_hooks_call_no_als
    
}
    
//#emit STACK      12
    // Do ALS just in case (YSI no longer uses this though now).
    
P:2("Hooks_OnPlayerConnect end 2: %d %d"ret_:Bit_GetBit(Bit:gs_ALS_:ALS_OnPlayerConnect));
    
HOOK_RETURN<PlayerConnect>
}
#if defined _ALS_OnPlayerConnect
    #undef OnPlayerConnect
#else
    #define _ALS_OnPlayerConnect
#endif
#define OnPlayerConnect S@@_OnPlayerConnect
ALS_FORWARD<PlayerConnect
Exact error lines:

PHP код:
496     HOOK_CALL<GameModeInit>
541     HOOK_RETURN<GameModeInit>
567     HOOK_CALL<GameModeExit>
608     HOOK_RETURN<GameModeExit>
754     HOOK_CALL<FilterScriptInit>
795     HOOK_RETURN<FilterScriptInit>
817     HOOK_CALL<FilterScriptExit>
858     HOOK_RETURN<FilterScriptExit
Reply


Messages In This Thread
Error problems strike again ;/ - by weedxd - 14.04.2014, 17:00
Re: Error problems strike again ;/ - by Bingo - 14.04.2014, 17:02
Re: Error problems strike again ;/ - by weedxd - 14.04.2014, 17:03
Re: Error problems strike again ;/ - by weedxd - 14.04.2014, 17:11
Re: Error problems strike again ;/ - by GloomY - 14.04.2014, 17:34
Re: Error problems strike again ;/ - by weedxd - 14.04.2014, 17:46
Re: Error problems strike again ;/ - by GloomY - 14.04.2014, 18:17
Re: Error problems strike again ;/ - by weedxd - 14.04.2014, 18:23
Re: Error problems strike again ;/ - by GloomY - 14.04.2014, 18:27
Re: Error problems strike again ;/ - by weedxd - 14.04.2014, 18:31

Forum Jump:


Users browsing this thread: 3 Guest(s)