void EditorHookWindow::OnButtonHit(void) { char text[256]; GetWindowText(m_editText, text, sizeof(text)); char comment[256]; GetWindowText(m_editText2, comment, sizeof(comment)); UInt32 id; if(sscanf_s(text, "%x", &id) == 1) { void * ptr = LookupFormByID(id); sprintf_s(text, sizeof(text), "%08X = %08X (%s)", id, (UInt32)ptr, GetObjectClassName(ptr)); _MESSAGE("%s", text); MessageBox(m_window, text, "receive bacon", MB_OK); static int idx = 0; char fileName[256]; if(comment[0]) sprintf_s(fileName, sizeof(fileName), "mem%08X_%08X_%08X_%s", idx, id, (UInt32)ptr, comment); else sprintf_s(fileName, sizeof(fileName), "mem%08X_%08X_%08X", idx, id, (UInt32)ptr); idx++; IFileStream dst; if(dst.Create(fileName)) dst.WriteBuf(ptr, 0x200); } else { MessageBox(m_window, "couldn't read text box", "receive bacon", MB_OK); } };
TESObjectREFR* TESHitEvent::_getProjectileRef(void* obj) { //tried forever to find a flag that indicates these types in contactData... but it's impossible, same flags for invalid or other types... const char* rttiName = GetObjectClassName(obj); if (strcmp(rttiName, "ArrowProjectile@@") == 0) return DYNAMIC_CAST(obj, ArrowProjectile, TESObjectREFR); if (strcmp(rttiName, "MissileProjectile@@") == 0) return DYNAMIC_CAST(obj, MissileProjectile, TESObjectREFR); return NULL; }
void PrintItemType(TESForm * form) { Console_Print("%s (%s)", GetFullName(form), GetObjectClassName(form)); }
bool Cmd_NX_IsInList_Execute(COMMAND_ARGS) { BGSListForm *pFormList = NULL; // the formlist TESForm *pItem = NULL; // item we are looking for TESForm *pListItem = NULL; // current item from list TESForm *pBaseItem = NULL; // item we are looking for TESForm *pBaseListItem = NULL; // current item from list // need to handle creatures in a special fashion TESCreature *pCreature = NULL; TESCreature *pLCreature = NULL; TESCreature *pCreatureB = NULL; TESCreature *pLCreatureB = NULL; UInt32 n = 0; // do not do recursion int i; _MESSAGE("START IsInList"); *result = 0; ExtractArgs(EXTRACT_ARGS, &pFormList, &pItem, &n); if (pFormList && pItem) { pBaseItem = pItem->TryGetREFRParent(); pCreature = DYNAMIC_CAST(pBaseItem, TESForm, TESCreature); _MESSAGE(" Item %s (%x) p %s (%x)", GetObjectClassName(pItem), pItem->refID, GetObjectClassName(pBaseItem), pBaseItem->refID); if (NULL != pCreature) { _MESSAGE(" Item is a creature (%s)", pCreature->fullName.name); } for (i = 0; i < pFormList->Count(); i++) { pListItem = pFormList->GetNthForm(i); if (pListItem) { if (NULL != pCreature) { pCreatureB = GetRootCreature(pCreature); pLCreature = DYNAMIC_CAST(pListItem, TESForm, TESCreature); if (NULL != pLCreature) { pLCreatureB = GetRootCreature(pLCreature); if (pCreature->refID == pLCreature->refID) { *result = 1; break; } else if (pCreatureB->refID == pLCreature->refID) { *result = 2; break; } else if (pCreature->refID == pLCreatureB->refID) { *result = 3; break; } else if (pCreatureB->refID == pLCreatureB->refID) { *result = 4; break; } } } else { pBaseListItem = pListItem->TryGetREFRParent(); if (pItem->refID == pListItem->refID) { *result = 1; break; } else if (pBaseItem->refID == pListItem->refID) { *result = 2; break; } else if (pItem->refID == pBaseListItem->refID) { *result = 3; break; } else if (pBaseItem->refID == pBaseListItem->refID) { *result = 4; break; } } } } _MESSAGE(" IsInList Result %1.0f", *result); } else { if (!pFormList) { _MESSAGE(" invalid formlist arg"); } if (!pItem) { _MESSAGE(" invalid item arg"); } } _MESSAGE("END IsInList"); return true; }
static inline void EncodeFloat( const SendProp *pProp, float fVal, bf_write *pOut, int objectID ) { // Check for special flags like SPROP_COORD, SPROP_NOSCALE, and SPROP_NORMAL. if( EncodeSpecialFloat( pProp, fVal, pOut ) ) { return; } unsigned long ulVal; if( fVal < pProp->m_fLowValue ) { // clamp < 0 ulVal = 0; if(!(pProp->GetFlags() & SPROP_ROUNDUP)) { DataTable_Warning("(class %s): Out-of-range value (%f) in SendPropFloat '%s', clamping.\n", GetObjectClassName( objectID ), fVal, pProp->m_pVarName ); } } else if( fVal > pProp->m_fHighValue ) { // clamp > 1 ulVal = ((1 << pProp->m_nBits) - 1); if(!(pProp->GetFlags() & SPROP_ROUNDDOWN)) { DataTable_Warning("%s: Out-of-range value (%f) in SendPropFloat '%s', clamping.\n", GetObjectClassName( objectID ), fVal, pProp->m_pVarName ); } } else { float fRangeVal = (fVal - pProp->m_fLowValue) * pProp->m_fHighLowMul; ulVal = RoundFloatToUnsignedLong( fRangeVal ); } pOut->WriteUBitLong(ulVal, pProp->m_nBits); }
bool TESHitEvent::_isActorMagicCaster(void* obj) { return (strcmp(GetObjectClassName(obj), "ActorMagicCaster@@") == 0) ? true : false; }