mirror of
https://github.com/JezuzLizard/T4SP-Server-Plugin.git
synced 2025-07-04 18:21:50 +00:00
Add compiler decomp
This commit is contained in:
@ -262,4 +262,51 @@ namespace game
|
||||
void EmitInclude(scriptInstance_t inst, sval_u val, void* call_addr = EmitInclude_ADDR());
|
||||
inline void* ScriptCompile_ADDR() { return CALL_ADDR(0x0, 0x688E70); }
|
||||
void ScriptCompile(scriptInstance_t inst, sval_u val, unsigned int filePosId, unsigned int fileCountId, unsigned int scriptId, PrecacheEntry* entries, int entriesCount, void* call_addr = ScriptCompile_ADDR());
|
||||
|
||||
void EmitFloat(scriptInstance_t inst, float value);
|
||||
void EmitCanonicalStringConst(scriptInstance_t inst, unsigned int stringValue);
|
||||
int Scr_FindLocalVar(scr_block_s* block, int startIndex, unsigned int name);
|
||||
void Scr_CheckLocalVarsCount(int localVarsCount);
|
||||
void EmitGetUndefined(scriptInstance_t inst, sval_u sourcePos);
|
||||
void EmitPrimitiveExpression(scriptInstance_t inst, sval_u expr, scr_block_s* block);
|
||||
void Scr_EmitAnimation(scriptInstance_t inst, char* pos, unsigned int animName, unsigned int sourcePos);
|
||||
void EmitEvalArray(scriptInstance_t inst, sval_u sourcePos, sval_u indexSourcePos);
|
||||
void EmitEvalArrayRef(scriptInstance_t inst, sval_u sourcePos, sval_u indexSourcePos);
|
||||
unsigned int Scr_GetBuiltin(scriptInstance_t inst, sval_u func_name);
|
||||
int Scr_GetUncacheType(int type);
|
||||
int Scr_GetCacheType(int type);
|
||||
BuiltinFunction Scr_GetFunction(const char** pName, int* type);
|
||||
BuiltinFunction GetFunction(scriptInstance_t inst, const char** pName, int* type);
|
||||
BuiltinMethod GetMethod(scriptInstance_t inst, const char** pName, int* type);
|
||||
unsigned int GetVariableName(scriptInstance_t inst, unsigned int id);
|
||||
int GetExpressionCount(sval_u exprlist);
|
||||
sval_u* GetSingleParameter(sval_u exprlist);
|
||||
void EmitExpressionFieldObject(scriptInstance_t inst, sval_u expr, sval_u sourcePos, scr_block_s* block);
|
||||
void EvalInteger(int value, sval_u sourcePos, VariableCompileValue* constValue);
|
||||
void EvalFloat(float value, sval_u sourcePos, VariableCompileValue* constValue);
|
||||
void EvalString(unsigned int value, sval_u sourcePos, VariableCompileValue* constValue);
|
||||
void EvalIString(unsigned int value, sval_u sourcePos, VariableCompileValue* constValue);
|
||||
void EvalUndefined(sval_u sourcePos, VariableCompileValue* constValue);
|
||||
void Scr_PopValue(scriptInstance_t inst);
|
||||
void EmitSetVariableField(scriptInstance_t inst, sval_u sourcePos);
|
||||
void EmitFieldVariableRef(scriptInstance_t inst, sval_u expr, sval_u field, sval_u sourcePos, scr_block_s* block);
|
||||
void Scr_CalcLocalVarsArrayPrimitiveExpressionRef(sval_u expr, scr_block_s* block);
|
||||
BOOL IsUndefinedPrimitiveExpression(sval_u expr);
|
||||
bool IsUndefinedExpression(sval_u expr);
|
||||
void Scr_CopyBlock(scr_block_s* from, scr_block_s** to);
|
||||
void Scr_CheckMaxSwitchCases(int count);
|
||||
void Scr_CalcLocalVarsSafeSetVariableField(sval_u expr, sval_u sourcePos, scr_block_s* block);
|
||||
void EmitFormalWaittillParameterListRefInternal(scriptInstance_t inst, sval_u* node, scr_block_s* block);
|
||||
void EmitDefaultStatement(scriptInstance_t inst, sval_u sourcePos);
|
||||
char Scr_IsLastStatement(scriptInstance_t inst, sval_u* node);
|
||||
void EmitEndStatement(scriptInstance_t inst, sval_u sourcePos, scr_block_s* block);
|
||||
void EmitProfBeginStatement(scriptInstance_t inst, sval_u profileName, sval_u sourcePos);
|
||||
void EmitProfEndStatement(scriptInstance_t inst, sval_u profileName, sval_u sourcePos);
|
||||
void Scr_CalcLocalVarsIncStatement(sval_u expr, scr_block_s *block);
|
||||
void Scr_CalcLocalVarsWaittillStatement(sval_u exprlist, scr_block_s* block);
|
||||
void EmitFormalParameterListInternal(scriptInstance_t inst, sval_u* node, scr_block_s* block);
|
||||
unsigned int SpecifyThreadPosition(scriptInstance_t inst, unsigned int posId, unsigned int name, unsigned int sourcePos, int type);
|
||||
void Scr_CalcLocalVarsFormalParameterList(sval_u exprlist, scr_block_s* block);
|
||||
void SetThreadPosition(scriptInstance_t inst, unsigned int posId);
|
||||
void EmitIncludeList(scriptInstance_t inst, sval_u val);
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
#include <stdinc.hpp>
|
||||
//#include "codsrc/clientscript/cscr_compiler.hpp"
|
||||
#include "codsrc/clientscript/cscr_compiler.hpp"
|
||||
|
||||
namespace game
|
||||
{
|
||||
@ -1480,4 +1480,233 @@ namespace game
|
||||
}
|
||||
}
|
||||
|
||||
void EmitFloat(scriptInstance_t inst, float value)
|
||||
{
|
||||
codsrc::EmitFloat(inst, value);
|
||||
}
|
||||
|
||||
void EmitCanonicalStringConst(scriptInstance_t inst, unsigned int stringValue)
|
||||
{
|
||||
codsrc::EmitCanonicalStringConst(inst, stringValue);
|
||||
}
|
||||
|
||||
int Scr_FindLocalVar(scr_block_s* block, int startIndex, unsigned int name)
|
||||
{
|
||||
return codsrc::Scr_FindLocalVar(block, startIndex, name);
|
||||
}
|
||||
|
||||
void Scr_CheckLocalVarsCount(int localVarsCount)
|
||||
{
|
||||
codsrc::Scr_CheckLocalVarsCount(localVarsCount);
|
||||
}
|
||||
|
||||
void EmitGetUndefined(scriptInstance_t inst, sval_u sourcePos)
|
||||
{
|
||||
codsrc::EmitGetUndefined(inst, sourcePos);
|
||||
}
|
||||
|
||||
void EmitPrimitiveExpression(scriptInstance_t inst, sval_u expr, scr_block_s* block)
|
||||
{
|
||||
codsrc::EmitPrimitiveExpression(inst, expr, block);
|
||||
}
|
||||
|
||||
void Scr_EmitAnimation(scriptInstance_t inst, char* pos, unsigned int animName, unsigned int sourcePos)
|
||||
{
|
||||
codsrc::Scr_EmitAnimation(inst, pos, animName, sourcePos);
|
||||
}
|
||||
|
||||
void EmitEvalArray(scriptInstance_t inst, sval_u sourcePos, sval_u indexSourcePos)
|
||||
{
|
||||
codsrc::EmitEvalArray(inst, sourcePos, indexSourcePos);
|
||||
}
|
||||
|
||||
void EmitEvalArrayRef(scriptInstance_t inst, sval_u sourcePos, sval_u indexSourcePos)
|
||||
{
|
||||
codsrc::EmitEvalArrayRef(inst, sourcePos, indexSourcePos);
|
||||
}
|
||||
|
||||
unsigned int Scr_GetBuiltin(scriptInstance_t inst, sval_u func_name)
|
||||
{
|
||||
return codsrc::Scr_GetBuiltin(inst, func_name);
|
||||
}
|
||||
|
||||
int Scr_GetUncacheType(int type)
|
||||
{
|
||||
return codsrc::Scr_GetUncacheType(type);
|
||||
}
|
||||
|
||||
int Scr_GetCacheType(int type)
|
||||
{
|
||||
return codsrc::Scr_GetCacheType(type);
|
||||
}
|
||||
|
||||
BuiltinFunction Scr_GetFunction(const char** pName, int* type)
|
||||
{
|
||||
return codsrc::Scr_GetFunction(pName, type);
|
||||
}
|
||||
|
||||
BuiltinFunction GetFunction(scriptInstance_t inst, const char** pName, int* type)
|
||||
{
|
||||
return codsrc::GetFunction(inst, pName, type);
|
||||
}
|
||||
|
||||
BuiltinMethod GetMethod(scriptInstance_t inst, const char** pName, int* type)
|
||||
{
|
||||
return codsrc::GetMethod(inst, pName, type);
|
||||
}
|
||||
|
||||
unsigned int GetVariableName(scriptInstance_t inst, unsigned int id)
|
||||
{
|
||||
return codsrc::GetVariableName(inst, id);
|
||||
}
|
||||
|
||||
int GetExpressionCount(sval_u exprlist)
|
||||
{
|
||||
return codsrc::GetExpressionCount(exprlist);
|
||||
}
|
||||
|
||||
sval_u* GetSingleParameter(sval_u exprlist)
|
||||
{
|
||||
return codsrc::GetSingleParameter(exprlist);
|
||||
}
|
||||
|
||||
void EmitExpressionFieldObject(scriptInstance_t inst, sval_u expr, sval_u sourcePos, scr_block_s* block)
|
||||
{
|
||||
codsrc::EmitExpressionFieldObject(inst, expr, sourcePos, block);
|
||||
}
|
||||
|
||||
void EvalInteger(int value, sval_u sourcePos, VariableCompileValue* constValue)
|
||||
{
|
||||
codsrc::EvalInteger(value, sourcePos, constValue);
|
||||
}
|
||||
|
||||
void EvalFloat(float value, sval_u sourcePos, VariableCompileValue* constValue)
|
||||
{
|
||||
codsrc::EvalFloat(value, sourcePos, constValue);
|
||||
}
|
||||
|
||||
void EvalString(unsigned int value, sval_u sourcePos, VariableCompileValue* constValue)
|
||||
{
|
||||
codsrc::EvalString(value, sourcePos, constValue);
|
||||
}
|
||||
|
||||
void EvalIString(unsigned int value, sval_u sourcePos, VariableCompileValue* constValue)
|
||||
{
|
||||
codsrc::EvalIString(value, sourcePos, constValue);
|
||||
}
|
||||
|
||||
void EvalUndefined(sval_u sourcePos, VariableCompileValue* constValue)
|
||||
{
|
||||
codsrc::EvalUndefined(sourcePos, constValue);
|
||||
}
|
||||
|
||||
void Scr_PopValue(scriptInstance_t inst)
|
||||
{
|
||||
codsrc::Scr_PopValue(inst);
|
||||
}
|
||||
|
||||
void EmitSetVariableField(scriptInstance_t inst, sval_u sourcePos)
|
||||
{
|
||||
codsrc::EmitSetVariableField(inst, sourcePos);
|
||||
}
|
||||
|
||||
void EmitFieldVariableRef(scriptInstance_t inst, sval_u expr, sval_u field, sval_u sourcePos, scr_block_s* block)
|
||||
{
|
||||
codsrc::EmitFieldVariableRef(inst, expr, field, sourcePos, block);
|
||||
}
|
||||
|
||||
void Scr_CalcLocalVarsArrayPrimitiveExpressionRef(sval_u expr, scr_block_s* block)
|
||||
{
|
||||
codsrc::Scr_CalcLocalVarsArrayPrimitiveExpressionRef(expr, block);
|
||||
}
|
||||
|
||||
BOOL IsUndefinedPrimitiveExpression(sval_u expr)
|
||||
{
|
||||
return codsrc::IsUndefinedPrimitiveExpression(expr);
|
||||
}
|
||||
|
||||
bool IsUndefinedExpression(sval_u expr)
|
||||
{
|
||||
return codsrc::IsUndefinedExpression(expr);
|
||||
}
|
||||
|
||||
void Scr_CopyBlock(scr_block_s* from, scr_block_s** to)
|
||||
{
|
||||
codsrc::Scr_CopyBlock(from, to);
|
||||
}
|
||||
|
||||
void Scr_CheckMaxSwitchCases(int count)
|
||||
{
|
||||
codsrc::Scr_CheckMaxSwitchCases(count);
|
||||
}
|
||||
|
||||
void Scr_CalcLocalVarsSafeSetVariableField(sval_u expr, sval_u sourcePos, scr_block_s* block)
|
||||
{
|
||||
codsrc::Scr_CalcLocalVarsSafeSetVariableField(expr, sourcePos, block);
|
||||
}
|
||||
|
||||
void EmitFormalWaittillParameterListRefInternal(scriptInstance_t inst, sval_u* node, scr_block_s* block)
|
||||
{
|
||||
codsrc::EmitFormalWaittillParameterListRefInternal(inst, node, block);
|
||||
}
|
||||
|
||||
void EmitDefaultStatement(scriptInstance_t inst, sval_u sourcePos)
|
||||
{
|
||||
codsrc::EmitDefaultStatement(inst, sourcePos);
|
||||
}
|
||||
|
||||
char Scr_IsLastStatement(scriptInstance_t inst, sval_u* node)
|
||||
{
|
||||
return codsrc::Scr_IsLastStatement(inst, node);
|
||||
}
|
||||
|
||||
void EmitEndStatement(scriptInstance_t inst, sval_u sourcePos, scr_block_s* block)
|
||||
{
|
||||
codsrc::EmitEndStatement(inst, sourcePos, block);
|
||||
}
|
||||
|
||||
void EmitProfBeginStatement(scriptInstance_t inst, sval_u profileName, sval_u sourcePos)
|
||||
{
|
||||
codsrc::EmitProfBeginStatement(inst, profileName, sourcePos);
|
||||
}
|
||||
|
||||
void EmitProfEndStatement(scriptInstance_t inst, sval_u profileName, sval_u sourcePos)
|
||||
{
|
||||
codsrc::EmitProfEndStatement(inst, profileName, sourcePos);
|
||||
}
|
||||
|
||||
void Scr_CalcLocalVarsIncStatement(sval_u expr, scr_block_s* block)
|
||||
{
|
||||
codsrc::Scr_CalcLocalVarsIncStatement(expr, block);
|
||||
}
|
||||
|
||||
void Scr_CalcLocalVarsWaittillStatement(sval_u exprlist, scr_block_s* block)
|
||||
{
|
||||
codsrc::Scr_CalcLocalVarsWaittillStatement(exprlist, block);
|
||||
}
|
||||
|
||||
void EmitFormalParameterListInternal(scriptInstance_t inst, sval_u* node, scr_block_s* block)
|
||||
{
|
||||
codsrc::EmitFormalParameterListInternal(inst, node, block);
|
||||
}
|
||||
|
||||
unsigned int SpecifyThreadPosition(scriptInstance_t inst, unsigned int posId, unsigned int name, unsigned int sourcePos, int type)
|
||||
{
|
||||
return codsrc::SpecifyThreadPosition(inst, posId, name, sourcePos, type);
|
||||
}
|
||||
|
||||
void Scr_CalcLocalVarsFormalParameterList(sval_u exprlist, scr_block_s* block)
|
||||
{
|
||||
codsrc::Scr_CalcLocalVarsFormalParameterList(exprlist, block);
|
||||
}
|
||||
|
||||
void SetThreadPosition(scriptInstance_t inst, unsigned int posId)
|
||||
{
|
||||
codsrc::SetThreadPosition(inst, posId);
|
||||
}
|
||||
|
||||
void EmitIncludeList(scriptInstance_t inst, sval_u val)
|
||||
{
|
||||
codsrc::EmitIncludeList(inst, val);
|
||||
}
|
||||
}
|
||||
|
@ -203,6 +203,22 @@ namespace game
|
||||
return answer;
|
||||
}
|
||||
|
||||
// BuiltinMethod __usercall Scr_GetMethod@<eax>(int *type@<edi>, const char **pName@<esi>)
|
||||
BuiltinMethod Scr_GetMethod(int* type_, const char** pName, void* call_addr)
|
||||
{
|
||||
BuiltinMethod answer;
|
||||
|
||||
__asm
|
||||
{
|
||||
mov edi, type_;
|
||||
mov esi, pName;
|
||||
call call_addr;
|
||||
mov answer, eax;
|
||||
}
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
void Cmd_AddCommand(const char* name, void (__cdecl *function)())
|
||||
{
|
||||
cmd_function_s* newCmd = utils::memory::allocate<cmd_function_s>();
|
||||
|
@ -36,6 +36,11 @@ namespace game
|
||||
WEAK symbol<void* (void* Block, size_t Size)>_realloc{ 0x0, 0x7AECAC };
|
||||
WEAK symbol<void* (size_t Size)>Z_TryMalloc{ 0x0, 0x7AAD36 };
|
||||
|
||||
WEAK symbol<BuiltinFunction(const char** pName)>Sentient_GetFunction{ 0x0, 0x5676F0 };
|
||||
WEAK symbol<BuiltinFunction(const char** pName, int* type_1)>BuiltIn_GetFunction{ 0x0, 0x52F0B0 };
|
||||
WEAK symbol<BuiltinFunction(const char** pName, int* type)>CScr_GetFunction{ 0x0, 0x66EA30 };
|
||||
WEAK symbol<BuiltinMethod(const char** pName, int* type)>CScr_GetMethod{ 0x0, 0x671110 };
|
||||
|
||||
inline void* I_strncmp_ADDR() { return CALL_ADDR(0x0, 0x5F6A40); }
|
||||
int I_strncmp(const char* str1, const char* str2, int len, void* call_addr = I_strncmp_ADDR());
|
||||
|
||||
@ -67,6 +72,9 @@ namespace game
|
||||
cmd_function_s* Cmd_FindCommand(const char* cmdName, void* call_addr = Cmd_FindCommand_ADDR());
|
||||
void Cmd_AddCommand(const char* name, void(__cdecl* function)());
|
||||
|
||||
inline void* Scr_GetMethod_ADDR() { return CALL_ADDR(0x0, 0x530630); }
|
||||
BuiltinMethod Scr_GetMethod(int* type_, const char** pName, void* call_addr = Scr_GetMethod_ADDR());
|
||||
|
||||
void Sys_EnterCriticalSection(CriticalSection critSect);
|
||||
void Sys_LeaveCriticalSection(CriticalSection critSect);
|
||||
|
||||
|
Reference in New Issue
Block a user