#include #include "codsrc/clientscript/cscr_vm.hpp" namespace game { //custom made don't replace VariableValue __usercall GetEntityFieldValue@(int offset@, int entnum@, scriptInstance_t inst, int classnum, int clientNum) VariableValue GetEntityFieldValue/*@*/(int offset_, int entnum, scriptInstance_t inst, int classnum, int clientNum, void* call_addr) { VariableValue answer; VariableUnion u; VariableType typ; __asm { push clientNum; push classnum; push inst; mov ecx, entnum; mov eax, offset_; call call_addr; mov u, eax; mov typ, edx; add esp, 0xC; } answer.u = u; answer.type = typ; return answer; } void Scr_Init(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov eax, a1; call call_addr; } } void Scr_Shutdown(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov edi, a1; call call_addr; } } void Scr_ErrorInternal(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov eax, a1; call call_addr; } } void Scr_ClearOutParams(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov edi, a1; call call_addr; } } unsigned int GetDummyObject/*@*/(scriptInstance_t a1/*@*/, void* call_addr) { unsigned int answer; __asm { mov edi, a1; call call_addr; mov answer, eax; } return answer; } unsigned int GetDummyFieldValue/*@*/(scriptInstance_t a1/*@*/, void* call_addr) { unsigned int answer; __asm { mov eax, a1; call call_addr; mov answer, eax; } return answer; } void VM_CancelNotifyInternal(scriptInstance_t inst/*@*/, unsigned int notifyListOwnerId/*@*/, unsigned int startLocalId, unsigned int notifyListId, unsigned int notifyNameListId, unsigned int stringValue, void* call_addr) { __asm { push stringValue; push notifyNameListId; push notifyListId; push startLocalId; mov ecx, inst; mov eax, notifyListOwnerId; call call_addr; add esp, 0x10; } } void VM_CancelNotify(scriptInstance_t a1/*@*/, unsigned int a2, unsigned int a3, void* call_addr) { __asm { push a3; push a2; mov edi, a1; call call_addr; add esp, 0x8; } } VariableStackBuffer * VM_ArchiveStack/*@*/(scriptInstance_t inst/*@*/, void* call_addr) { VariableStackBuffer * answer; __asm { mov eax, inst; call call_addr; mov answer, eax; } return answer; } int Scr_AddLocalVars/*@*/(scriptInstance_t a1/*@*/, unsigned int a2/*@*/, void* call_addr) { int answer; __asm { mov eax, a1; mov edx, a2; call call_addr; mov answer, eax; } return answer; } void VM_TerminateStack(scriptInstance_t inst/*@*/, unsigned int endLocalId, unsigned int startLocalId, VariableStackBuffer * name, void* call_addr) { __asm { push name; push startLocalId; push endLocalId; mov esi, inst; call call_addr; add esp, 0xC; } } void VM_TrimStack(scriptInstance_t a1/*@*/, unsigned int parentId, VariableStackBuffer * a3, int fromEndon, void* call_addr) { __asm { push fromEndon; push a3; push parentId; mov eax, a1; call call_addr; add esp, 0xC; } } void Scr_TerminateRunningThread(scriptInstance_t a1/*@*/, unsigned int a2, void* call_addr) { __asm { push a2; mov edx, a1; call call_addr; add esp, 0x4; } } void Scr_TerminateWaitThread(scriptInstance_t a1/*@*/, unsigned int a2, unsigned int a3, void* call_addr) { __asm { push a3; push a2; mov eax, a1; call call_addr; add esp, 0x8; } } void Scr_CancelWaittill(scriptInstance_t inst/*@*/, unsigned int startLocalId/*@*/, void* call_addr) { __asm { mov ecx, inst; mov eax, startLocalId; call call_addr; } } void Scr_TerminateWaittillThread(scriptInstance_t a1/*@*/, unsigned int a2, unsigned int a3, void* call_addr) { __asm { push a3; push a2; mov eax, a1; call call_addr; add esp, 0x8; } } void Scr_TerminateThread(unsigned int a2/*@*/, scriptInstance_t a3/*@*/, void* call_addr) { __asm { mov edi, a2; mov esi, a3; call call_addr; } } void VM_Notify(scriptInstance_t inst/*@*/, int notifyListOwnerId, unsigned int stringValue, VariableValue * top, void* call_addr) { __asm { push top; push stringValue; push notifyListOwnerId; mov eax, inst; call call_addr; add esp, 0xC; } } void Scr_NotifyNum_Internal(scriptInstance_t inst/*@*/, int entNum, int entClass, unsigned int notifStr, int numParams, void* call_addr) { __asm { push numParams; push notifStr; push entClass; push entNum; mov eax, inst; call call_addr; add esp, 0x10; } } void Scr_CancelNotifyList(unsigned int notifyListOwnerId/*@*/, scriptInstance_t inst, void* call_addr) { __asm { push inst; mov eax, notifyListOwnerId; call call_addr; add esp, 0x4; } } void VM_TerminateTime(scriptInstance_t a1/*@*/, unsigned int parentId, void* call_addr) { __asm { push parentId; mov eax, a1; call call_addr; add esp, 0x4; } } void VM_Resume(scriptInstance_t inst/*@*/, unsigned int timeId, void* call_addr) { __asm { push timeId; mov eax, inst; call call_addr; add esp, 0x4; } } unsigned short Scr_ExecThread/*@*/(scriptInstance_t inst/*@*/, unsigned int handle, unsigned int paramCount, void* call_addr) { unsigned __int16 answer; __asm { push paramCount; push handle; mov edi, inst; call call_addr; mov answer, ax; add esp, 0x8; } return answer; } unsigned short Scr_ExecEntThreadNum/*@*/(scriptInstance_t inst/*@*/, int entNum, unsigned int handle, int numParams, unsigned int clientNum, void* call_addr) { unsigned __int16 answer; __asm { push clientNum; push numParams; push handle; push entNum; mov edi, inst; call call_addr; mov answer, ax; add esp, 0x10; } return answer; } void Scr_AddExecThread(scriptInstance_t a1/*@*/, unsigned int handle, void* call_addr) { __asm { push handle; mov edi, a1; call call_addr; add esp, 0x4; } } void VM_SetTime(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov eax, a1; call call_addr; } } void Scr_InitSystem(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov edi, a1; call call_addr; } } int Scr_GetInt/*@*/(scriptInstance_t inst/*@*/, unsigned int index/*@*/, void* call_addr) { int answer; __asm { mov eax, inst; mov ecx, index; call call_addr; mov answer, eax; } return answer; } scr_anim_s Scr_GetAnim/*@*/(unsigned int index/*@*/, XAnimTree_s * a2/*@*/, void* call_addr) { scr_anim_s answer; __asm { mov eax, index; mov ecx, a2; call call_addr; mov answer, eax; } return answer; } float Scr_GetFloat/*@*/(scriptInstance_t inst/*@*/, unsigned int index/*@*/, void* call_addr) { float answer; __asm { mov eax, inst; mov ecx, index; call call_addr; movss answer, xmm0; } return answer; } unsigned int Scr_GetConstString/*@*/(scriptInstance_t inst/*@*/, unsigned int index, void* call_addr) { unsigned int answer; __asm { push index; mov eax, inst; call call_addr; mov answer, eax; add esp, 0x4; } return answer; } unsigned int Scr_GetConstLowercaseString/*@*/(scriptInstance_t inst/*@*/, unsigned int index, void* call_addr) { unsigned int answer; __asm { push index; mov ecx, inst; call call_addr; mov answer, eax; add esp, 0x4; } return answer; } const char * Scr_GetString/*@*/(unsigned int index/*@*/, scriptInstance_t inst/*@*/, void* call_addr) { const char * answer; __asm { mov eax, index; mov esi, inst; call call_addr; mov answer, eax; } return answer; } unsigned int Scr_GetConstStringIncludeNull/*@*/(scriptInstance_t a1/*@*/, void* call_addr) { unsigned int answer; __asm { mov eax, a1; call call_addr; mov answer, eax; } return answer; } char * Scr_GetDebugString/*@*/(scriptInstance_t a1/*@*/, unsigned int a2/*@*/, void* call_addr) { char * answer; __asm { mov eax, a1; mov ecx, a2; call call_addr; mov answer, eax; } return answer; } unsigned int Scr_GetConstIString/*@*/(unsigned int index/*@*/, void* call_addr) { unsigned int answer; __asm { mov eax, index; call call_addr; mov answer, eax; } return answer; } void Scr_GetVector(scriptInstance_t inst/*@*/, float * value/*@*/, unsigned int index, void* call_addr) { __asm { push index; mov eax, inst; mov ecx, value; call call_addr; add esp, 0x4; } } scr_entref_t * Scr_GetEntityRef/*@*/(scriptInstance_t inst/*@*/, scr_entref_t * retstr, unsigned int index, void* call_addr) { scr_entref_t * answer; __asm { push index; push retstr; mov eax, inst; call call_addr; mov answer, eax; add esp, 0x8; } return answer; } VariableUnion Scr_GetObject/*@*/(scriptInstance_t a1/*@*/, void* call_addr) { VariableUnion answer; __asm { mov eax, a1; call call_addr; mov answer, eax; } return answer; } VariableType Scr_GetType/*@*/(scriptInstance_t inst/*@*/, unsigned int index/*@*/, void* call_addr) { VariableType answer; __asm { mov eax, inst; mov ecx, index; call call_addr; mov answer, eax; } return answer; } const char * Scr_GetTypeName/*@*/(scriptInstance_t a1/*@*/, void* call_addr) { char * answer; __asm { mov eax, a1; call call_addr; mov answer, eax; } return answer; } VariableType Scr_GetPointerType/*@*/(scriptInstance_t a1/*@*/, unsigned int a2/*@*/, void* call_addr) { VariableType answer; __asm { mov eax, a1; mov ecx, a2; call call_addr; mov answer, eax; } return answer; } void Scr_AddInt(scriptInstance_t inst/*@*/, int value, void* call_addr) { __asm { push value; mov eax, inst; call call_addr; add esp, 0x4; } } void Scr_AddFloat(scriptInstance_t inst/*@*/, float value, void* call_addr) { __asm { push value; mov eax, inst; call call_addr; add esp, 0x4; } } void Scr_AddUndefined(scriptInstance_t inst/*@*/, void* call_addr) { __asm { mov eax, inst; call call_addr; } } void Scr_AddObject(scriptInstance_t inst/*@*/, unsigned int entid/*@*/, void* call_addr) { __asm { mov eax, inst; mov esi, entid; call call_addr; } } void Scr_AddString(scriptInstance_t inst/*@*/, const char * string, void* call_addr) { __asm { push string; mov eax, inst; call call_addr; add esp, 0x4; } } void Scr_AddIString(char * string/*@*/, void* call_addr) { __asm { mov esi, string; call call_addr; } } void Scr_AddConstString(scriptInstance_t inst/*@*/, unsigned int id/*@*/, void* call_addr) { __asm { mov eax, inst; mov esi, id; call call_addr; } } void Scr_AddVector(scriptInstance_t inst/*@*/, float * value, void* call_addr) { __asm { push value; mov eax, inst; call call_addr; add esp, 0x4; } } void Scr_MakeArray(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov eax, a1; call call_addr; } } void Scr_AddArrayStringIndexed(unsigned int id/*@*/, scriptInstance_t inst/*@*/, void* call_addr) { __asm { mov ecx, id; mov edi, inst; call call_addr; } } void Scr_Error(const char * err/*@*/, scriptInstance_t inst/*@*/, int is_terminal, void* call_addr) { __asm { push is_terminal; mov ecx, err; mov edi, inst; call call_addr; add esp, 0x4; } } void Scr_TerminalError(scriptInstance_t a1/*@*/, const char * Source, void* call_addr) { __asm { push Source; mov eax, a1; call call_addr; add esp, 0x4; } } void Scr_ParamError(int a1/*@*/, scriptInstance_t a2/*@*/, const char * Source, void* call_addr) { __asm { push Source; mov eax, a1; mov ecx, a2; call call_addr; add esp, 0x4; } } void Scr_ObjectError(scriptInstance_t a1/*@*/, const char * a2/*@*/, void* call_addr) { __asm { mov eax, a1; mov ecx, a2; call call_addr; } } bool SetEntityFieldValue/*@*/(scriptInstance_t inst/*@*/, int offset_/*@*/, int entnum/*@*/, classNum_e classnum, int clientNum, VariableValue * value, void* call_addr) { bool answer; __asm { push value; push clientNum; push classnum; mov edi, inst; mov eax, offset_; mov ecx, entnum; call call_addr; mov answer, al; add esp, 0xC; } return answer; } void Scr_SetStructField(unsigned int a1/*@*/, unsigned int a2/*@*/, scriptInstance_t a3, void* call_addr) { __asm { push a3; mov eax, a1; mov ecx, a2; call call_addr; add esp, 0x4; } } void Scr_IncTime(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov eax, a1; call call_addr; } } void Scr_RunCurrentThreads(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov esi, a1; call call_addr; } } void Scr_ResetTimeout(scriptInstance_t a1/*@*/, void* call_addr) { __asm { mov eax, a1; call call_addr; } } void SetVariableFieldValue(scriptInstance_t inst, unsigned int id, VariableValue* value) { codsrc::SetVariableFieldValue(inst, id, value); } void SetNewVariableValue(scriptInstance_t inst, unsigned int id, VariableValue* value) { codsrc::SetNewVariableValue(inst, id, value); } void Scr_ClearErrorMessage(scriptInstance_t inst) { codsrc::Scr_ClearErrorMessage(inst); } void VM_Shutdown(scriptInstance_t inst) { codsrc::VM_Shutdown(inst); } void Scr_ShutdownVariables(scriptInstance_t inst) { codsrc::Scr_ShutdownVariables(inst); } void ClearVariableValue(scriptInstance_t inst, unsigned int id) { codsrc::ClearVariableValue(inst, id); } unsigned int Scr_GetThreadNotifyName(scriptInstance_t inst, unsigned int startLocalId) { return codsrc::Scr_GetThreadNotifyName(inst, startLocalId); } void Scr_RemoveThreadNotifyName(scriptInstance_t inst, unsigned int startLocalId) { codsrc::Scr_RemoveThreadNotifyName(inst, startLocalId); } unsigned int GetArraySize(scriptInstance_t inst, unsigned int id) { return codsrc::GetArraySize(inst, id); } void IncInParam(scriptInstance_t inst) { codsrc::IncInParam(inst); } unsigned int GetParentLocalId(scriptInstance_t inst, unsigned int threadId) { return codsrc::GetParentLocalId(inst, threadId); } void Scr_ClearWaitTime(scriptInstance_t inst, unsigned int startLocalId) { codsrc::Scr_ClearWaitTime(inst, startLocalId); } void Scr_SetThreadWaitTime(scriptInstance_t inst, unsigned int startLocalId, unsigned int waitTime) { codsrc::Scr_SetThreadWaitTime(inst, startLocalId, waitTime); } void Scr_SetThreadNotifyName(scriptInstance_t inst, unsigned int startLocalId, unsigned int stringValue) { codsrc::Scr_SetThreadNotifyName(inst, startLocalId, stringValue); } void Scr_DebugTerminateThread(scriptInstance_t inst, int topThread) { codsrc::Scr_DebugTerminateThread(inst, topThread); } unsigned int Scr_GetThreadWaitTime(scriptInstance_t inst, unsigned int startLocalId) { return codsrc::Scr_GetThreadWaitTime(inst, startLocalId); } const char* Scr_GetStackThreadPos(scriptInstance_t inst, unsigned int endLocalId, VariableStackBuffer* stackValue, bool killThread) { return codsrc::Scr_GetStackThreadPos(inst, endLocalId, stackValue, killThread); } unsigned int Scr_GetSelf(scriptInstance_t inst, unsigned int threadId) { return codsrc::Scr_GetSelf(inst, threadId); } unsigned int GetVariableKeyObject(scriptInstance_t inst, unsigned int id) { return codsrc::GetVariableKeyObject(inst, id); } int MT_Realloc(scriptInstance_t inst, int oldNumBytes, int newNumbytes) { return codsrc::MT_Realloc(inst, oldNumBytes, newNumbytes); } void CScr_GetObjectField(classNum_e classnum, int entnum, int clientNum, int offset) { codsrc::CScr_GetObjectField(classnum, entnum, clientNum, offset); } int CScr_SetObjectField(classNum_e classnum, int entnum, int clientNum, int offset) { return codsrc::CScr_SetObjectField(classnum, entnum, clientNum, offset); } void Scr_SetErrorMessage(scriptInstance_t inst, const char* error) { codsrc::Scr_SetErrorMessage(inst, error); } bool Scr_IsStackClear(scriptInstance_t inst) { return codsrc::Scr_IsStackClear(inst); } void SL_CheckExists(scriptInstance_t inst, unsigned int stringValue) { codsrc::SL_CheckExists(inst, stringValue); } const char* Scr_ReadCodePos(scriptInstance_t inst, const char** pos) { return codsrc::Scr_ReadCodePos(inst, pos); } unsigned int Scr_ReadUnsignedInt(scriptInstance_t inst, const char** pos) { return codsrc::Scr_ReadUnsignedInt(inst, pos); } unsigned short Scr_ReadUnsignedShort(scriptInstance_t inst, const char** pos) { return codsrc::Scr_ReadUnsignedShort(inst, pos); } unsigned char Scr_ReadUnsignedByte(scriptInstance_t inst, const char** pos) { return codsrc::Scr_ReadUnsignedByte(inst, pos); } float Scr_ReadFloat(scriptInstance_t inst, const char** pos) { return codsrc::Scr_ReadFloat(inst, pos); } const float* Scr_ReadVector(scriptInstance_t inst, const char** pos) { return codsrc::Scr_ReadVector(inst, pos); } BOOL IsFieldObject(scriptInstance_t inst, unsigned int id) { return codsrc::IsFieldObject(inst, id); } void RemoveVariableValue(scriptInstance_t inst, unsigned int parentId, unsigned int index) { codsrc::RemoveVariableValue(inst, parentId, index); } VariableStackBuffer* GetRefVariableStackBuffer(scriptInstance_t inst, int id) { return codsrc::GetRefVariableStackBuffer(inst, id); } unsigned int GetNewVariableIndexReverseInternal(scriptInstance_t inst, unsigned int parentId, unsigned int name) { return codsrc::GetNewVariableIndexReverseInternal(inst, parentId, name); } unsigned int GetNewObjectVariableReverse(scriptInstance_t inst, unsigned int parentId, unsigned int id) { return codsrc::GetNewObjectVariableReverse(inst, parentId, id); } unsigned int Scr_GetLocalVar(scriptInstance_t inst, int pos) { return codsrc::Scr_GetLocalVar(inst, pos); } void Scr_EvalBoolNot(scriptInstance_t inst, VariableValue* value) { codsrc::Scr_EvalBoolNot(inst, value); } unsigned int GetInternalVariableIndex(scriptInstance_t inst, unsigned int unsignedValue) { return codsrc::GetInternalVariableIndex(inst, unsignedValue); } const char* Scr_ReadData(scriptInstance_t inst, const char** pos, unsigned int count) { return codsrc::Scr_ReadData(inst, pos, count); } unsigned int Scr_GetNumParam(game::scriptInstance_t inst) { return codsrc::Scr_GetNumParam(inst); } }