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));
}
Exemple #4
0
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;
}