Пример #1
0
void Player::MemSet(int offset, double value, OPTYPE operation, FIELDTYPE ftype) {
	char* dbg =  "PLAYER MEM SET";
	if(ftype == FT_INVALID || offset > (0x184 * 99) || offset < 0)
		return;
	PlayerMOB* pPlayer = Player::Get(1);
	void* ptr = ((&(*(byte*)pPlayer)) + offset);
	MemAssign((int)ptr, value, operation, ftype);
}
Пример #2
0
// MEM SET
void NPC::MemSet(int ID, int offset, double value, OPTYPE operation, FIELDTYPE ftype) {
    char* dbg =  "MemSetDbg";
    if(ftype == FT_INVALID || offset > 0x15C)
        return;
    bool anyID = (ID == -1 ? true : false);
    NPCMOB* thisnpc;

    for(int i = 0; i < GM_NPCS_COUNT; i++) {
        thisnpc = Get(i);
        if(anyID || thisnpc->id == ID) {
            void* ptr = ((&(*(byte*)thisnpc)) + offset);
            MemAssign((int)ptr, value, operation, ftype);
        }
    }//for
}
Пример #3
0
void LuaProxy::mem(int mem, LuaProxy::L_FIELDTYPE ftype, const luabind::object &value, lua_State *L)
{
    void* ptr = ((&(*(byte*)mem)));

    switch (ftype) {
    case LFT_BYTE:
    case LFT_WORD:
    case LFT_DWORD:
    case LFT_FLOAT:
    case LFT_DFLOAT:
    {
        boost::optional<double> opt_obj = luabind::object_cast_nothrow<double>(value);
        if (opt_obj == boost::none) {
            luaL_error(L, "Cannot interpret field as number");
            break;
        }
        MemAssign((int)ptr, *opt_obj, OP_Assign, (FIELDTYPE)ftype);
        break;
    }
    case LFT_STRING:
    {
        LuaHelper::assignVB6StrPtr((VB6StrPtr*)ptr, value, L);
        break;
    }
    case LFT_BOOL:
    {
        boost::optional<bool> opt_obj = luabind::object_cast_nothrow<bool>(value);
        if (opt_obj == boost::none) {
            luaL_error(L, "Cannot interpret field as boolean");
            break;
        }
        void* ptr = ((&(*(byte*)mem)));
        *((short*)ptr) = COMBOOL(*opt_obj);
        break;
    }
    default:
        break;
    }
}