All pastes #627955 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-07-20 16:49 UTC
rendered paste body

// change this:
int32_t LuaScriptInterface::luaDoMoveCreature(lua_State *L)
{
   //doMoveCreature(cid, direction)
   uint32_t direction = popNumber(L);
   uint32_t cid = popNumber(L);
   
   switch(direction){
       case NORTH:
       case SOUTH:
       case WEST:
       case EAST:
       case SOUTHWEST:
       case NORTHWEST:
       case NORTHEAST:
       case SOUTHEAST:
           break;
       default:
           reportErrorFunc("No valid direction");
           lua_pushnumber(L, LUA_ERROR);
           return 1;
   }
   
   ScriptEnviroment* env = getScriptEnv();
   
   Creature* creature = env->getCreatureByUID(cid);
   if(creature){
       ReturnValue ret = g_game.internalMoveCreature(creature, (Direction)direction, true);
       lua_pushnumber(L, ret);
   }
   else{
       reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND));
       lua_pushnumber(L, LUA_ERROR);
   }
   return 1;
}

// to this:

int32_t LuaScriptInterface::luaDoMoveCreature(lua_State *L)
{
   //doMoveCreature(cid, direction, force)
   uint32_t force = popNumber(L);
   uint32_t direction = popNumber(L);
   uint32_t cid = popNumber(L);
   
   switch(direction){
       case NORTH:
       case SOUTH:
       case WEST:
       case EAST:
       case SOUTHWEST:
       case NORTHWEST:
       case NORTHEAST:
       case SOUTHEAST:
           break;
       default:
           reportErrorFunc("No valid direction");
           lua_pushnumber(L, LUA_ERROR);
           return 1;
   }
   
   ScriptEnviroment* env = getScriptEnv();
   
   Creature* creature = env->getCreatureByUID(cid);
   if(creature){
       ReturnValue ret = g_game.internalMoveCreature(creature, (Direction)direction, (force != 0));
       lua_pushnumber(L, ret);
   }
   else{
       reportErrorFunc(getErrorDesc(LUA_ERROR_CREATURE_NOT_FOUND));
       lua_pushnumber(L, LUA_ERROR);
   }
   return 1;
}

/*
 new sintax: 

doMoveCreature(cid, direction, force)

if force = 0 then the function will not move into walls and etc.

*/